Skip to content

feat(P2): redesign all 7 utility screens per spec#71

Merged
oratis merged 1 commit into
mainfrom
feat/p2-screens
May 28, 2026
Merged

feat(P2): redesign all 7 utility screens per spec#71
oratis merged 1 commit into
mainfrom
feat/p2-screens

Conversation

@oratis

@oratis oratis commented May 28, 2026

Copy link
Copy Markdown
Owner

Phase 2 of the design-system rollout. After P1 redid the Onboarding / Sidebar / Chat surfaces, this PR brings the remaining seven utility screens (Sessions / Plugins / Skills / Permissions / MCP / Settings / About) onto the same shell.

Shared primitives

New src/components/Screen.tsx:

  • Screen — header (crumb + actions) + scrollable body, mounts inside .chat-main
  • Card — bordered card with optional title + actions header (brand-tinted)
  • Row — label / hint / value grid for diagnostics
  • SectionTitle — small uppercase divider for inside-card grouping

Screens

  • About — gradient hero with BrandMark size=lg, diagnostics (DeepSeek API, project folder, paths), docs links via plugin-opener
  • Sessions — search + new button in header, click-to-resume list with relative time + size
  • Plugins — install card (still surfaces "v0.2 wiring" feedback), trust badges, custom Toggle switches, hook contributions, source hash
  • Skills — 2-column: filter list + SKILL.md detail pane
  • Permissions — 5 official modes, Add-rule card, separate cards per deny/ask/allow with remove ✕, Save now persists to settings.json
  • MCP — status badges, tool count, error tail, example JSON
  • Settings — GUI/JSON segmented toggle: GUI shows Quick reference + filterable flat key/value table; JSON shows live-validated textarea

App-level

  • Dropped .legacy-screen wrapper for all seven — each screen mounts its own chat-header, matching ReplScreen

Test plan

  • pnpm typecheck clean (7 workspaces)
  • pnpm test — 533+ tests pass
  • pnpm --filter @deepcode/desktop build succeeds (bundle 356 KB)
  • User: click each inspector-rail icon → verify each screen renders on-spec
  • User: try editing settings in JSON view → Save → reopen confirms persistence
  • User: try adding/removing a permission rule → Save → re-open confirms persistence

🤖 Generated with Claude Code

Replaces the legacy Tailwind-flavored markup in Sessions / Plugins /
Skills / Permissions / MCP / Settings / About with design-aligned
layouts built on a new shared Screen + Card + Row + SectionTitle
component set in src/components/Screen.tsx.

Each screen now:
- Mounts a chat-header with crumb + actions (no more .legacy-screen
  wrapper)
- Body uses Cards with optional title + actions header
- Uses real design tokens (var(--bg-2), --line, --brand-tint, etc.)
  instead of dead bg-bg/text-fg classes that don't render in the new
  CSS

Screen-by-screen highlights:

About
- Centered hero with BrandMark size="lg" + gradient text "DeepCode"
  + version line
- Diagnostics card with Status + Paths sections (DeepSeek API,
  project folder, base URL, ~/.deepcode/* paths)
- Documentation links card opening external URLs via plugin-opener

Sessions
- Search input + new-session button in header
- Card with full sessions list, hover state, file size + relative
  time, click-to-resume

Plugins
- "Install new plugin" card (still surfaces "wire in v0.2" UX
  feedback — actual install not piped to renderer yet)
- "Installed" card with trust badges (official=ok, marketplace=info,
  user=warn), hook contributions, source hash, and a custom Toggle
  switch (not styled native checkbox)

Skills
- 2-column layout: left list with filter + source badge, right
  detail card with SKILL.md preview in mono pre

Permissions
- 5 official mode options exposed in defaultMode row
- "Add rule" card with type dropdown + pattern input + Enter-to-add
- One card per kind (deny/ask/allow) with badge-tinted header,
  remove-row ✕ buttons
- Save button persists to ~/.deepcode/settings.json (was previously
  view-only stub)

MCP
- Connected servers card with status badges (●connected / ✕failed /
  ○disabled), tool count, inline error tail
- Example settings JSON card for copying

Settings
- GUI / JSON view toggle in header (segmented control)
- GUI view: Quick reference card (project / settings path / model /
  effort / baseURL) + filterable flat key/value table
- JSON view: full-width <textarea> with live parse validation;
  inline error banner if invalid
- Save button writes back to user-level settings.json

Also fixed App.tsx to drop the .legacy-screen wrapper for these
seven screens, since each now mounts its own header. Bundle size
holds at 356 KB.

All workspace typecheck + 533 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit 1419636 into main May 28, 2026
1 of 3 checks passed
@oratis oratis deleted the feat/p2-screens branch May 28, 2026 14:11
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