Skip to content

Figma Redesign Audit (2026-02-08)

Scope

  • Branch: frontend-overhaul
  • Diff size: 32 files changed, 2382 insertions(+), 1589 deletions(-) (tracked)
  • Untracked files: 61 (many design screenshots + new frontend directories)
  • Focus: regressions, mock-data leftovers, dead code, localization/LOC issues, runtime validation

Validation Executed

Backend checks

  • go test ./... ✅ pass
  • golangci-lint run ✅ pass (0 issues)

Frontend checks

  • npm run lint ❌ fail (15 errors, 3 warnings)
  • npm run check ✅ pass (0 errors, 13 warnings)
  • npm run test ❌ fail (4 failed, 324 passed)
  • npm run build ✅ pass (with warnings)

Runtime validation (Playwright + running Wails dev app)

  • App loaded at http://127.0.0.1:34115
  • Navigated through:
  • Workset Hub
  • Command Center
  • Engineering Cockpit
  • PR Orchestration
  • Skill Registry
  • Settings sections (Workspace, Agent, GitHub, Repo Catalog, Templates)
  • Command Palette (Meta+K)
  • Console/runtime errors observed:
  • 404 on favicon.ico (low severity)
  • Command palette button click blocked by top drag overlay (see High-4)

Findings (Severity Ordered)

High

  1. Onboarding flow is still mock-wired and drops user intent.
  2. Evidence:
  3. Simulated progress via setTimeout instead of backend orchestration: wails-ui/workset/frontend/src/lib/components/views/OnboardingView.svelte:165
  4. Draft/start path does not fully wire to real create flow: wails-ui/workset/frontend/src/lib/components/views/OnboardingView.svelte:181, wails-ui/workset/frontend/src/App.svelte:210
  5. Seed data is hardcoded catalog/registry: wails-ui/workset/frontend/src/lib/view-models/onboardingViewModel.ts:23, wails-ui/workset/frontend/src/lib/view-models/onboardingViewModel.ts:68
  6. Impact: redesign UI appears production-ready but behaves like demo scaffolding.

  7. Skill markdown rendering is XSS-prone.

  8. Evidence:
  9. Raw {@html} sinks flagged by eslint rule: wails-ui/workset/frontend/src/lib/components/views/SkillRegistryView.svelte:570, wails-ui/workset/frontend/src/lib/components/views/SkillRegistryView.svelte:584
  10. Markdown converted by marked and rendered directly: wails-ui/workset/frontend/src/lib/components/views/SkillRegistryView.svelte:160
  11. Impact: malicious/unsafe markdown can execute script in renderer context.

  12. Repo diff flow is functionally regressed from Command Center.

  13. Evidence:
  14. onSelectRepo declared but never used: wails-ui/workset/frontend/src/lib/components/views/CommandCenterView.svelte:44
  15. App still expects repo selection to drive detail view: wails-ui/workset/frontend/src/App.svelte:380
  16. Impact: App-level RepoDiff route is effectively unreachable via redesigned Command Center interactions.

  17. Context action button is blocked by draggable titlebar overlay.

  18. Evidence:
  19. Playwright click failure: .titlebar-drag intercepts pointer events
  20. Overlay definition: wails-ui/workset/frontend/src/App.svelte:276
  21. Overlay styling (position: fixed, high z-index): wails-ui/workset/frontend/src/App.svelte:507
  22. Blocked control lives in ContextBar: wails-ui/workset/frontend/src/lib/components/chrome/ContextBar.svelte:58
  23. Impact: visible command palette button is not reliably clickable (keyboard shortcut still works).

Medium

  1. PR orchestration remains partly mock-derived from repo state.
  2. Evidence:
  3. PR titles/status synthesized from repo data: wails-ui/workset/frontend/src/lib/view-models/prViewModel.ts:40, wails-ui/workset/frontend/src/lib/view-models/prViewModel.ts:47
  4. PR action hooks are dead/no-op: wails-ui/workset/frontend/src/lib/components/views/PROrchestrationView.svelte:78, wails-ui/workset/frontend/src/lib/components/views/PROrchestrationView.svelte:85
  5. Impact: PR surface can mislead users and hides missing backend wiring.

  6. Open PR metrics are placeholder values.

  7. Evidence:
  8. Hardcoded openPrs: 0: wails-ui/workset/frontend/src/lib/view-models/worksetViewModel.ts:96
  9. CommandCenter stat placeholder: wails-ui/workset/frontend/src/lib/components/views/CommandCenterView.svelte:79
  10. WorksetHub aggregates this into visible stats: wails-ui/workset/frontend/src/lib/components/views/WorksetHubView.svelte:165
  11. Impact: incorrect dashboard stats.

  12. Dead controls remain in active UI.

  13. Evidence:
  14. View Logs button without handler: wails-ui/workset/frontend/src/lib/components/views/PROrchestrationView.svelte:1165
  15. CommandCenter locals unused (hasSummary, files): wails-ui/workset/frontend/src/lib/components/views/CommandCenterView.svelte:385
  16. Impact: maintenance overhead + misleading affordances.

  17. Settings redesign broke existing tests and naming contracts.

  18. Evidence:
  19. Missing Built With + Wails text in About tests:
    • src/lib/components/settings/SettingsPanel.about.spec.ts failures
  20. Sidebar label expectation mismatch (Repo Registry vs Repo Catalog):
    • src/lib/components/settings/SettingsSidebar.spec.ts:59
  21. Impact: test suite failing; behavioral/text contract drift not reconciled.

Low

  1. Workspace description persistence lacks normalization semantics.
  2. Evidence: pkg/worksetapi/workspaces_ui.go:80 stores raw input, including whitespace-only values.
  3. Impact: inconsistent values in UI/state.

  4. SetWorkspaceDescription may not update activity timestamp.

  5. Evidence: no LastUsed update in description setter: pkg/worksetapi/workspaces_ui.go:80
  6. Impact: stale activity ordering if LastUsed is intended as mutation activity.

  7. Localization gaps (l10n).

  8. Evidence:
  9. Hardcoded English relative time labels: wails-ui/workset/frontend/src/lib/view-models/worksetViewModel.ts:30, wails-ui/workset/frontend/src/lib/view-models/prViewModel.ts:30
  10. Hardcoded bucket/group labels (Today, This Week): wails-ui/workset/frontend/src/lib/view-models/worksetViewModel.ts:134
  11. Impact: not localizable; pluralization/time-grammar correctness risk.

  12. Repo contains large untracked screenshot artifacts.

  13. Evidence: 61 untracked files, mostly .png captures in project root.
  14. Impact: high noise floor for review, risk of accidental commits.

Lint/Test Failure Inventory

npm run lint key failures

  • Unused/dead vars:
  • wails-ui/workset/frontend/src/lib/components/SettingsPanel.svelte:26
  • wails-ui/workset/frontend/src/lib/components/views/CommandCenterView.svelte:42
  • wails-ui/workset/frontend/src/lib/components/views/OnboardingView.svelte:27
  • Unsafe HTML rendering:
  • wails-ui/workset/frontend/src/lib/components/views/SkillRegistryView.svelte:570
  • wails-ui/workset/frontend/src/lib/components/views/SkillRegistryView.svelte:584
  • Debug logging left in production paths:
  • wails-ui/workset/frontend/src/lib/components/RepoDiff.svelte:397
  • wails-ui/workset/frontend/src/lib/components/views/CommandCenterView.svelte:159
  • wails-ui/workset/frontend/src/lib/components/views/PROrchestrationView.svelte:289

npm run test failing suites

  • src/lib/components/settings/SettingsPanel.about.spec.ts
  • Missing expected text: Built With, Wails
  • src/lib/components/settings/SettingsSidebar.spec.ts
  • Missing expected text: Repo Registry

Cleanup Task Breakdown (Prioritized)

Track A: Blockers (merge gate)

  1. Replace mock onboarding init path with real backend create pipeline.
  2. Wire OnboardingDraft from OnboardingView through App.svelte to create API call.
  3. Remove setTimeout progress simulation; consume real progress state.
  4. Include description/template/repo selections in persisted create payload.

  5. Eliminate unsafe markdown rendering in Skill Registry.

  6. Add markdown sanitization (DOMPurify or equivalent) before {@html} sinks.
  7. Keep lint rule svelte/no-at-html-tags green.

  8. Restore repo-detail navigation from Command Center.

  9. Wire onSelectRepo(activeWorkspaceId, repo.id) from repo list row/card action.
  10. Add component test for selecting a repo from Command Center and showing detail view.

  11. Fix click interception from drag overlay.

  12. Preferred: make ContextBar draggable and explicitly no-drag interactive buttons.
  13. Alternative: set pointer-events: none on .titlebar-drag.
  14. Add Playwright check for clickable command palette trigger.

Track B: Correctness + fidelity

  1. Replace placeholder PR stats and PR list synthesis with real data source.
  2. Remove no-op action props and dead buttons (View Logs, unused handlers).
  3. Normalize/validate workspace description input; define LastUsed semantics and test it.
  4. Resolve Settings text contract changes by either:
  5. updating specs to the new UX language, or
  6. restoring previous labels where compatibility matters.

Track C: Quality and maintainability

  1. Clear all lint errors/warnings in redesign scope.
  2. Address Svelte warnings (unused CSS selectors, a11y label association).
  3. Convert relative-time and grouping labels to i18n-ready format (Intl.RelativeTimeFormat + strings catalog).
  4. Move screenshot artifacts into a dedicated docs/assets folder or remove from worktree.

Suggested Execution Order

  1. Track A (A1-A4), then rerun frontend checks.
  2. Track B (B1-B4), then update/add focused tests.
  3. Track C cleanup before merge freeze.

Exit Criteria

  • npm run lint passes with zero errors in redesign files.
  • npm run test passes (including settings suites).
  • npm run check has no new warnings in touched files.
  • Playwright flow confirms:
  • command palette button click works,
  • onboarding creates a real workset from selected draft,
  • command center opens repo details,
  • PR metrics reflect actual data source.