Skip to content

V2(ui): progressively harmonize the CodeNomad interface - #667

Open
pascalandr wants to merge 12 commits into
devfrom
feat/ui-harmonization
Open

V2(ui): progressively harmonize the CodeNomad interface#667
pascalandr wants to merge 12 commits into
devfrom
feat/ui-harmonization

Conversation

@pascalandr

@pascalandr pascalandr commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Goal

Harmonize CodeNomad into a calm, compact workstation UI while preserving its multi-agent workflow, native OpenCode V2 behavior, and operational visibility.

Delivered

  • Adds 12 color-scheme choices, including independent System and CodeNomad Classic behavior plus a 14-color Custom palette with legacy migration and contrast validation.
  • Establishes shared square geometry, compact typography, spacing, chrome, surfaces, controls, focus states, reduced motion, and coarse-pointer targets.
  • Harmonizes workspace tabs, session and status panels, messages, tool traces, timeline, dialogs, popovers, notifications, and startup/error surfaces.
  • Keeps worktree, agent, model, and thinking controls in the active composer footer through the shared PromptContextControls primitive; narrow composers retain only the selected values.
  • Uses an anchored notification popover with outside-click/Escape dismissal and focus restoration; keeps Preferences as a resizable non-modal desktop window while preserving mobile presentation.
  • Preserves visibility of session/message actions on touch and supports the full layout at 320 px without horizontal overflow.
  • Localizes all new visible text across the ten supported locales.

OpenCode V2 coverage

  • Resolves @opencode-ai/client, protocol, and schema to 0.0.0-beta-19059 from the root lock.
  • Reviews all 22 official beta publications from beta-18230 through beta-19059, the 52 commits from beta-18999 to beta-19059, generated declarations, npm tarballs, OpenAPI, and official V2 docs. The release bodies are empty, so the implementation audit uses those authoritative artifacts.
  • Waits for and coalesces plugin activation before location-scoped agent/provider/model/command/plugin reads, with authoritative-read fallback for older healthy runtimes.
  • Invalidates catalogs and metadata on current native events, follows the active SessionInfo.location, and fences stale client/location responses.
  • Preserves current compaction metadata and native parent/child execution authority rather than applying optimistic busy state.
  • Exposes only the reviewed plugin.await-activation proxy route; generic RPC and plugin mutation routes remain blocked.
  • Hardens fs.list and session-import ownership, including WSL path translation and NUL rejection.
  • Keeps the independently managed opencode2 runtime free of an exact startup version gate and never stops the shared daemon.

Optional native surfaces that do not currently change CodeNomad's product behavior—persistent PTY UI, vcs.base, plugin package diagnostics, MCP references, typed plugin RPC, and richer plugin inventory UI—remain intentionally deferred rather than being exposed without a product use case and security review.

Validation

  • Workspace, UI, Electron, and server typechecks
  • UI and Tauri release builds, including NSIS packaging
  • 323 pure UI tests and 148 browser-runtime UI tests
  • 373 server tests and the complete Electron native suite
  • 139 locked Rust tests plus repeated Windows cross-host lifecycle runs
  • Desktop resource invariants and git diff --check
  • Release validation at desktop and 320×800 touch emulation
  • All 12 palettes swept; Custom light explicitly validated; no horizontal overflow or unintended rounded UI surfaces

Merge gate

The implementation is pushed and CI is running. Do not merge until final visual approval is given.

@pascalandr pascalandr changed the title feat(ui): progressively harmonize the CodeNomad interface V2(ui): progressively harmonize the CodeNomad interface Aug 29, 2026
@pascalandr
pascalandr marked this pull request as ready for review August 31, 2026 00:25
@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33344555532

Artifacts expire in 7 days.
Artifacts:

  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-tauri-macos
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-tauri-windows
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-electron-macos
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-tauri-linux
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-electron-linux
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-tauri-macos-arm64
  • pr-667-c0158092c79b36daaf0b95dd19454562425aaffa-electron-windows

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33348221480

Artifacts expire in 7 days.
Artifacts:

  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-tauri-macos
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-tauri-windows
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-electron-macos
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-tauri-macos-arm64
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-electron-windows
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-tauri-linux
  • pr-667-52b764a4edcc622bbe53001f1741f0d2d3cdb0bc-electron-linux

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33366562540

Artifacts expire in 7 days.
Artifacts:

  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-tauri-windows
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-tauri-macos
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-electron-macos
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-tauri-linux
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-electron-linux
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-tauri-macos-arm64
  • pr-667-be5a165cd0423d5c15f1dedbb5f12ac69c7d3e2b-electron-windows

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33377154527

Artifacts expire in 7 days.
Artifacts:

  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-tauri-windows
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-tauri-macos
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-tauri-macos-arm64
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-electron-macos
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-electron-windows
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-electron-linux
  • pr-667-2ea0227091d1907310aa573307fc740c0f073757-tauri-linux

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33388869645

Artifacts expire in 7 days.
Artifacts:

  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-tauri-macos
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-tauri-windows
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-electron-macos
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-tauri-macos-arm64
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-tauri-linux
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-electron-linux
  • pr-667-3e61bc05ca71322d814eb7b0c551bf72d31cfe17-electron-windows

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33395095464

Artifacts expire in 7 days.
Artifacts:

  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-tauri-windows
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-tauri-macos
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-electron-macos
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-tauri-linux
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-electron-linux
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-tauri-macos-arm64
  • pr-667-97e0d43c5564234a8c6d1d5172e48568fea7835a-electron-windows

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33399030995

Artifacts expire in 7 days.
Artifacts:

  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-tauri-macos
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-tauri-windows
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-electron-macos
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-electron-linux
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-electron-windows
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-tauri-macos-arm64
  • pr-667-b586723abbaf2a58ef0172d2d59071c036346475-tauri-linux

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33564958224

Artifacts expire in 7 days.
Artifacts:

  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-tauri-macos
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-tauri-windows
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-electron-macos
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-tauri-linux
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-tauri-macos-arm64
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-electron-linux
  • pr-667-f5148a81750caf75a7fc73937f1bf8bd683a6411-electron-windows

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33845879740

Artifacts expire in 7 days.
Artifacts:

  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-windows
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos-arm64
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-windows

1 similar comment
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33845879740

Artifacts expire in 7 days.
Artifacts:

  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-windows
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos-arm64
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-windows

Base automatically changed from DEV-v2 to dev September 4, 2026 10:36
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33845879740

Artifacts expire in 7 days.
Artifacts:

  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-windows
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-tauri-macos-arm64
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-linux
  • pr-667-d9177cc6fac9be07025177bde6b312f36ad62091-electron-windows

Harmonize application surfaces, message chrome, project tabs, and right-panel tabs around the persisted theme palette. Active tabs now use neutral palette borders, project overflow scrolls from the top, and one-pixel seams and vertical overflow are removed.

Extend embedded color schemes with editable overrides, named preset creation, reset and deletion flows, and light/dark selection persistence. Keep preference-window lifecycle handling aligned across Electron and Tauri and localize the new settings actions.

Cover preset normalization, embedded overrides, and theme application regressions. Validated with the UI test suite, UI typecheck and production build, runtime palette flows, visual desktop checks, and git diff validation.
Prevent empty timeline frames by carrying Virtua measurement caches across keyed window replacements, keep directional bottom pins from moving upward, and restore escaped message anchors when the composer changes the viewport height. Preserve saved scroll snapshots while instance state is rehydrated.

Harden Developer Mode discovery for concurrent sessions and worktrees by pruning dead local registrations, bounding registry reads, isolating inspected bridge pins per plugin setup, and requiring a genuinely new native generation after restart. Preserve the raw executable path when native canonicalization fails.

Cover follow pin behavior, escaped snapshot persistence, parallel session isolation, registry pressure, distractor bridges, and restart generation filtering. Validated with UI and server typechecks, 646 UI tests, 8 automation plugin tests, 139 Rust tests, packaged release builds, and a runtime resize smoke test.
Move the shared horizontal scrollbar above both project tabs and right-panel tabs by applying matching vertical transforms to the scroll container and strip. Reserve the configured scrollbar height above project tabs while preserving the existing overflow and seam corrections.

Validated with UI and Tauri release builds plus runtime overflow measurements for both tab bars.
Unify workspace chrome, tabs, panels, dialogs, notifications, messages, tool status, and startup surfaces around the shared square, low-density visual grammar. Keep agent, model, and thinking selectors in the composer footer, preserve keyboard focus behavior, and expand critical panel controls to touch-safe targets without loosening the mouse layout.

Align the OpenCode V2 integration with beta-19059 by coalescing plugin activation waits for location-scoped catalogs, invalidating the affected metadata after native updates, preserving compacted model state, and fencing stale client or Location responses. Harden fs.list and session import authorization at the proxy boundary, and keep Windows process identity checks equivalent across Electron and Tauri.

Remove the obsolete notification settings modal, localize link-open failures in every supported locale, and extend CI coverage for themes, plugin activation, metadata races, proxy ownership, and cross-host lifecycle behavior.

Validated with workspace and server typechecks, UI and Tauri release builds, 36 pure UI tests, 99 browser-runtime UI tests, 42 focused server tests, desktop packaging invariants, the broader native/server/UI suites, release palette and responsive sweeps, and git diff --check.
@pascalandr
pascalandr force-pushed the feat/ui-harmonization branch from d9177cc to 05027df Compare September 4, 2026 11:05
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/33866292752

Artifacts expire in 7 days.
Artifacts:

  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-electron-macos
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-tauri-windows
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-tauri-macos
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-electron-linux
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-tauri-linux
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-tauri-macos-arm64
  • pr-667-05027dfa0577855ec426c272e02721b2d015ff4e-electron-windows

Place the existing session-scoped worktree selector beside the agent, model, and thinking controls below the prompt so location context remains available where messages are composed.

Keep the no-session draft on the safe three-control layout, and switch the active-session footer to a weighted four-column grid. Hide only the visible selector prefixes when the composer is 640px wide or narrower, preserving selected values and accessible names while avoiding cramped labels with open side panels and on mobile.

Validated with the UI typecheck and production build, the Windows Tauri release and NSIS build, exact 640/641px breakpoint checks, wide and compact release screenshots, and 320x800 overflow verification.
Remove the entire redundant worktree footer beneath the session list now that worktree context lives below the prompt. Restore the timeline rail to 40px without changing compact-layout hiding or coarse-pointer behavior.

Align Settings navigation with shared window primitives and improve standalone/mobile bounds and section scrolling. Let notification toolbars and long messages wrap, preserve nested keyboard actions, and keep touch and keyboard delete controls visible.

Independent gatekeeper review identified one P2 focus-loss risk when Mark all read disabled itself. Use guarded aria-disabled semantics so activation preserves keyboard focus. UI typecheck, production UI build before the final accessibility adjustment, five timeline/sidebar tests, and diff checks passed. Native visual validation of these window changes remains pending.
@pascalandr

Copy link
Copy Markdown
Contributor Author

Gatekeeper review - UI follow-up

Reviewed the six-file follow-up for sidebar/footer removal, the 40px timeline, Settings window layout, and Notifications keyboard/responsive behavior.

Finding and resolution

  • P2 (fixed in 16c555f): Mark all read could disable its currently focused button and lose keyboard focus. Replaced native disabled with aria-disabled plus an explicit no-unread action guard; disabled appearance remains intact. This was a code-path/browser-behavior finding, not a live-runtime reproduction.

No other actionable regressions were identified by the independent reviewer. Nested notification actions retain native Enter/Space behavior; Escape/focus return and Settings dirty-state guards remain intact.

Validation and limits

  • UI typecheck passed after the fix.
  • Five targeted timeline/sidebar tests passed.
  • Production UI build passed before the final aria-disabled adjustment.
  • git diff --check passed.
  • Native visual validation of this follow-up and a live keyboard-focus regression check remain pending; this is not final visual approval.

Maintenance notes: settings-screen.css is approximately 848 lines; toast-history.css approximately 283 lines exceeds the preferred focused-CSS size. No size-only refactor included.

Do not merge until final visual approval.

Bring the merged binary compatibility, startup shell, Tauri window capture, and Linux automation registry fixes into this PR without changing its feature scope.

Resolve the automation test overlap by retaining per-test registry isolation and the upstream temporary-root assertion. Windows and Linux registry variables are restored, and WSL discovery is disabled only inside isolated test fixtures so tests cannot touch the real desktop registry.

Validation: all eight automation plugin tests pass; server and UI TypeScript checks pass; git diff --check passes. This conflict-resolution commit is not a final native-release gatekeeper approval.
Keep session rows on one line with colored kind icons, truncated titles and
right-aligned badges. Show direct actions while their measured content fits,
then fall back to an overflow menu without losing keyboard focus or unmounting
an open virtualized row. Restore compact 12px action icons with muted idle
colors and preserve larger touch targets. Apply measured overflow to message
and tool headers rather than a global narrow-column breakpoint.

Add a transcript filter popover with separate visibility and expansion controls,
backed by the same profile-wide preferences as Chat settings. Preserve other
effective settings when customizing a single tool, guard asynchronous saves,
and provide labels in all ten locales. Separate tool presentation metadata from
renderer imports so the shared visibility model can be tested independently.

Extend the 40px timeline alongside the composer through a session-owned portal
mount while retaining compact-layout hiding and the standalone fallback.
Use muted colored timeline icons, interaction-only frames and subtle separators.
Restore stemmed panel and floating-scroll arrows, scoped round controls and
the shared selector chevron transition after moving controls below the prompt.

Keep panel headers at 60px and give right-panel tabs the same height as project
tabs. Reserve the horizontal scrollbar lane without forcing a visible scrollbar
or shifting tabs when overflow appears. Correct active-tab junctions and the
duplicate central header border. Restore internal Status cards with half-opacity
borders instead of framing entire accordion content regions.

Validation: UI typecheck and production build; 12 focused visibility, timeline,
sidebar and drawer tests; 13 Edge/CDP session-action overflow and focus checks;
translation key parity across ten locales; git diff --check. Verify the compiled
UI in an isolated native profile, including tab heights and enlarged junctions,
conditional scrollbars, filter states and Escape focus return, selector rotation,
full-height timeline and muted session actions. Existing desktop processes and
the shared OpenCode daemon were not stopped. Do not merge PR #667 in this commit.
Restore distinct transcript, composer and tool surfaces instead of flattening
messages onto the darkest canvas. Add six soft light and four soft dark
families inspired by documented Zed references, retaining the historical
palette surfaces in a separate picker group. Keep user/agent identity separate
from neutral selection and functional colors, with readable primary and muted
text verified across actual surfaces rather than swatches alone.

Preserve saved custom data while removing the empty default Custom duplicate.
Render Classic edits, keep System automatic, and save System customization as
a named fixed appearance. Await palette writes, retain errors, and keep the
editor swatches consistent when a named preset is deleted. Translate names
and grouping across all ten locales; document reference attribution.

Include the validated session hierarchy follow-up: parent-aligned pixel-rounded
branches at every depth, shorter connectors with corresponding child indents,
and selection/RTL/touch geometry. Place transcript filters at the far right of
the header with the shared icon-button treatment, a compact intrinsic-height
popup, and accessible hidden explanatory text. Attenuate the Sessions title
without changing its typography or validated panel/tab geometry.

Validation: UI typecheck and production build; 69 targeted palette/transcript/
timeline/drawer tests; 17 native palette captures with hover/focus and distinct
transcript/composer checks; 14 native settings checks; eight independent Edge
pointer/RTL/width cases with touch targets at least 40px. The earlier hierarchy
pass covered 584 mouse/touch geometry checks and 13 measured-overflow checks.
Only the isolated profile's UI resources were refreshed: no running desktop
host or shared OpenCode service was stopped or restarted.
Keep dev's Chat item order and translated labels in the shared preferences/popup model. Preserve the UI branch's activation barrier and non-generating command admission while integrating dev's serialized undo interruption/wait/retry and authoritative history fixes. Keep both fork/undo regression coverage and plugin-activation tests rather than choosing one conflict side.

Validation: UI typecheck and 130 targeted tests passed with browser conditions and test-force-exit for store-owned handles. No desktop instance or shared OpenCode daemon was stopped. The merge updates the PR branch only; it does not merge PR #667 into dev.
Separate appearance mode from remembered light and dark palette selections, move palette controls first in General, flatten filtered choices, and preserve legacy custom colors and preset identities across edits and reloads. Restore V1 Classic light and dark defaults and place Classic first in each appearance list.

Unify header and composer chrome through shared shade tokens, keep local subtle hover overlays above selections, and derive YOLO from the main accent without deleting legacy customization data. Simplify surface labels across all locales and align preferences with main panel surfaces.

End the timeline at the composer footer boundary with resize-aware positioning and a blank chrome continuation below. Flatten and align composer buttons, restore the overflow menu width, remove bottom padding artifacts, and add shared separators. Attenuate usage metrics and add accessible colored participant icons to message headers.

Add appearance migration, queued persistence, Classic mapping and browser palette coverage. Latest verification includes 71 passing targeted tests, UI typecheck and production build; earlier 26 browser checks precede final visual refinements. Document validation scope and refresh the beta client lock. Isolated renderer resources were updated without restarting the shared daemon or discarding drafts.
Keep search selection checkboxes on the root inline axis instead of indenting them with child sessions. Reserve selection space independently so expanders and labels retain their hierarchy in both LTR and RTL.

Remove decorative tree connectors and the special first-child offset. Every child now advances by the same pixel-aligned step, while touch expander sizes remain unchanged.

UI typecheck, production build and diff checks passed. Checkbox alignment was checked in mouse/touch and LTR/RTL fixtures before the subsequent connector removal; the final hierarchy change has not had a full browser regression run.
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