feat(web): plainer words for grab, blocked, deck

Three words the operator reads change; nothing underneath does. Waivers
are still written, recorded and served under their existing names, the
`blocked` column and flag keep theirs, and the release deck keeps its
name in DESIGN.md §9.3 and in the code.

- `waive + grab` reads `force grab`, and its accessible name says which
  rule the click relaxes. The `waived` bucket reads `below policy`, and
  so does the verdict chip on its rows — an operator can act on "below
  policy" and cannot act on the name the record keeps.
- A waived import already said what was relaxed for two rules; `size`
  joins them and the fallback names the rule rather than badging it
  `waived`.
- `blocked` reads `no targeted search`, everywhere the flag surfaces.
  §6.3 gives it one effect and a bare toggle hid it: the accessible name
  carries the RSS half at rest, and a note under the controls spells it
  out while the flag is on.
- The season and episode controls are already the #230 search icon; only
  their labels still said "deck". They now say what the click does.

`just ci` passes through the gate: 509 tests, biome, tsc, tokens.
Verified in a real browser (agent-browser) on the library, movie detail,
series detail, the episode release view, queues and settings, at 1440
and 390 wide — no horizontal scroll at either.

Refs #232
This commit is contained in:
Miguel Palhas
2026-08-25 11:43:14 +01:00
parent cfa0eaa77d
commit a6720f4c06
4 changed files with 81 additions and 27 deletions
+6 -3
View File
@@ -252,7 +252,7 @@
id="movie-blocked"
aria-pressed="false"
>
blocked
no targeted search
</button>
<label class="movie-root-field">
<span class="field-label readout dim" id="movie-root-label">root</span>
@@ -278,6 +278,9 @@
</svg>
</button>
</div>
<p class="control-note readout dim" id="movie-blocked-note" hidden>
targeted search is off for this title. RSS still matches it, so a release can still arrive.
</p>
<div class="remove-panel" id="remove-panel" hidden></div>
</section>
@@ -314,7 +317,7 @@
<section class="deck-group" id="bucket-waived" hidden aria-labelledby="label-waived">
<header class="deck-head bucket-head">
<h3 class="deck-label" id="label-waived">waived</h3>
<h3 class="deck-label" id="label-waived">below policy</h3>
<button
type="button"
class="bucket-toggle readout"
@@ -455,7 +458,7 @@
</button>
</header>
<p class="queue-note readout dim">
a policy edit rescores search decks immediately — open any title's releases to check it.
a policy edit rescores every title's releases immediately — open any title to check it.
</p>
<ul class="deck-rows" id="rows-policies"></ul>
</section>