Skip to content

feat(web): widget navigation, projects and workspace settings - #59

Merged
sanchitrk merged 11 commits into
canaryfrom
claude/desktop-app-persistence-317233
Oct 10, 2026
Merged

sanchitrk merged 11 commits into
canaryfrom
claude/desktop-app-persistence-317233

Conversation

@sanchitrk

Copy link
Copy Markdown
Contributor

Builds on the desktop app from #57.

Navigation

  • Widgets declare the addresses they open (opens globs, priority band, canOpen veto). A resolver picks one by match, band, specificity, then registration order; kind forces a widget.
  • useShell(): open(address, { kind, placement, mode, params }), focus, close. An address is an instance's identity: opening it again focuses it, switching workspace if needed.
  • Plain click replaces a replaceable frame the caller opened (unless pinned); Cmd/Ctrl- or middle-click opens a new one beside it.
  • useFrame(): setTitle and setIcon. Long titles truncate in the middle. Frames get a close button.

Widgets

  • projects lists projects with their sessions; session shows one conversation via codework://session/<id>. Data comes from mock projects.list / sessions.get RPCs.

Workspaces and settings

  • Workspaces live in SQLite: a fixed webwm tag bit (reordering never rewrites widget masks), a display order (tabs and Cmd+1–9), name, icon, and their own layout and split.
  • Settings (Cmd+, or the title bar gear) uses shadcn/ui mapped onto the --cw-* theme: list, create, rename, change icon, drag to reorder, and delete with a confirm that names the widgets that will close. Search, responsive icon rail, Inter, T3-style dialogs.

Fixes

  • Layout jitter in small windows: the desktop reserves its scrollbar gutter, so a scrollbar can no longer resize the layout it overflows. Scrollbars are 6px.

Not yet

  • Widget instances are still in memory (no widgets table), so opened widgets reset on restart.

Testing

Verified in the Electron app over the DevTools protocol: navigation (focus, replace, new, close), resize sweeps for jitter, and every workspace action including persistence across restarts. vp check and typecheck pass for apps/server, apps/desktop, apps/web.

🤖 Generated with Claude Code

sanchitrk and others added 11 commits October 9, 2026 23:36
Adds the resolver, useShell/useFrame, frame close, and a projects list with session detail backed by mock server RPCs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaceable widgets are reused by their opener unless pinned; Cmd/Ctrl- or middle-click opens a new frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Long titles are shortened in the middle, keeping their last 4-8 characters visible.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reserve the desktop's scrollbar gutter so a scrollbar can't resize the layout it overflows; scrollbars are thin and subtle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Workspaces live in SQLite with a fixed tag bit and a display order, and keep their layout and split. Settings (shadcn) lists, creates, renames, re-icons, reorders and deletes them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Below md the settings sidebar folds to an icon rail and workspace tabs show only icons; name fields keep a minimum width.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flat sidebar with search, one content pane, and shared Page/Section/Group/Row blocks; workspaces page gains a shortcuts section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blurred backdrop, glass card, footer strip, and a real destructive button; adds tw-animate-css for shadcn's enter and exit animations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sanchitrk
sanchitrk merged commit 06862c3 into canary Oct 10, 2026
@sanchitrk
sanchitrk deleted the claude/desktop-app-persistence-317233 branch October 10, 2026 00:34
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