Skip to content

feat(huds): pick a broadcast HUD from the library, not a hardcoded pair - #575

Open
LCrew wants to merge 1 commit into
5stackgg:mainfrom
LCrew:pr/broadcast-huds
Open

feat(huds): pick a broadcast HUD from the library, not a hardcoded pair#575
LCrew wants to merge 1 commit into
5stackgg:mainfrom
LCrew:pr/broadcast-huds

Conversation

@LCrew

@LCrew LCrew commented Sep 9, 2026

Copy link
Copy Markdown

The HUD pickers in the demo player and the stream deck listed a fixed horizontal/vertical union, because those were the only two things the pod could load. They were never separate HUDs -- only layouts of the one bundle JTs Hud Manager ships -- and they are now the two seeded builtin rows in broadcast_huds, so both pickers list the library instead and send a slug.

The HUD also outgrew its home. It was a two-value setting, which fit beside the other playback toggles on the demo settings page; it is a library with an upload and a per-row default now, so it gets a page. demo-settings deliberately stops writing default_hud_mode as well as reading it -- the api still reads that row as its fallback, so a page that kept rewriting it would quietly reassert an old layout every time those settings were saved.

useBroadcastHuds queries with raw gql rather than the generated zeus client: broadcast_huds is new, and the generated types come from yarn codegen against a running Hasura, so zeus here would mean nobody can build this branch until someone has migrated an instance. The list is cached at module scope because three pickers can mount at once and it changes only on an import.

$apollo is reached inline rather than destructured at the top of <script setup>: a top-level binding of that name lands in setupState, and vue-apollo's options mixin then cannot assign this.$apollo in beforeCreate -- Vue refuses to let the Options API mutate a <script setup> binding, and the proxy set trap returning false throws before the page can mount.

Locales carry the new keys in English so check-translations stays green (16/16) and a missing key never renders as a raw dotted path; the four HUD-layout strings are removed everywhere, having lost their last consumer.

Depends on the api's broadcast_huds table.

The HUD pickers in the demo player and the stream deck listed a fixed
horizontal/vertical union, because those were the only two things the pod could
load. They were never separate HUDs -- only layouts of the one bundle JTs Hud
Manager ships -- and they are now the two seeded builtin rows in broadcast_huds,
so both pickers list the library instead and send a slug.

The HUD also outgrew its home. It was a two-value setting, which fit beside the
other playback toggles on the demo settings page; it is a library with an upload
and a per-row default now, so it gets a page. demo-settings deliberately stops
writing default_hud_mode as well as reading it -- the api still reads that row
as its fallback, so a page that kept rewriting it would quietly reassert an old
layout every time those settings were saved.

useBroadcastHuds queries with raw gql rather than the generated zeus client:
broadcast_huds is new, and the generated types come from `yarn codegen` against
a running Hasura, so zeus here would mean nobody can build this branch until
someone has migrated an instance. The list is cached at module scope because
three pickers can mount at once and it changes only on an import.

$apollo is reached inline rather than destructured at the top of <script setup>:
a top-level binding of that name lands in setupState, and vue-apollo's options
mixin then cannot assign this.$apollo in beforeCreate -- Vue refuses to let the
Options API mutate a <script setup> binding, and the proxy set trap returning
false throws before the page can mount.

Locales carry the new keys in English so check-translations stays green (16/16)
and a missing key never renders as a raw dotted path; the four HUD-layout
strings are removed everywhere, having lost their last consumer.

Depends on the api's broadcast_huds table.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant