Skip to content

feat(ui): UI improvements, restart fix, theme picker, and model list#219

Closed
cryptiklemur wants to merge 4 commits into
chadbyte:mainfrom
cryptiklemur:feat/ui-improvements-and-bugfixes
Closed

feat(ui): UI improvements, restart fix, theme picker, and model list#219
cryptiklemur wants to merge 4 commits into
chadbyte:mainfrom
cryptiklemur:feat/ui-improvements-and-bugfixes

Conversation

@cryptiklemur
Copy link
Copy Markdown

Summary

Major batch of UI improvements, bug fixes, and new features:

Bug Fixes

  • Restart Server now worksonRestart callback was never wired through server.js to project.js, causing "Restart not supported" error. Added the two missing lines to extract and pass the callback.
  • Restart error handling — Added try/catch in daemon.js spawnAndRestart() to broadcast error toast on failure, and reset the restart button on reconnect.

New Features

  • AMOLED Dark theme — True black (#000000) background theme for OLED displays, added as lib/themes/amoled.json
  • Appearance section in Server Settings — New "Appearance" nav item with full theme picker embedded in settings (12 dark + 11 light themes with color swatches)
  • Per-variant theme memory — Dark and light theme selections are stored separately (clay-skin-dark / clay-skin-light), so toggling remembers your chosen theme for each mode
  • Settings button in user island — Gear icon next to theme toggle opens Server Settings directly
  • Expanded model list — Supplements SDK's supportedModels() with known models (Opus, Claude Sonnet 4, Claude Opus 4, Claude 3.5 Sonnet, Claude 3.5 Haiku) so all models are always visible
  • Full-width chat toggle — Option in profile popover to use full viewport width for messages
  • Right-click context menu on sidebar icons — Now shows full project menu (Settings, Share, Remove) instead of just "Set Icon"
  • Session ID input in Resume modal — Paste a session ID to import/resume a specific CLI session
  • Session ID badge — CLI session list items show truncated session ID for identification
  • Mobile swipe gesture — Swipe left anywhere to open the project list on mobile

UI Changes

  • Removed top bar — Theme toggle moved to user island, version moved to user island, status pills moved to header area

Screenshots

User Island (theme toggle + settings button + version)

User Island

Full Page (no top bar)

Full Page

Appearance / Theme Picker

Theme Picker

Model List (all models visible)

Model List

Restart Server (working)

Restart Server

Test plan

  • Verify Restart Server button works (no longer shows "Restart not supported")
  • Verify theme picker appears under Settings > Appearance with all themes including AMOLED Dark
  • Verify toggling dark/light mode remembers each variant's theme selection
  • Verify settings gear button in user island opens Server Settings overlay
  • Verify model list shows all 8 models (Default, Sonnet, Haiku, Opus, Claude Sonnet 4, Claude Opus 4, Claude 3.5 Sonnet, Claude 3.5 Haiku)
  • Verify full-width chat toggle in profile popover works
  • Verify right-click on sidebar project icons shows full context menu
  • Verify session ID input in Resume modal allows importing by ID
  • Verify mobile swipe-left opens project list

- fix(restart): wire onRestart callback through server.js to project.js,
  fixing "Restart not supported" error; add error handling in daemon
- feat(themes): add AMOLED Dark theme (pure black background);
  add Appearance section to server settings with full theme picker;
  store dark/light theme preferences separately so toggling remembers
  each variant's selected theme
- feat(ui): remove top bar, move theme toggle and version to user island,
  move status pills to header; add settings gear button to user island
- feat(models): supplement SDK model list with known models (opus,
  claude-sonnet-4, claude-opus-4, claude-3-5-sonnet, claude-3-5-haiku)
- feat(chat): add full-width chat toggle in profile popover
- feat(sidebar): add right-click context menu on icon strip projects
  with Settings, Share, and Remove options
- feat(sessions): add session ID input to Resume CLI Session modal;
  show session ID badge on CLI session list items
- feat(mobile): add swipe-left gesture to open project list
Merge upstream changes while preserving our feature additions:
- server.js: keep both onRestart fix and upstream's onSetUpdateChannel
- app.js: merge imports (upstream's elicitation tools + our resetRestartButton)
- server-settings.js: keep our openSettingsThemePicker + upstream's settings-defaults extraction
- index.html: keep upstream's update pill UI alongside our appearance section
@chadbyte
Copy link
Copy Markdown
Owner

hey, thanks for putting this together. i do have to close this one though. per the contributing guidelines, i don't accept feature PRs. the project has a specific direction and all features are written by me to keep things consistent.

the restart bug fix looks solid though. if you can pull that out into a separate PR, i'll review and merge it.

there are some good ideas in here and i'll consider them for future updates. if you want to track those, feel free to open individual issues so they can be discussed.

appreciate it.

chadbyte added a commit that referenced this pull request Mar 18, 2026
The onRestart callback from daemon.js was never extracted or passed
to createProjectContext(), causing "Restart not supported" errors.
Also adds try/catch in spawnAndRestart() to broadcast error toast
on failure.

Based on PR #219 by @cryptiklemur.
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.

2 participants