enhance(studio): graph-as-home canvas + workspace monogram#9
Open
mroops0111 wants to merge 3 commits into
Open
enhance(studio): graph-as-home canvas + workspace monogram#9mroops0111 wants to merge 3 commits into
mroops0111 wants to merge 3 commits into
Conversation
Graph becomes the workspace's default home view; secondary surfaces (Actions / Clarify / Proposals) overlay it via a header dock instead of sitting as peer tabs. The 4-tab strip, GraphViewerOverlay modal, Cmd+G summon, and sidebar Graph-viewer button are all removed — Graph is no longer something you summon, it is the workspace. Header dock buttons (⌘1 / ⌘2 / ⌘3) toggle each secondary surface; clicking the workspace name (or ⌘0) returns home. Deep-link from a Proposal / Clarify validation issue now closes the active surface and focuses the target node on the graph, with one click to come back via the dock. Sidebar workspace rows gain id-hashed monogram swatches (6 muted colour tints, low saturation so multiple rows don't compete) in both collapsed and expanded states, fixing the "all workspaces look identical when sidebar is collapsed" problem. PageActionsHost is folded into the header's right zone with empty:hidden, eliminating the wasted 40px sub-row that previously appeared even when a surface (e.g. Actions) had no contextual tools. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per-conversation rename + delete in Actions, matching ChatGPT-style session management. The left panel is split into two independent scroll areas (Skills max-h, Conversations fills the rest) so long conversation lists don't push the skill picker off-screen. Inline pencil and trash icons sit at the right edge of each conversation row, hidden until row hover so the turn-count badge stays anchored. Trash opens a destructive confirm dialog with the turn count. Orphan runs (no sessionId) can be deleted by runId but can't be renamed (no session anchor). Server-side: new SessionMetadata schema persisted at artifacts/runs/sessions.jsonl (append-only, last-wins per sessionId). RunRepository gains deleteRecords / saveSessionMetadata / listSessionMetadata. The DELETE /runs/sessions/:id endpoint extends with ?purge=true to drop records + event files atomically; DELETE /runs/:runId handles the orphan case. Both refuse to touch an in-flight run. Visual: the in-surface status filter (Proposals Pending|Applied| Rejected, Clarify Pending|Answered|Applied|Skipped) becomes a segmented control via a new FILTER_TABS_LIST / FILTER_TAB_TRIGGER constant pair, while the workspace surface dock stays as flat buttons. Atom-level scale (height, font, radius) matches both ways; composition (container vs none) reflects the semantic difference between "pick a filter" and "navigate between surfaces". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the candidate-required NewClarifyForm modal with an inline
SubmitIssueForm matching the ReDoc shape: question + context +
relatedNode + ambiguityType, no candidates. Humans file concerns
(gaps, contradictions, ambiguities, assumptions) and braid-clarify
on its next run is expected to append candidates so the standard
pending → answered → applied pipeline can resume.
ClarifyTicket / ClarifyDraft gain four optional fields:
- `origin`: 'skill' | 'human' so future skill behaviour can
distinguish AI-emitted tickets (pre-authored candidates) from
human-filed ones (candidates empty, awaiting AI).
- `context`: free-form background.
- `relatedNode`: optional NodeId scoping the issue.
- `ambiguityType`: enum classification picked by the filer.
All four are optional — existing tickets persisted before this
change deserialise cleanly. HITLService.submitClarifyTicket passes
them through to the persisted ClarifyTicket.
Studio: the modal is gone. A dashed "Submit a question for AI"
button sits at the bottom of the Pending tab's list panel; clicking
it puts the detail pane into compose mode with the new form. The
PageActions "+ New question" button is removed (replaced by the
inline button so the surface stays focused on navigation).
Compose mode is mutually exclusive with selecting an existing
ticket; the auto-select effect is suppressed while composing so
the reviewer doesn't get yanked away mid-write.
Out of scope (next PR): braid-clarify skill behaviour change to
ingest human-filed pending tickets and append candidates.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
empty:hidden, eliminating the 40px sub-row that used to appear even when a surface had no contextual tools (e.g. Actions).