Skip to content

fix(ui): resolve 13 native desktop usability audit findings - #3539

Merged
bobleer merged 13 commits into
GCWing:mainfrom
bobleer:bob/uiux-audit-fixes
Oct 23, 2026
Merged

bobleer merged 13 commits into
GCWing:mainfrom
bobleer:bob/uiux-audit-fixes

Conversation

@bobleer

@bobleer bobleer commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fix 13 findings from the native desktop UI/UX audit, with one commit per finding. Empty and failed states now explain what happened and offer valid next steps; settings, search, calendar and agent creation are accessible and consistent with the active locale and host.

Audit item Problem and resulting behavior
10 An unused session looked like missing telemetry. Show a start-state only when there is no recorded activity, including legacy/missing and serialized-null file counts; keep unavailable telemetry distinct.
17 Settings labels stopped at layout wrappers. Associate labels and descriptions through the shared field context while preserving explicit labels and nested fields.
18 Calendar/search semantics hid actionable items from the native accessibility tree. Expose calendar rows, day buttons and search result cells; support calendar keyboard movement and return focus to its trigger.
19 The overview shortcut collided with macOS app switching. Default to Mod+Shift+E, detect reserved assignments, label conversation search, and retain existing user bindings.
20 Search only reported a generic partial failure. Show source, device/workspace, path and cause; retry failed providers without losing the query or healthy results; fence replies across device changes.
21 Typing Latin characters switched capability results to English. Use the active UI locale for labels/context while retaining bilingual search aliases.
22 Skill failures were confined to notifications. Keep scan diagnostics in the library with source/path/cause, copy, supported reveal and retry actions; healthy skills remain usable.
27 Creation started with an immutable ID and a blank prompt. Start with name and task goal, suggest an editable ID, offer a goal-based prompt skeleton and collapse advanced permissions; existing IDs remain fixed, and ID generation also works in WebViews without randomUUID.
33 Unsupported WSL could be selected before discovering the failure. Gate selection on a capability probe routed through the active host, with checking/unavailable explanations and retry.
35 Clean repositories showed an empty commit workflow. Improve the retained working-copy component with repository/host identity, ahead/behind state and history/branch actions; pushing remains explicit. Preserve upstream #3538’s retirement of the standalone panel entry points and shortcuts.
36 The empty content pane had no next step. Offer workspace-scoped file browsing, terminal creation, valid recent-content reopening and hiding; disable actions when the workspace context is unavailable.
38 A keyword whitelist rejected valid completed Mermaid blocks. Let Mermaid parse static diagrams, show real parse failures, and reserve waiting state for streaming content.
39 Action labels, built-in agent names, session terminology and durations drifted across surfaces. Fix the quick-action namespace, localize built-in display names without changing IDs/custom labels, and share a locale-neutral duration policy between web and mobile.

Type and Areas

Bug fix / UI/UX. Shared design-system controls, Web UI, mobile duration presentation and i18n documentation. No Rust runtime, persisted identifier, or wire-protocol changes.

Motivation / Impact

These changes address the selected audit findings together while keeping each reviewable and revertible in its own commit. Host actions continue through existing transport/service owners. Legacy shortcut settings and agent IDs remain readable; user-authored quick-action labels are preserved.

Verification

AI-assisted; tested locally with automated coverage and native macOS debug verification. Live remote/device end-to-end coverage is not claimed.

  • Final CI run — passed on 9e16ddc3d10f86c65ba482111ca181c706b1d7f9: frontend lint/build, 1,075 Web UI test files with 12,092 passing tests, mobile checks, and the three-platform Rust/CLI matrix. Repository Object Sizes also passed; impact-unselected jobs were skipped by the existing workflow.
  • pnpm run check:web — passed after native QA fixes and again after integrating upstream fix(ui): remove Git panel entry points and shortcuts #3538.
  • Upstream integration: 57 focused tests passed for the working-copy component, capability search/activation and shortcuts. The final revision passed the complete frontend and three-platform Rust/CLI CI matrix.
  • pnpm run i18n:audit — passed, zero warnings.
  • pnpm run theme:color-audit:all — passed; no baseline increases.
  • pnpm --dir src/web-ui exec node scripts/run-vitest.mjs run … — all 28 changed test files passed, 346 tests. Additional focused navigation, terminal bridge, project creation, field controls, localization and icon tests passed during implementation.
  • ESLint on all changed Web UI TS/TSX files — no errors (test files are ignored by the repository configuration).
  • pnpm --dir src/mobile-web exec tsc --noEmit and pnpm --dir src/mobile-web run test:ui-components — passed; 18 UI tests.
  • pnpm --dir src/web-ui run icons:check and the icon/startup tests — passed.
  • node scripts/check-git-object-sizes.mjs --base upstream/main --head HEAD and git diff --check — passed.
  • Ran pnpm install and pnpm run desktop:dev after the 13 initial fixes; the Rust debug build completed. Native QA used that same debug binary in a local app bundle with the Vite dev server and isolated development storage.
  • Native QA covered unused-session usage, named settings controls, searchable accessible result rows, calendar arrow/Escape focus behavior, WSL gating on macOS, clean/ahead Git state and history navigation, pane file/terminal actions, valid block-beta/flowchart plus invalid Mermaid, localized quick actions and task agents, appearance copy, and agent creation/template/save/reopen with fixed existing ID.
  • For search recovery, temporarily made a disposable test workspace unavailable: diagnostics identified the source/path/cause, healthy results remained, and restoring the directory plus retry recovered file results without clearing the query.
  • For skill recovery, repaired a malformed skill in that disposable workspace and retried: its diagnostic cleared while the healthy catalog remained usable.

Remote scenarios: remote-workspace unsupported states/routing and Peer Device activation fences are covered with local fixtures, not live hosts. Mobile presentation was type-checked and component-tested, not exercised through live Remote Connect. Detached Dispatch protocol/runtime behavior is unchanged and was not exercised live.

Reviewer Notes

The optional full pnpm run design-system:check currently fails two pre-existing flow-chat catalog parity tests (AgentDelete/AgentInterrupt registry mismatch and Task/AgentControl/ListWorkspaces presentation catalog coverage). Both were reproduced on the unmodified base checkout; focused shared-control tests passed. No assertions or audit baselines were weakened.

The Git native verification above predates upstream #3538, which retired its standalone panel entry points during CI. This PR preserves that retirement and tests the retained component without restoring navigation.

Native before/after evidence is retained locally with the UI audit and verification captures. The PR does not add generated screenshots or temporary process artifacts to the repository.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@bobleer
bobleer force-pushed the bob/uiux-audit-fixes branch 2 times, most recently from 6a8bcfb to d9c335a Compare October 23, 2026 13:43
@bobleer
bobleer force-pushed the bob/uiux-audit-fixes branch from d9c335a to 9e16ddc Compare October 23, 2026 15:52
@bobleer
bobleer merged commit 281414e into GCWing:main Oct 23, 2026
13 checks passed
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