Skip to content

merge duplicate listings across indexes, unify key hints and toasts - #11

Merged
melqtx merged 1 commit into
mainfrom
ui-ux-access
Jul 28, 2026
Merged

merge duplicate listings across indexes, unify key hints and toasts#11
melqtx merged 1 commit into
mainfrom
ui-ux-access

Conversation

@melqtx

@melqtx melqtx commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Two bodies of work that were in flight together on this branch.

Cross-index merge (new)

The same torrent listed on three indexes was three rows, each magnet carrying a different partial tracker set. Now it is one row, and the magnet queued announces to the union of every tracker those listings knew about — finding peers no single listing would have led to.

  • internal/provider/merge.goResult.InfoHash() (hex, base32, uppercase), Merge, MergeAll, Result.Trackers(). Trackers union; seeders/leechers take the higher scrape; Trusted ORs; size fills from whichever index knew it; AlsoOn records the others.
  • Non-tracker magnet params (webseeds, peer hints) deliberately stay with the keeper — inheriting one index's idea of where to fetch bytes is a bigger trust step than widening who we ask about peers.
  • MergeAll picks its keeper by a total order independent of arrival, so a concurrent fan-out is reproducible. The tracker union is sorted for the same reason.
  • Results with only a detail page keep their own row: no magnet, no infohash to compare, and resolving every page would cost a round trip each.
  • The better-scoring listing keeps the title, since that is what the tag parser, group label, and ranker read.
  • Autopilot merges before ranking, so a release on four indexes competes for one slot instead of four.

UI: rows show yts+2, the status line counts folded listings, and the graph detail panel reports the tracker total.

UI/UX pass

Single keymap table feeding both the footer strip and the ? card so they cannot drift, unified toast system, and preview/downloads refinements.

Notes

  • Queuing no longer jumps to downloads; ^d jumps there from anywhere instead, including mid-typing (it is a chord so it needs none of the guards a letter does). Costs emacs delete-forward in text fields; the delete key still works.
  • Full suite, go vet, and -race green. New tests cover the merge primitive, streaming ingest, determinism under shuffled input, and the keybind across every screen.

@melqtx
melqtx merged commit 1ea2155 into main Jul 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant