Athenaeum v0.2.0-beta.6
Beta 6 is the largest beta in the v0.2.0 series so far. Two big things land — astrometric plate solving and a background folder monitoring service — and the duplicates workflow is rebuilt around a configurable picker rule chain with live coverage feedback and an opt-in byte-by-byte deep-verify before anything is moved to the Black Hole.
What’s new
Section titled “What’s new”Plate solving
Section titled “Plate solving”Frames can now be solved astrometrically against the embedded star catalog and have their World Coordinate System (WCS) information stored alongside the rest of the metadata. This unlocks downstream features that depend on knowing exactly where every pixel of a frame lies on the sky — annotation overlays, accurate frame set merging across nights, and future mosaic grouping.
Solving is wired into the desktop app via a new context and hook layer, so any view that needs WCS can request it without re-running the solver. Plate solving uses the rustafits v1.0.0 backend, which switched its affine fitter to an SVD-based solution for numerical stability.
See the new Plate solving guide for details.
Background folder monitoring
Section titled “Background folder monitoring”A long-running monitoring service now watches every registered scan root for new and changed files and updates the catalog automatically — no more clicking Rescan every time you come back from a session.
The service runs in the background, picks up new captures as soon as they appear, and surfaces progress events through the same global progress bar used by other long-running operations. You can cancel a monitoring scan in flight if you need the catalog to settle before doing something else.
See the new Background folder monitoring guide for details.
Duplicates: configurable picker rule chain
Section titled “Duplicates: configurable picker rule chain”The duplicates workflow has been rebuilt around an ordered, configurable rule chain instead of the old fixed master-root rule. Each rule decides which copy of a duplicate group to keep; rules earlier in the chain win, and a rule abstains for any group it would empty so the chain falls through safely instead of marking every copy for deletion.
The default chain is:
- Master root — keep the copy under your designated master scan root.
- Path contains — mark any file whose path contains one of your configured substrings (e.g.
Backup,_copy,(1)).
Two more rules are available from the panel’s Add rule menu:
- Oldest mtime — keep the file with the oldest modification time.
- Shortest path — keep the file at the shortest filesystem path.
You can re-order rules, remove rules, and add the same rule twice with different parameters.
Path-contains rule
Section titled “Path-contains rule”The new path-contains rule is the workhorse of the chain. You give it a list of substrings and it marks any file whose path matches one of them. There’s a case-sensitive toggle, and matched substrings are underlined inside the file path in the duplicates list so you can see exactly why a file was picked.
Useful patterns:
Backup,BACKUP,_bak— for backup directories_copy,(1),(2)— for OS-generated copiesTrash,Recycle.Bin— for staged-for-deletion folders
Per-rule live coverage
Section titled “Per-rule live coverage”The picking rules panel now shows “N groups picked” next to each rule, and “N / total groups picked” in the header. As you add, remove, or reorder rules, the counts update live so you can see exactly what each rule does in your data — no need to scroll the duplicates list to find out whether a rule actually fires.
Deep verify before deletion
Section titled “Deep verify before deletion”Hash collisions are astronomically rare with xxHash XXH3 but not impossible — and accidentally deleting an irreplaceable frame because of a hash collision is the sort of thing that happens once and never gets forgotten. Deep verify is an opt-in byte-by-byte comparison that runs before any destructive operation. Files that don’t match byte-for-byte are auto-removed from the deletion plan, and clean groups become safe to move.
The same check is exposed as both a Tauri command and an HTTP route, so the web/Docker deployment gets it too.
Changes
Section titled “Changes”Frame set clustering algorithm
Section titled “Frame set clustering algorithm”Frame set clustering switched from DBSCAN to a seed-and-grow single-link algorithm that recomputes the cluster center as the spherical mean after every addition. The practical effect: dithered or mosaicked fields now collapse into a single frame set even when the dither span exceeds the threshold, because the cluster center moves as it grows.
The algorithm is deterministic — frames are sorted by RA → Dec → DATE-OBS before clustering, so re-running auto-generation on the same data produces the same sets every time. Distance is computed great-circle, so RA wraparound near 0h/24h and high-declination compression both work correctly.
If you previously needed a wider threshold to catch your dithered targets, you’ll likely want to tighten it now.
Grouping settings keys
Section titled “Grouping settings keys”The grouping settings have been split into a value + unit pair:
grouping.threshold.value— numeric value (default3.0)grouping.threshold.unit— unit (deg,arcmin, orarcsec; defaultdeg)
The Settings UI exposes both fields directly so most users won’t need to touch the underlying keys. If you scripted the database directly, update accordingly.
Scanner UTF-8 path hardening
Section titled “Scanner UTF-8 path hardening”The directory scanner now rejects paths that are not valid UTF-8 with a clear error instead of silently passing them through Path::display() and producing replacement-character corrupted strings that broke later path-based catalog lookups. If you have files with non-UTF-8 names somewhere in your tree, the scanner will tell you which paths it skipped instead of pretending everything went fine.
Duplicates UI: flatter layout
Section titled “Duplicates UI: flatter layout”Group cards now share a single bordered container with row dividers (instead of every card being its own bordered box), and the Picking Rules panel uses an accent-tinted background so it visually separates from the groups list. The page reads cleaner when many groups are open.
rustafits v1.0.0
Section titled “rustafits v1.0.0”The rustafits dependency — the FITS/XISF rendering and analysis engine — graduated to v1.0.0. The headline change is SVD-based affine fitting in the plate solver for numerical stability when stars have nearly-degenerate matches.
Bug fixes
Section titled “Bug fixes”- Fixed a focus race in the duplicates path-contains config where toggling the case-sensitive checkbox while the input was focused could silently drop a typed pattern (cross-element blur/click race overwriting state with stale closure values).
- Removed the noisy “Nothing marked” pill that rendered on every untouched duplicate group, and clarified the deletion-status badges so the screen reads cleanly when many groups are expanded.
Get the build
Section titled “Get the build”Beta builds are available for Windows, macOS (Apple Silicon + Intel), and Linux. Head to the Download page and grab the platform you need.
The “beta” symlink at https://artfrom.space/builds/beta/ always points to the latest beta build; use the version-specific link https://artfrom.space/builds/v0.2.0-beta.6/ if you want this exact release pinned.