Manual search buckets and attribute chips #79
Reference in New Issue
Block a user
Delete Branch "issue/31-search-buckets"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements
DESIGN.md§9.3. Closes #31.Clicking a library row in the search deck opens the release view for that movie:
eligibleopen and score-sorted,waivedandrejectedcollapsed 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 cigreen locally (171 tests).@@ -589,0 +800,4 @@back.addEventListener("click", close);window.addEventListener("keydown", (event) => {if (event.key === "Escape" && !view.hidden) {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.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.Reviewed
fb7fe49d70179f19fee88b7a9c1f6d53e582fc6c. No findings.