Dashboard v0.3.0 — terminal :commands and a settings dialog - #14
Merged
Conversation
Brings the fleet dashboard's node shell to parity with the OmnyShell dashboard. A node shell now understands the same colon commands typed at the prompt — the omnyshell built-ins (:info, :tree, :tunnel, :ping, …) plus :ai (an in-terminal agent, proxied through the Hub) and :ide (a terminal IDE on the node). None of it is reimplemented: the command registry is OmnyShell's, wired into the terminal this dashboard already embeds (`commands: null` becomes a real registry). Adds a settings gear in the header opening a dialog — theme, and the AI agent configuration (provider/model/key or Hub default, mode, reply language) that :ai and :ide read. The AI controls are the shared `aiSettingsSection` from omnyshell_web 1.16.0, so both dashboards configure the agent identically. Requires omnyshell_web ^1.16.0 (which makes those pieces public API) and adds command_shield ^1.4.0 (the tool-safety gate :ide uses). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the OmnyServer dashboard's node shell to parity with the OmnyShell dashboard, and adds the settings dialog — reusing shared code from omnyshell_web 1.16.0 rather than duplicating it.
Commands
A node shell (
node/<id>/shell) now understands the same colon commands you type at the prompt:LocalCommandRegistry.withDefaults()(omnyshell package)::info :whoami :os :arch :host :node :capabilities :session :latency :ping :tunnel :tree :detach :clear :exit :help:ai— an agent in the terminal, its provider calls proxied through the Hub (registerAiCommand):ide— a terminal IDE on the node (registerIdeCommand)None of it is reimplemented:
shell_screen.dartchangescommands: nullinto a real registry and passes the context the commands read (client, node metadata for:info, principal, per-node history). The terminal stack is the sameWebShellHostthis dashboard already embedded.Settings
A gear in the header opens Settings: the theme, and the AI configuration (provider / model / your key or the Hub's default / agent mode / reply language) that
:aiand:ideuse. The AI controls are the sharedaiSettingsSectionfromomnyshell_web, so this dashboard and OmnyShell's configure the agent identically — no duplicated UI.Sharing (the "generalize to share" ask)
The reusable pieces were made public in omnyshell_web 1.16.0 (published):
registerAiCommand/registerIdeCommand/AiSettingsControllerbarrel-exported, andaiSettingsSectionextracted intoui_kit(the OmnyShell app now composes it too). This dashboard imports them.Deps
omnyshell_web ^1.15.0 → ^1.16.0; addscommand_shield ^1.4.0(the tool-safety gate:ideuses).Verification
Analyze/format clean; version test passes; the dart2js release build (what the deploy runs) bakes in
:dispatch,:info, the AI section, the settings gear, and the footerDashboard v0.3.0 · OmnyServer v0.15.1.Scope note
These commands live inside a node's shell, not a dashboard-wide palette. The settings dialog covers AI + theme (not omnyshell's terminal-size/text-size controls, which aren't extracted yet).
🤖 Generated with Claude Code