Skip to content

feat(app): port phase 1 desktop ui slices#35

Merged
Astro-Han merged 7 commits into
devfrom
codex/feat-phase1-polish
Apr 19, 2026
Merged

feat(app): port phase 1 desktop ui slices#35
Astro-Han merged 7 commits into
devfrom
codex/feat-phase1-polish

Conversation

@Astro-Han

Copy link
Copy Markdown
Owner

Summary

Port the Phase 1 desktop UI slices into the real PawWork app and close the main follow-ups found during local validation.

This pull request:

  • lands the shell/theme polish work for the desktop chrome
  • brings over the new-session home and centered composer flow
  • unifies the right utility panel surface
  • fixes workspace switching in the new-session workspace chip
  • hardens terminal persistence when workspace state changes
  • restores the titlebar to the design-aligned information architecture, with New session on home and project / session breadcrumb in active sessions

Why

Issue #26 defines Phase 1 as the lowest-risk UI slices to move the existing Solid + Electron app toward the current docs/design handoff.

This branch carries those Phase 1 slices plus the follow-up fixes that showed up during review and real desktop regression testing. It does not claim that issue #26 is fully complete, and it keeps the remaining out-of-scope or later-phase gaps for follow-up work.

Related Issue

Part of #26

How To Verify

cd packages/app
bun test --preload ./happydom.ts ./src/shell-frame-contract.test.ts
bunx playwright test e2e/app/shell-frame.spec.ts

Manual desktop checks used during branch validation:

cd packages/desktop-electron
bun run dev

Then verify:

  • the home screen shows the large entry surface and starter cards
  • the new-session workspace chip can switch directories
  • existing sessions keep the composer visible at the bottom
  • the titlebar shows New session on home
  • the titlebar shows project / session breadcrumb inside a session

Screenshots or Recordings

Local desktop validation was performed against the real macOS app during this branch. I have not attached a new recording in this automated PR creation step.

Checklist

  • I ran the relevant verification steps
  • I tested visible changes manually when needed
  • I am targeting the dev branch

- add shared PaneL and PaneR icon primitives
- unify desktop titlebar height to 44px and frame radius to 12px
- add app-local accent-brand and sidebar theme tokens
- switch sidebar rail to bg-sidebar
- align shell contract and window chrome tests with the new geometry

Partial #26.
@Astro-Han Astro-Han merged commit 3e1508f into dev Apr 19, 2026
9 checks passed
@Astro-Han Astro-Han deleted the codex/feat-phase1-polish branch April 19, 2026 15:40
Astro-Han added a commit that referenced this pull request May 24, 2026
The right-panel shell tab strip (Status / Files / Review) carried an
app-level override in packages/app/src/index.css that painted
var(--sidebar) on the selected trigger. This pre-dates PR #878 (the
override has been there since the phase-1 desktop port in PR #35) but
PR #878 reshaped the strip and surfaced the inconsistency: Status (the
default landing tab) got a chip while Files / Review did not, so the
selected tab visibly bulged wider than its siblings.

The sidepanel comment in packages/ui/src/components/tabs.css already
spelled out the intended active marker — 'weight + color shift only.
No chip background, no brand underline' — but the app-level rule
overrode it.

Drop the rule. All three triggers now share a transparent background;
the selected tab is conveyed by fg-strong + 500 weight, matching the
tabs.css comment and DESIGN.md's restrained warm-neutral palette.

Verification (TDD)

- New e2e spec session-shell-tab-consistency.spec.ts asserts at the
  rendered seam that all three triggers share the same computed
  background-color. Red on HEAD~1 (Status rgb(248, 246, 243) vs Files
  rgba(0, 0, 0, 0)), green after the index.css deletion. The
  assertion does not hard-code 'transparent' — the contract is
  'agree with each other'.
- bun run --filter=@opencode-ai/app typecheck OK
- bun run --filter=@opencode-ai/app snap right-panel-titlebar — light
  + dark grid shows all three tabs at equal visual weight.
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