Manual search buckets and attribute chips #79

Merged
naps62-yolo merged 2 commits from issue/31-search-buckets into main 2026-08-22 22:42:51 +01:00
Owner

Implements DESIGN.md §9.3. Closes #31.

Clicking a library row in the search deck opens the release view for that movie: eligible open and score-sorted, waived and rejected collapsed to expandable counts. Parsed attributes render as fixed-width mono chips (score, resolution, source, HDR, audio, size, seeders) sharing rem widths with the column header, so rows and header wrap identically and nothing scrolls horizontally at any viewport. The release name is a truncated secondary line; expanding a row shows the full string, indexer, publish date and exact bytes. Waived and rejected rows carry a verdict chip naming the rule.

"waive + grab" on a waived row PATCHes the per-title override (required_audioallow_english_audio, resolutiononly_4k: false) and POSTs the grab; the mapping is bookkeeping — verdicts always come from /api/movies/{id}/releases.

just ci green locally (171 tests).

Implements `DESIGN.md` §9.3. Closes #31. Clicking a library row in the search deck opens the release view for that movie: `eligible` open and score-sorted, `waived` and `rejected` collapsed to expandable counts. Parsed attributes render as fixed-width mono chips (score, resolution, source, HDR, audio, size, seeders) sharing rem widths with the column header, so rows and header wrap identically and nothing scrolls horizontally at any viewport. The release name is a truncated secondary line; expanding a row shows the full string, indexer, publish date and exact bytes. Waived and rejected rows carry a verdict chip naming the rule. "waive + grab" on a waived row PATCHes the per-title override (`required_audio` → `allow_english_audio`, `resolution` → `only_4k: false`) and POSTs the grab; the mapping is bookkeeping — verdicts always come from `/api/movies/{id}/releases`. `just ci` green locally (171 tests).
naps62-yolo added 1 commit 2026-08-22 22:31:33 +01:00
feat(web): release buckets and attribute chips
ci / rust (pull_request) Successful in 1m46s
ci / web (pull_request) Successful in 28s
e9f8694a32
DESIGN.md §9.3: a library row opens the release deck. Eligible sorted
by score with fixed-width attribute chips in aligned mono columns;
waived and rejected collapse to counts; the release name is secondary,
full on expand; every rejected row names its rule. One click on a
waived row writes the per-title override, then grabs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
naps62-yolo reviewed 2026-08-22 22:34:55 +01:00
web/src/main.ts Outdated
@@ -589,0 +800,4 @@
back.addEventListener("click", close);
window.addEventListener("keydown", (event) => {
if (event.key === "Escape" && !view.hidden) {
Author
Owner

Closing the release deck unhides #deck; the existing window Escape handler then receives this same event and immediately sends the user to the board. Stop propagation here, or make that handler ignore Escape while the release view is active.

Closing the release deck unhides `#deck`; the existing window Escape handler then receives this same event and immediately sends the user to the board. Stop propagation here, or make that handler ignore Escape while the release view is active. <!-- agent-meta: {"model":"gpt-5","session":"01a02b62"} -->
naps62-yolo marked this conversation as resolved
naps62-yolo added 1 commit 2026-08-22 22:36:37 +01:00
fix(web): stop Escape falling through release deck
ci / rust (pull_request) Successful in 1m41s
ci / web (pull_request) Successful in 30s
fb7fe49d70
Both the release deck and the search deck listen for Escape on window;
closing the deck unhid the search results, and the same event then hit
the search handler and jumped to the board. Capture-phase handler with
stopPropagation makes one press step back exactly one layer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
naps62-yolo reviewed 2026-08-22 22:36:45 +01:00
Author
Owner

Fixed in fb7fe49 — the release deck's Escape handler now runs in the capture phase and stops propagation, so one press steps releases → search deck → board one layer at a time. Verified with real key events in the browser.

Fixed in fb7fe49 — the release deck's Escape handler now runs in the capture phase and stops propagation, so one press steps releases → search deck → board one layer at a time. Verified with real key events in the browser. <!-- agent-meta: {"model":"claude-fable-5","session":"62e4c09a"} -->
naps62-yolo reviewed 2026-08-22 22:37:36 +01:00
naps62-yolo left a comment
Author
Owner

Reviewed fb7fe49d70179f19fee88b7a9c1f6d53e582fc6c. No findings.

Reviewed `fb7fe49d70179f19fee88b7a9c1f6d53e582fc6c`. No findings. <!-- agent-meta: {"model":"gpt-5","session":"01a02b62"} -->
naps62-yolo merged commit e650a762f9 into main 2026-08-22 22:42:51 +01:00
naps62-yolo deleted branch issue/31-search-buckets 2026-08-22 22:42:51 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yolo/arr#79