feat(dashboard): choice gates in the right rail (all sets at once + sticky nav)#445
Merged
Conversation
Move the interactive choice gates out of the main view into the right rail as a dedicated Choices tab: every gate the run is parked on shown at once in a long scroll with a sticky top-nav to jump between the sets, instead of one inline gate. Ctrl+Enter accepts the first (active) gate, restoring page.ts parity. The live event feed is lifted into a shared useLiveEvents hook so the main view and the rail read one Telefunc Channel; pendingChoices returns every open gate. Closes #440
formatFrameworkEvent returns undefined for an unknown event kind (the switch has no default), and EventList called .trim() on it, white-screening the whole dashboard on a single malformed or future event. Guard with ?? '' so one bad event degrades to an empty line under its kind badge instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #314. Today a single choice gate renders inline in the main view. The spec wants every pending choice set shown at once in the right rail as a long scroll with a sticky top-nav to jump between them, plus Ctrl+Enter on Accept (parity with the retired page).
What (client only, framework-dashboard is private, so no changeset)
ChoicesRail(new): a Choices tab in the right rail that stacks every open gate in a scroll, with a sticky top-nav (numbered, titled) that scrolls to each set. The rail auto-switches to Choices when a gate opens and back to Docs when the last clears; a count badge on the tab.pendingChoices(new, plural): returns every gate the run is parked on, in fire order; achoice-resolveddrops its gate, a re-fire replaces in place.pendingChoice(singular) now derives from it.ChoicePanelgains anactiveflag; only the first (topmost) gate binds Ctrl+Enter to Accept, so the shortcut is unambiguous with several gates open. A subtle hint shows on the active gate.onEventssubscription is lifted into auseLiveEventshook so the main view and the rail read one Telefunc Channel per project (no double subscription).EventStreamis now events-prop-driven;+PageandRelayViewown the hook. The inline gate is removed from the main view.Verify
pendingChoicessanity-checked against seeded events (single + multi + confirm + one resolved): returns the 3 open gates, drops the resolved one, first gate active.Closes #440