EPIC: Rebuild the Symbolics WebUI without sacrificing plugin-level UI control #161
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/a0-symbolics#161
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Design and implement a modern Agent Zero WebUI while preserving the defining capability that plugins can materially extend and modify the interface.
This is not just a visual reskin. The current WebUI has accumulated strong plugin contracts (
<x-extension>, JS extension hooks,<x-component>, modal/surface APIs, runtime extension manifests) but the core shell/navigation does not scale cleanly to large chat collections and is difficult to evolve as a coherent product surface.Design principles
Modern core experience
Plugins remain first-class
A redesign must not turn plugins into a few decorative buttons. Plugins need a documented, stable ability to contribute to or replace meaningful regions of the UI.
Preserve existing extension IDs/hooks through a compatibility layer and define a public slot/surface contract for at least:
Plugins should be able to register capabilities declaratively from the existing runtime extension manifest rather than monkey-patching core DOM.
Performance is an API requirement
Plugin extension points on large lists or streaming DOM paths need explicit performance contracts. A plugin must not force the core to re-sort 10,000 chats once per row or rescan the whole document on every token.
Compatibility
Current contracts under
webui/AGENTS.mdandwebui/js/AGENTS.mdare migration constraints:<x-extension id="...">breakpointscallJsExtensions()hook names/mutable contexts<x-component>loaderDo not require all plugins to rewrite on day one. If the core shell architecture changes, ship a compatibility adapter and explicit deprecation/version policy.
Framework choice is secondary to the plugin ABI. Do not casually rewrite to React/Vue/etc. if doing so strands the existing extension ecosystem; any framework change requires an ADADR design proving compatibility, performance, and migration.
2026-08-24 full-UI redesign directive
This epic is now a whole-product visual and interaction redesign, not incremental cleanup.
Use Impeccable-style design discipline as the working quality bar: establish clear product hierarchy first, avoid generic dashboard/card soup, use deliberate typography/spacing, keep decoration subordinate to function, then run explicit critique/audit/hardening/polish passes before calling a surface done.
Product direction
Symbolics should feel like a serious symbolic-agent workstation rather than an upstream Agent Zero skin.
The default desktop composition should prioritize:
Do not permanently consume large areas for controls that are rarely touched. Prefer compact rails, command surfaces, progressive disclosure, and contextual panes.
Required redesign surfaces
Symbolics-specific status
The UI should surface symbolic runtime state without flooding the user with implementation detail.
Useful inspectable status includes:
Detailed traces belong behind an inspector/developer surface, not the main chat chrome.
Developer/debug integration
Developer Settings must include the raw debug capture controls from #59 and make the danger/state visually unambiguous. When raw I/O capture is enabled, show a persistent but compact indicator so the user cannot forget sensitive logging is active.
Accessibility and interaction quality
Design verification
A substantial redesign slice is not done from code inspection alone. Capture/render the actual UI and perform a design QA pass against the intended hierarchy and states. Validate both dark and light modes and at least one narrow mobile viewport.
Architecture work
Use the repository ADADR control plane (
roam/, once #17 lands) to define:Acceptance
x-extension/ JS hooks continue working through documented compatibility or are migrated with an explicit supported path.Mirrored from
lost-rob0t/a0-symbolics#23via tracker sync.