feat(action-page): PROG-123 one Location field + Workspace → Focus → Arc tree picker#99
Merged
Conversation
… with a tree picker Owner review of the first pass pushed further than parent-name hints: two separate fields hid a real coupling — setting the focus limits the arcs, and a focus change silently clears the arc. The action page now shows one **Location** field (focus line with gitUrl, arc nested beneath with an indent) opening a single palette picker that renders the Workspace → Focus → Arc tree in outline rank order. Workspaces are greyed, inert headers that keyboard selection skips; picking a focus means 'this focus, no arc' (the pinned 'No arc' row is gone); picking an arc lands focus + arc in one step (same-focus picks update arcId, cross-focus picks ride moveAction's PROG-118 arcId). Filtering is tree-aware: a query matches a row or any ancestor, and matches keep their ancestors visible as context. The shortcut is L (Location); M and A retire. The palette Item type gains header/indent so selection walks only actionable rows. Decision: docs/decisions/PROG-123.md (PROG-123b). REFERENCE picker, action-page, and keyboard-map sections updated.
Owner follow-up on the Location picker: each tree row now carries its level's glyph — a new 2×2 portfolio-grid mark for workspaces, the existing focus target and arc marks for the rows beneath — so the modal shares the sidebar field's iconography. Focus/Arc glyphs move out of ActionPage into a shared src/client/glyphs.tsx (with the new WorkspaceGlyph); the palette Item type gains an optional leading icon.
…ni-tree Owner follow-up: the sidebar Location field now shows all three hierarchy levels with the same glyphs the picker rows carry. A workspace line (linked, like focus/arc) tops the tree; the workspace grid glyph doubles as the field's gutter button, start-aligned so it sits on the workspace line (IconRow gains an align prop); the focus line carries the target glyph inline and the arc keeps its mark one indent deeper. gitUrl aligns under the focus label.
bryankennedy
approved these changes
Jul 16, 2026
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.
Second PR for PROG-123, applying the owner's review of #97: consistency with the app's nested-tree surfaces, and merging the two coupled fields into one.
What
Locationfield on the action page replaces the separate Focus and Arc fields: focus line (gitUrl beneath), arc nested with an indent — making the focus-limits-arcs coupling explicit instead of a silent arc clear on move.moveandarcmodes: it renders Workspace → Focus → Arc in outline rank order, workspaces as greyed inert headers that keyboard selection skips, focuses and arcs indented beneath.arcIdupdate, cross-focus picks ridemoveAction, which already carries a landingarcId(PROG-118). The current location hintscurrentand stays offered.L(owner-picked over aliasing);MandAretire. The root palette lists "Set location… (L)".Decision record:
docs/decisions/PROG-123.md(PROG-123b). REFERENCE picker/action-page/keyboard-map sections updated.Verification
bun run check+ 180 unit tests pass; Prettier clean.m/ano longer open a palette,lopens the tree, scraped rows match the snapshot-computed tree exactly (headers/indent/order/hints), keyboard selection skips headers, ancestor-aware filtering, a cross-focus arc pick moves focus and sets the arc in one click, a same-focus focus pick clears the arc, and thecurrenthint lands correctly afterwards.