Skip to content

playout — feature queue ​

Repo: playout-studio/playout · Path: /Users/Shared/moltis/repos/playout Audit branch: develop Stack: Vue 3, FormKit, @playout/ui, Tailwind, vue-i18n (en/fr/no, CI-enforced parity)

✅ Inventory verified against develop @ 998e706d on 2026-07-30. The earlier detached-HEAD build (11f029bb) has been reconciled: settings-keybinds was added (#425) and callback was folded into the Sign in row.

Derived from src/router/routes.ts. Redirect-only and layout-shell routes are excluded (overlay, settings). Ordered by user impact: auth and live-operation paths first, admin and settings later.

#FeatureRoutesPatternsStatus
1Sign inlogin, callbackauthentication/login, authentication/social-login, forms/passworddrafted
2Password resetforgot-password, reset-password — ⚠️ not on developauthentication/password-reset, forms/passwordfiled (PR #437, unmerged)
3Admin registrationregister-adminauthentication/signup, forms/code-confirmationdrafted
4Tenant chooserchoose-tenantdata-display/list-view, forms/selection-inputdrafted
5Event listeventsdata-display/list-view, data-display/card-grid, forms/search-fielddrafted
6Event dashboarddashboarddata-display/dashboard, data-display/statisticsdrafted
7Lower third overlaylowerthirdforms/autocomplete, data-display/table, content-management/tooltipdrafted
8Songs overlaysongsforms/search-field, data-display/list-view, content-management/drag-and-dropdrafted
9Bible overlaybibleforms/selection-input, advanced/search-resultsdrafted
10Queue overlayqueuecontent-management/drag-and-drop, data-display/list-viewdrafted
11Custom overlay componentscustomforms/rich-text-editor, forms/color-picker, advanced/wizarddrafted
12Screensscreens, live-screen, production-screendata-display/card-grid, user-feedback/empty-statesdrafted
13Streamingstreaming, streaming-connections, streaming-modulesforms/toggle, user-feedback/progress-indicator, user-feedback/notificationdrafted
14Custom songscustom-songsdata-display/table, forms/rich-text-editordrafted
15Sharing linkssettings-sharing, claim-sharing-linksocial/share-dialog, authentication/account-settingsdrafted
16Tenant settingssettings-general, settings-locations, settings-overlayauthentication/account-settings, forms/form-validationdrafted
17Keyboard shortcutssettings-keybindsforms/form-validation, user-feedback/notification, content-management/tooltipdrafted
18Admin managementsettings-adminsdata-display/table, authentication/user-profiledrafted
19Audit logauditdata-display/timeline, data-display/table, data-display/filter-paneldrafted
20Profileprofileauthentication/user-profile, authentication/account-settingsdrafted
21Platform adminadmin, admin-tenant, overview, languages, tickets, mails, syncs, personsdata-display/table, data-display/dashboard, data-display/filter-paneldrafted
22Error and empty statesnot-found, unauthorized, helpuser-feedback/empty-states, navigation/linkdrafted

21 features to audit (Password reset is done — see the 2026-07-30 audit and the four commits on atlas/issue-436).

Inventory-level observations ​

  • CONTENT-01 passes CI but fails in reality. pnpm check:locales verifies key parity, not content parity. The tenant-chooser audit found fr.yml and no.yml carrying the keys with verbatim English values marked # TODO: translate — 298 of 639 keys repo-wide. So a French or Norwegian user sees English for roughly half the app while CI stays green. Treat this as one project-level CONTENT-01 finding for playout, raised once — not per feature. Individual feature drafts should note untranslated keys they touch, but must not each re-file the architectural problem. This is the playout analogue of the members / tt-time-tracker no-i18n situation described in BASELINE.md's CONTENT-01 section.

Changes since the 11f029bb inventory ​

  • Added #17 Keyboard shortcuts. #425 introduced /:tenant/settings/keybinds (src/views/Tenant/Settings/Keybinds.vue, 174 lines). Split out of Tenant settings rather than folded in: shortcut capture, conflict detection and reset-to-default draw on a different set of patterns than the settings forms.
  • callback added to #1 Sign in. src/views/Authentication/Callback.vue handles the OAuth code exchange and has its own visible error state, so it is not a shell route. Note on sight: its two error strings and the "Back to login" label are hardcoded English in a repo with CI-enforced i18n parity — verify during the Sign in audit.
  • Pattern slugs corrected and verified (2026-07-30). Seven rows cited slugs that do not exist in the corpus and would have failed get_pattern at audit time: feedback (no such pattern — rows 17 and 22), and the unprefixed empty-states, progress-indicator, notification and filter-panel (rows 12, 13, 19, 21, 22). Row 15's advanced/share-dialog was in the wrong category — the real slug is social/share-dialog. All 31 distinct slugs in this queue now validate against the 92-pattern corpus returned by list_patterns, as do the other three project queues.
  • Slug convention confirmed: the short category/name form used throughout these queues resolves correctly — get_pattern accepts user-feedback/empty-states and returns patterns/user-feedback/empty-states. The patterns/ prefix is not needed.
  • Views touched on develop since the old inventory, relevant to queued rows: Admin/Overview.vue, Admin/TenantDashboard.vue (#21), Overlay/Bible.vue (#9), Overlay/Queue.vue (#10), Tenant/CustomSongs.vue (#14), Settings/General.vue and Settings/Overlay.vue (#16).

Suggested next: #1 Sign in — adjacent to the reset work, shares the same files, and several baseline rules were already applied to Login.vue during that change, so it should be quick and will confirm the rubric is calibrated.