feat(gui): Leftovers, Similar Photos, and Network panes (conductor discovery follow-ups)#273
Merged
Conversation
…scovery) Three new read-only tool panes copying the post-#266 Duplicates pattern — Analyze-style toolbar, the conductorMissing/idle/scanning/error/clean state ladder, BurrowConductor.capture off-main with a scanGen supersede token, OperationCenter begin/end, NSLocalizedString throughout, Brand styling: * Leftovers (`burrow orphans <dir>`): folder picker + Caches/Logs quick chips; hits grouped into confidence tiers (medium > low > weak) with evidence on hover and Reveal in Finder. Pure OrphansReport.parse. * Similar Photos (`burrow photos <dir>`, 600 s timeout — dHash is slow): clusters as cards, members with async ImageIO thumbnails (bounded NSCache, never a main-thread decode), 100-group render cap. Pure PhotosReport.parse. * Network (`burrow net`): refresh-driven ranked table of nettop byte counters (name / pid / in / out / total via Fmt.bytes), metric_note surfaced when a degraded source swaps bytes for connection counts; auto-samples on first activation (PortsView's isActive idiom). Pure NetReport.parse. Tool gains orphans/photos/net cases (olive/orchid/indigo accents, dark tint tops, taglines); navOrder slots the discovery pair after Duplicates and Network beside Ports. No exhaustive Tool switches exist outside Tool.swift, so the enum growth is additive. Tests first: OrphansModelTests / PhotosModelTests / NetModelTests cover the spine, tier/size/total ordering, loose-field degradation, Int64 precision, and garbage-to-nil for every parser. Local Debug build + build-for-testing both verified green.
caezium
added a commit
that referenced
this pull request
Jul 13, 2026
Version bump (macOS project.yml, Windows appxmanifest + csproj) + RELEASES.md. Carries everything since v0.10.0 (a8074d2): the Leftovers/Similar Photos/Network panes (#273) plus fclones bundling (#278), HEIC surfacing (#283), the HUD popover + lazy-mount fixes (#274/#275/#277), and the Finder-launch PATH fix (#279).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Three new GUI panes surfacing the conductor's discovery commands, all read-only v1 (the only action anywhere is Reveal in Finder):
orphansburrow orphans <dir>0xB7BE5Aphotosburrow photos <dir>(600 s timeout — dHash is slow)0xD57BC4netburrow net0x6E8FE0Pattern provenance
Copied from the post-#266 Duplicates pane (
DupesView.swift/DupesModel.swift), the canonical conductor-tool surface:conductorMissing/ idle / scanning / error / clean / results.BurrowConductor.captureoff the main thread with a monotonicscanGensupersede token;OperationCenterbegin/end around every scan.JSONSerializationparsers (OrphansReport.parse,PhotosReport.parse,NetReport.parse) — loose everywhere except the spine, Int64-exact byte counts, garbage → nil never a crash.NSLocalizedStringon every user string,Brand.*styling,Toolaccents/tints/taglines.isActiveidiom (cheap, no timers); manual refresh after.Toolgains three cases; verified no exhaustiveToolswitches exist outsideTool.swift, so the growth is additive. Nav order: the discovery pair (Leftovers, Similar Photos) follows Duplicates; Network sits beside Ports.Tests (written first)
OrphansModelTests/PhotosModelTests/NetModelTests, in the DupesModelTests style: canned CLI-shaped reports, spine reads, ordering (confidence tier / cluster size / total bytes), loose-field degradation, Int64 precision above Int32, garbage-is-nil. Shapes verified against the vendoredburrow-clisource (orphan.rs::OrphanHit,photos.rs::Group— note: groups serialize as{paths: [...]}objects,net.rs::ProcNetunderby_total_bytes).Local verification:
macos/scripts/build.sh Debugandxcodebuild build-for-testingboth green (the suite itself runs in CI — no PTY locally).Notes / deviations
arrow.up.arrow.down, notnetwork— Ports already ownsnetworkand two identical rail icons would be indistinguishable.CGImageSourceCreateThumbnailAtIndex(max 64 px, boundedNSCache) — deliberately notNSImage(contentsOfFile:), which full-decodes and would hang on large originals.Follow-ups (out of scope here)
default_selectedand the CLI's volatile-roots policy; surfaceinventory_sources; an "add scan root" multi-root mode.heiffeature; recursive scan option.--limitcontrol (CLI default caps at 15 rows).