Add the subtitle section to settings #204

Closed
opened 2026-08-24 21:28:40 +01:00 by naps62-yolo · 1 comment
Owner

Add the subtitle section to /settings, rendering the database half of #198:
the wanted language set, which providers are enabled and in what order, the
selected translation engine restricted to what the running binary has compiled
in, the daily allowances per provider and per translator, and the
remote-command timeout.

Secrets are not shown and not editable here — they are config and environment
per §10, and the API does not expose them at all.

The subtitle upstream lamps from #200 live in the same settings page's signal
chain section (§9.7), not in this section.

area/web: through the impeccable skill.

Depends on: #198

Add the subtitle section to `/settings`, rendering the database half of #198: the wanted language set, which providers are enabled and in what order, the selected translation engine restricted to what the running binary has compiled in, the daily allowances per provider and per translator, and the remote-command timeout. Secrets are not shown and not editable here — they are config and environment per §10, and the API does not expose them at all. The subtitle upstream lamps from #200 live in the same settings page's signal chain section (§9.7), not in this section. `area/web`: through the `impeccable` skill. Depends on: #198
naps62-yolo added this to the Subtitles milestone 2026-08-24 21:28:40 +01:00
naps62-yolo added the difficulty/easyarea/webphase/9-subtitlestype/feature labels 2026-08-24 21:28:40 +01:00
naps62-yolo added a new dependency 2026-08-24 21:29:28 +01:00
Author
Owner

Rendered the database half of subtitle config (#198) in /settings: a new SUBTITLES section with wanted languages, translation engine (dropdown restricted to available_engines, disabled with an explanatory note when no translate-* feature is compiled in), remote-command timeout, and a providers list — checkbox to enable, a daily-budget number, and up/down controls whose list order becomes providers_enabled's priority order. Translator daily budgets get one field per compiled engine. No secrets are shown or editable, per §10. Went through the impeccable skill first; reused the existing settings vocabulary (form-grid/field/chip/control-quiet) rather than inventing new components, and used up/down buttons instead of drag-and-drop for the reorder affordance since it's standard and keyboard-accessible. Verified in a live daemon via agent-browser: load, edit, save, reload round-trips correctly.

Branch: subtitles/204-subs-settings-ui
just ci: passed (685 tests, biome, tsc, token check all clean).

Findings

  • web/index.html had a pre-existing duplicate id="label-subtitles" — the missing-subtitles queue section (#202) already used that id. Because aria-labelledby resolves to document order, the settings SUBTITLES section's accessible name silently read "missing subtitles" until I renamed mine to label-settings-subtitles. Worth a quick audit for other duplicate ids introduced across the milestone's parallel branches once they land on the same tree.
Rendered the database half of subtitle config (#198) in `/settings`: a new SUBTITLES section with wanted languages, translation engine (dropdown restricted to `available_engines`, disabled with an explanatory note when no `translate-*` feature is compiled in), remote-command timeout, and a providers list — checkbox to enable, a daily-budget number, and up/down controls whose list order becomes `providers_enabled`'s priority order. Translator daily budgets get one field per compiled engine. No secrets are shown or editable, per §10. Went through the `impeccable` skill first; reused the existing settings vocabulary (`form-grid`/`field`/`chip`/`control-quiet`) rather than inventing new components, and used up/down buttons instead of drag-and-drop for the reorder affordance since it's standard and keyboard-accessible. Verified in a live daemon via `agent-browser`: load, edit, save, reload round-trips correctly. Branch: `subtitles/204-subs-settings-ui` `just ci`: passed (685 tests, biome, tsc, token check all clean). ## Findings - `web/index.html` had a pre-existing duplicate `id="label-subtitles"` — the missing-subtitles queue section (#202) already used that id. Because `aria-labelledby` resolves to document order, the settings SUBTITLES section's accessible name silently read "missing subtitles" until I renamed mine to `label-settings-subtitles`. Worth a quick audit for other duplicate ids introduced across the milestone's parallel branches once they land on the same tree.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#204