Repository navigation
Workspace foundation: column plan, regional focus, semantic bindings and resource model (#330) - #375
Draft
raiseCatError wants to merge 2 commits into
Draft
raiseCatError wants to merge 2 commits into
raiseCatError wants to merge 2 commits into
Conversation
…and resource model Shared groundwork for the sidebar (#331), detail panel (#332) and keymap (#335) under #330, as standalone modules; the running app is unchanged. - layout.ts: the column counterpart of ScreenPlan. Docked, compact, drawer and hidden modes by measured width; a docked region never squeezes the center below 60 cells (it becomes a drawer), drawers overlay the center without resizing the PTY, and passthrough/idle suppress both regions. - focus.ts: LEFT_SIDEBAR and RIGHT_PANEL extend #329's InputOwner rather than adding a dispatcher. Protected owners (passthrough, approval, choice, search, agent message, panels) are never intercepted; in the composer only opt-in bindings apply, only with an empty draft, never to typing. Closing a focused region returns focus to the composer; focus resumes after passthrough. - keymap.ts: key -> semantic action per context, with slash-command paths and help derived from the bindings. The defaults bind nothing in the composer. - resources.ts: stable ids; activatable/informational/unsupported with an activation intent required for the first; selected, focused, active, attention and stale kept apart; hostile text sanitized; trees bounded. docs/design/workspace.md records the integration contract for TerminalApp.ts, which waits for the workflow track's stabilization checkpoint (#359).
This branch has not been deployed
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.
Shared groundwork for the Workspace Sidebar (#331), the detail panel (#332) and the semantic keymap (#335), under #330. Standalone modules only:
TerminalApp.tsis not modified; the integration contract is indocs/design/workspace.mdand waits for the workflow track's stabilization checkpoint (#359).src/workspace/layout.ts: the column counterpart of ScreenPlan.docked/compact/drawer/hiddenby measured width. A docked region never squeezes the center below 60 cells (it becomes a drawer); drawers overlay the center without resizing the PTY; passthrough and idle suppress both regions.columnAtfor pointer hits.src/workspace/focus.ts:LEFT_SIDEBARandRIGHT_PANELextend Add keyboard-first managed Claude targets and unified mod inventory #329'sInputOwner; no second dispatcher. Protected owners (passthrough, approval, choice, search, agent message, full-width panels, agent transcript) are never intercepted. In the composer only opt-in bindings apply, only with an empty draft, never to typing. Closing a focused region returns focus to the composer; opening one never steals focus; focus resumes after passthrough.src/workspace/keymap.ts: key → semantic action per context; every action has a slash-command path; help derives from the bindings. Defaults bind nothing in the composer.src/workspace/resources.ts: stable ids;activatablerequires an activation intent (otherwise downgraded tounsupportedwith a reason); selected / focused / active / attention / stale kept apart; hostile text sanitized; trees bounded (512 items, 4 levels).Tests:
tests/workspaceFoundation.test.ts(geometry at 17 widths × 3 region combinations, PTY invariants, drawer overlap, focus protection, draft protection, transitions, resource bounds and sanitization, derived help).Conflict-prone at integration:
src/app/TerminalApp.ts,src/commands/slashCommands.ts,src/help/helpContent.ts(listed in the design doc). Physical QA (Ghostty, Terminal.app, tmux, Safe/NO_COLOR, widths 40–200) is listed there and not performed.