Agentic UI: Add site overview view - #4258
Merged
Merged
Conversation
…r tokens for the settings save error
bcotrim
marked this pull request as ready for review
July 20, 2026 16:11
Collaborator
📊 Performance Test ResultsComparing eabfe48 vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
…erview-view # Conflicts: # apps/ui/src/components/site-settings-view/index.tsx
… into stu-1927-add-site-overview-view
Contributor
Contributor
… it on hover" This reverts commit 3f062a1.
…he wrong signature
nightnei
approved these changes
Jul 21, 2026
This was referenced Jul 21, 2026
bcotrim
added a commit
that referenced
this pull request
Jul 22, 2026
## Related issues - Related to [STU-1927](https://linear.app/a8c/issue/STU-1927/explore-preferences-view-in-place-of-sidebar-menu) - Follow-up to #4258 — item 2 of [nightnei's review](#4258 (review)) ## How AI was used in this PR AI (Claude Code) implemented the indicator and iterated on its placement (name-adjacent badge → status button → site-card badge experiment → dropdown), with me directing each step and visually reviewing the attempts in the running app. ## Proposed Changes Only one site can have Xdebug enabled at a time, but the agentic UI gave no hint of which site holds that slot — you had to open each site's settings to find out. Studio Classic solves this with an Xdebug icon in place of the site's status circle; this PR brings the same affordance to the agentic UI: - The Xdebug-enabled site's sidebar row swaps the status dot for Classic's Xdebug bug glyph, inside the same start/stop button — hover still crossfades to the play/stop action, and the transitioning state still blinks. The color follows the status palette (green running, amber transitioning, grey stopped). - Unlike other stopped rows (which hide the status button until hover), the Xdebug site keeps its greyed glyph visible while stopped, so the Xdebug slot is always spottable at a glance. - The site dropdown (opened from the collapsed-sidebar site card) shows the same glyph next to the **Studio** row label with an "Xdebug enabled" tooltip. The card's tiny corner badge stays a plain status dot — we tried the glyph there and it was illegible at that size. - Status tooltips/aria labels on the Xdebug site now read e.g. "Site status: Running. Xdebug enabled. Stop site". | Stopped | Running | Stopped (sidebar closed) | Running (sidebar closed) | |--------|--------|--------|--------| | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/c3a1268b-955d-4183-9d40-aa3fecdd798e" /> | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/5386f8db-d4f8-4a64-b48e-488131d478d4" /> | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/ff3db723-f6c6-4ef5-a488-a971862d8f86" /> | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/51214bb0-ed68-4763-9a09-208d152ebb9a" /> | ## Testing Instructions 1. In the agentic UI, open a site's overview → **Settings** tab and enable Xdebug. 2. In the sidebar, the site's status dot becomes the green Xdebug bug. Hovering the button still crossfades to the stop action; clicking still stops the site. 3. Stop the site: the bug stays visible (greyed) without hovering, while other stopped sites still hide their status button until hover. 4. Collapse the sidebar, click the floating site card: the dropdown's **Studio** row shows the bug next to the label (green running / grey stopped) with an "Xdebug enabled" tooltip. The card's corner badge itself is unchanged. 5. Verify other sites' rows and live mode are unaffected, and check everything in both light and dark mode. ## Pre-merge Checklist - [x] Have you checked for TypeScript, React or other console errors? 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bcotrim
added a commit
that referenced
this pull request
Jul 23, 2026
…#4284) ## Related issues - Related to STU-1927 - Follow-up to #4258, addressing item 1 of [this review](#4258 (review)) ## How AI was used in this PR Implemented with Claude: reused the existing `useWordPressVersions` query and `wpVersionField` select support, then extended them for the settings form and ported the legacy version-selector semantics. Code and tests reviewed by me. ## Proposed Changes The WordPress version field in the agentic UI site settings was a free-text input, so you could type anything (including invalid versions). It's now a dropdown of the actually available WordPress versions, with the same semantics as Studio Classic: - **"latest"** (auto-update) is the first option and is preselected for auto-updating sites. Picking it saves the site as auto-updating, with no version forwarded. - Picking a specific version (stable, beta, or nightly) pins the site: `isWpAutoUpdating: false` and the version is applied on save. - **Pinned sites show their actual installed version**, read from the site's files like Classic does (new `getWpVersion` connector method: IPC handler on desktop, a `/sites/:id/wp-version` route on the local server). If the installed version is older than the fetched offers, it's inserted into the list in the right position so it stays selectable. - The version is **only forwarded on save when the user actually changed it** — matching Classic's settings modal. Previously any unrelated save of a pinned site forwarded a version and could trigger a WordPress reinstall/upgrade. - **Offline, the field locks to "latest"** — the only version we can apply without a download — and is disabled, with the explanation shown as a hover tooltip like the legacy selector. The field always stays a dropdown: when the version list can't be fetched it offers "latest" (plus the site's installed version) instead of degrading to free text. - The dropdown uses the **same grouping as the legacy selector**: Auto-updating / Beta & Nightly / Stable Versions. | Online | Offline | |--------|--------| | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/9de857f5-f22b-4092-820c-a4b3c560611d" /> | <img width="3248" height="2122" alt="image" src="https://github.com/user-attachments/assets/636956c7-5d2b-4908-8a20-f9f0b901296b" /> | ## Testing Instructions 1. Launch Studio with the agentic UI and open a site's overview → **Settings** tab. 2. Check the WordPress version field is a dropdown with "latest" preselected, followed by beta/nightly and stable versions. 3. Pick a specific version and save — the site should restart pinned to that version (auto-updates disabled). 4. Reopen Settings: the field shows the pinned site's actual installed version. 5. Change an unrelated field (e.g. site name) on the pinned site and save — WordPress should not be reinstalled or upgraded. 6. Switch the version back to "latest" and save — the site should be auto-updating again. 7. Go offline (e.g. turn off Wi-Fi): the field forces "latest", is disabled, and hovering it shows a tooltip explaining that changing the version requires an internet connection. 8. Create-site form: confirm its WordPress version dropdown still behaves as before (no changes intended there). 9. Verify the Settings tab in both light and dark mode. ## Pre-merge Checklist - [x] Have you checked for TypeScript, React or other console errors?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.





Related issues
How AI was used in this PR
AI ported and adapted the implementation from the #3975 exploration branch, with scope, UX decisions, and visual review (light + dark) done by me.
Proposed Changes
Sites in the Agentic UI get a proper home beyond the chat panel. Each sidebar site row now shows a settings icon that opens a Site Overview — a Studio-style screen with:
/sites/:id/settingslinks redirect here, tab included, and unsaved edits survive switching between the tabs.Alongside that:
Testing Instructions
npm start, then hover a site row in the sidebar → a gear icon appears next to the start/stop control.Pre-merge Checklist