Skip to content

feat(action-page): PROG-123 one Location field + Workspace → Focus → Arc tree picker#99

Merged
bryankennedy merged 3 commits into
mainfrom
act/PROG-123
Jul 16, 2026
Merged

feat(action-page): PROG-123 one Location field + Workspace → Focus → Arc tree picker#99
bryankennedy merged 3 commits into
mainfrom
act/PROG-123

Conversation

@exe-dev-github-integration

Copy link
Copy Markdown
Contributor

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

  • One Location field 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.
  • One tree picker in the palette replaces the move and arc modes: it renders Workspace → Focus → Arc in outline rank order, workspaces as greyed inert headers that keyboard selection skips, focuses and arcs indented beneath.
  • Picking a focus = "this focus, no arc" (the pinned "No arc" row is gone); picking an arc sets focus + arc in one step — same-focus picks are a plain arcId update, cross-focus picks ride moveAction, which already carries a landing arcId (PROG-118). The current location hints current and stays offered.
  • Tree-aware filtering: a query matches a row or any ancestor; an ancestor match keeps its whole subtree, and a match keeps its ancestors visible as context.
  • Shortcut is L (owner-picked over aliasing); M and A retire. The root palette lists "Set location… (L)".
  • Scope per owner: action page + palette only — the create-action dialog keeps its selects for a follow-up under the consistency arc.

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.
  • Playwright drive, 15 checks, all passing: merged field renders (Location present, Focus/Arc labels gone, arc nested), m/a no longer open a palette, l opens 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 the current hint lands correctly afterwards.

… 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
bryankennedy merged commit bac16d5 into main Jul 16, 2026
2 checks passed
@bryankennedy
bryankennedy deleted the act/PROG-123 branch July 16, 2026 15:43
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