Skip to content

Auto-save agentic UI settings and redesign the preferences layout#4219

Open
bcotrim wants to merge 5 commits into
trunkfrom
agentic-settings-autosave-preferences
Open

Auto-save agentic UI settings and redesign the preferences layout#4219
bcotrim wants to merge 5 commits into
trunkfrom
agentic-settings-autosave-preferences

Conversation

@bcotrim

@bcotrim bcotrim commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Related issues

How AI was used in this PR

Implemented with Claude Code (design ported from the settings redesign explorations in #3975/#3979, adapted to auto-save). All changes were reviewed, and behavior was verified manually in the app plus unit tests.

Proposed Changes

First PR of the application-settings series for the new Studio experience.

  • Settings now save instantly. Changing any option persists it immediately — no more Save button, dirty-state tracking, or losing changes when navigating away. Per the settings design post: "options are saved when changed."
  • Redesigned settings screen. A title-bar-height header with a centered tab list replaces the in-content title and tabs, and the preferences are grouped into cards: a General section (Appearance as a System/Light/Dark segmented control, Language, Preferred editor, Preferred terminal, When quitting with running sites) and a Studio experience section with the "Switch to classic" action. Save errors surface inline in the affected section.
  • Settings no longer show stale values. The screen previously trusted a forever-fresh persisted cache, so preferences changed elsewhere (or fields added since) could show wrong/empty values until the cache expired. It now reconciles with the main process on mount/focus.
  • Editor/terminal selections match the classic UI's behavior. Only installed apps are offered and the effective (fallback-resolved) app is always shown, so a brand-new user sees a working "open in" option rather than nothing. The site actions menu now names the apps ("Open in Cursor", "Open in Terminal") and hides an action only when no supported app is available.
  • "Stop, restart on next launch" now works in the new Studio experience. The relaunch half of that behavior only lived in the classic UI; the new shell now restarts the flagged sites on boot too.
Dark Light
image image

Note: Some settings are intentionally left out and will be addressed in follow-up PRs

Testing Instructions

  1. Enable the new Studio experience (beta feature flag) and open Settings.
  2. Change each preference (appearance, language, editor, terminal, quit behavior) — each should apply immediately with no Save button. Language reloads the app in the new locale.
  3. Navigate away and back, and restart the app — values should persist and match what the classic UI's settings dialog shows.
  4. Right-click a site in the sidebar — the menu should read "Open in " / "Open in " and both should open.
  5. Set "When quitting with running sites" to "Stop, restart on next launch", start a site, quit Studio, relaunch — the site should start again automatically.
  6. Verify the settings screen in both light and dark mode.

Pre-merge Checklist

  • Have you checked for TypeScript, React or other console errors?

🤖 Generated with Claude Code

@wpmobilebot

wpmobilebot commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

📊 Performance Test Results

Comparing bd6918c vs trunk

app-size

Metric trunk bd6918c Diff Change
App Size (Mac) 1353.02 MB 1353.10 MB +0.08 MB ⚪ 0.0%

site-editor

Metric trunk bd6918c Diff Change
load 1032 ms 754 ms 278 ms 🟢 -26.9%

site-startup

Metric trunk bd6918c Diff Change
siteCreation 6512 ms 6519 ms +7 ms ⚪ 0.0%
siteStartup 2392 ms 2398 ms +6 ms ⚪ 0.0%

Results are median values from multiple test runs.

Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff)

@bcotrim
bcotrim requested review from a team and katinthehatsite July 15, 2026 21:00
bcotrim added 2 commits July 16, 2026 10:57
…osave-preferences

# Conflicts:
#	apps/ui/src/components/site-list/index.tsx
…osave-preferences

# Conflicts:
#	apps/ui/src/data/queries/use-sites.ts
];

function isColorScheme( value: unknown ): value is ColorScheme {
return value === 'system' || value === 'light' || value === 'dark';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the font sizes in these boxes be aligned and use the same size? it seems to be the system options are slightly smaller than the other preference choices:

Image

@katinthehatsite katinthehatsite left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes look good to me 👍

I noticed one small thing - there seems to be a slight lagging while I am switching languages while the dropdown is going away. I tried to capture it in the screencast below:

Screen.Recording.2026-07-17.at.11.08.56.AM.mov

@bcotrim

bcotrim commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

@katinthehatsite I've addressed the feedback in 0a17304

@bcotrim
bcotrim requested a review from katinthehatsite July 17, 2026 09:49
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.

3 participants