openclaw/ui
Peter Steinberger e069b9dbdd
fix(ui): repair settings titles, scope form-unsafe banner, consolidate advanced settings (#113160)
* feat(ui): repair settings titles, scope form-unsafe banner, consolidate advanced tier

- Advanced/Notifications settings headers rendered raw i18n keys
  (tabs.advanced/tabs.notifications); configPageTitle now resolves through
  the nav registry titleForRoute, deleting the drifting key map.
- Form-unsafe banner is value-aware (only when the user's config has a value
  at a form-unsupported path in the active scope), names the paths, offers an
  Open Raw editor action, and sits in the content column instead of full-bleed.
- Advanced tier collapses to one synced toggle: hidden advanced fields render
  a ghost row that enables the toggle; the Advanced page always reveals and
  hides the toggle; per-section details state and the controlled-open dance
  are deleted; toggle visibility mirrors the renderer's tier split.
- schema.tags no longer tags facet-less paths as "advanced" (common fields
  like update.channel wore a lying chip); the chip is no longer rendered in
  form rows while tag:advanced search keeps working.

* fix(config): dev bootstrap writes canonical agents.entries; finish stale agents.list sweep

- openclaw gateway run --dev failed on a fresh state dir: the bootstrap wrote
  the retired agents.list array and validation rejected its own config
  (Unrecognized key: list). It now writes the keyed agents.entries record;
  new dev.test.ts validates the written shape against the zod schema.
- Revive the dead gateway hot-reload rule: prefix agents.list never matched
  canonical config diffs, so per-agent heartbeat edits fell through to the
  agents:none tail rule; the rule now matches agents.entries.
- config set replacement protection moves from the dead agents.list array
  to the agents.entries map (joins plugins.entries/auth.profiles family).
- Sweep remaining stale agents.list config-path strings in hints, fix-it
  messages, elevated gates, doctor hints, audit text, and type docs to
  agents.entries.*; RPC ids, the internal list projection, and doctor
  legacy-migration references intentionally keep the old name.

* test(ui): derive nav i18n audit from route registry; fix stale bootstrap hint assertion

- Knip flagged navigationCopyEntries (test-only export); the audit now walks
  ALL_ROUTES through prod titleForRoute/subtitleForRoute and rejects raw
  dotted-key output, so no export exists solely for the test.
- commands-context-report expected the retired agents.list[] hint wording.

* fix(config): align rebase resolution with main's roster-aware diagnostic

- tool-policy-diagnostic: keep main's test expectations (dotted
  agents.entries.<id> paths from the roster-aware implementation); our
  pre-rebase bracket-style assertions no longer match any code.
- Reapply the placeholder sweep the conflict resolution dropped:
  generic agents.list[] fallbacks in tool-policy-diagnostic and the audit
  sandbox-mode hint now say agents.entries.*.
2026-07-25 00:51:57 -07:00
..
config feat(ui): surface queued-outbox counts in composer hint, session rows, and offline footer (#112649) 2026-07-22 10:53:22 -07:00
docs/design-system refactor(ui): unified settings design language across all Control UI settings surfaces (#106470) 2026-07-13 08:40:58 -07:00
node_modules/@openclaw feat(agents): add managed git worktree lifecycle (create/provision/snapshot/restore/GC) (#100535) 2026-07-06 05:24:58 +01:00
public feat(ui): add Apps & extensions page to the Control UI (#110563) 2026-07-18 09:52:34 +01:00
src fix(ui): repair settings titles, scope form-unsafe banner, consolidate advanced settings (#113160) 2026-07-25 00:51:57 -07:00
.gitignore feat(logbook): automatic work journal plugin with Control UI timeline tab (#99930) 2026-07-05 11:50:44 -07:00
AGENTS.md fix(ui): prevent generated locale rebase conflicts (#109393) 2026-07-16 18:48:20 -07:00
CLAUDE.md
index.html fix(ui): prevent dashboard startup flash (#113558) 2026-07-25 00:49:03 -07:00
package.json chore: update dependencies and migrate major contracts (#112963) 2026-07-23 21:21:01 -07:00
vite.config.ts feat(ui): format international phone numbers for display (#112400) 2026-07-21 17:10:25 -07:00
vitest.config.ts fix(ui): prevent cross-file mock leakage in Control UI tests (#111554) 2026-07-19 15:38:50 -07:00
vitest.node.config.ts test(ui): stabilize Control UI suite routing 2026-07-04 16:38:36 -07:00