25 Commits
Author SHA1 Message Date
randRuFlo 29714a9e4a fix(console,cli): ruflo tui page bar marks the AI page, help says 1-6, policy-trust path never relative to cwd (console 0.43.1)
- tui: the page bar was painted from session.state.view, which the AI page never sets, so on page 6 it kept the previous page lit; it now follows session.page (9 tests, 4 failed first)
- tui --help and the console README said keys 1-5; they are 1-6 and o c s e m a (test holds the help text)
- cli: policyTrustRoot() no longer joins an empty or relative $HOME, which put the anchor mirror and key under the working directory; falls back to the account home or refuses (2 tests, 1 failed first)
- docs: ruflo-tui-walkthrough.svg re-recorded from real frames with the AI page and its ask-first card, 6 AI marked

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-12 12:55:08 -04:00
RuFlo dc38c094ae chore(console): port the SVG demo exporter from Python to Node
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 23:25:09 -04:00
r 2b3dc7f7d4 Merge branch 'codex/console-orbital-theme' of https://github.com/ruvnet/ruflo into pr-4079 2026-10-11 23:24:41 -04:00
RuFlo dc4a519a2a fix(console): Theme Studio boot line, help guide, by-name nav, 0.43.0, no Python, files under 500 lines
- boot log + self-check area + help guide for the themes view; nav test lists it as by-name
- bump console to 0.43.0 (plugin.json UTF-8 restored, CHANGELOG, version.ts, smoke pin)
- remove render-theme-demo.py (repo rule: no Python); README points at frames.json
- generate-console-theme skill: allowed-tools: Read
- split pane icons and startup loads out of pane.ts/controller.ts (both back under 500 lines)

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 23:24:30 -04:00
rUv b23b053d63 feat(console): export theme workflow as native animated SVG vectors 2026-10-11 20:19:04 -07:00
rUv 3fb35a5a0f test(console): add reproducible theme workflow demo and video export 2026-10-11 20:13:12 -07:00
rUv ad5a2ef65d feat(console): add six persistent bundled color presets 2026-10-11 20:07:48 -07:00
rUv 454d3a8bcb fix(console): retain animated Ruflo branding across Orbital pages and resize 2026-10-11 19:54:59 -07:00
rUv beb40deafc feat(console): focus Theme Studio editors beside responsive live previews 2026-10-11 19:28:21 -07:00
rUv 8213cfa1db feat(console): add Theme Studio and Claude/Codex animated preset skill 2026-10-11 19:19:59 -07:00
rUv 1e25990f8f fix(console): adapt Orbital motion to narrow and short pane allocations 2026-10-11 19:11:47 -07:00
rUv d13740908f feat(console): animate Orbital headers and ASCII globe intro 2026-10-11 18:46:30 -07:00
rUv 75f3043a11 feat(console): add optional orbital telemetry theme 2026-10-11 18:32:55 -07:00
randRuFlo 7718a142b4 feat(tui): the AI page: ask Codex (read-only, pinned) or OpenRouter, each question after a card (ADR-489 phase 3)
Page 6. Reuses harness.send and the conversation bridge's sendTo, not a second harness. Host.spawn runs only the pinned Codex 0.162.0
release (never current or PATH), read-only, from a fixed argument allow-list; Host.httpSend sends only https POST to openrouter.ai or a
convoTargets host, never follows a redirect, and a key is read by variable name and never drawn. Enter shows a card of exactly what would be
sent; a lone y answers it only while it was drawn in full (#3983); spend cap from the provider-reported cost. e2e host matrix gets a tui leg
(keyless in CI, live gated). Not in this PR: the workspace-write toggle.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 16:54:16 -04:00
randRuFlo ba6f9273a3 feat(tui): Swarm, Events and Missions pages, page bar and keys, resize, and no Claude-only chrome (ADR-489 phase 2)
Five pages (Overview, Cost, Swarm, Events, Missions) with keys 1-5 / o c s e m / Tab / Shift-Tab, a page bar, a key line that
shortens with the width, clear-and-redraw on resize, a position bar under 60 columns and a notice under 40. Room is left out on
purpose (a message box and Claude sessions this host does not have).

state.isStandalone is the capability flag: on this host the shared chrome is not drawn (no tab bar, footer buttons, Launch,
Ask Claude, Claude control card); a button nobody can press is not drawn, a state chip and a section title are. Missions reads
the ADR-406 record only. Under Claude Code nothing changes. Console 0.42.7.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 16:24:56 -04:00
randRuFlo 11cc8cd648 feat(cli,console): ruflo tui --plain, exit 2 without a terminal, bundle staged for publish, esbuild declared (ADR-489 A-E)
- E: `ruflo tui --plain` prints one plain frame and exits 0; without a TTY and
  without --plain it prints a one-line hint on stderr and exits 2 (no frame).
  Tests for terminal, non-terminal, --plain in a terminal, no raw mode, and
  through the command with the real bundle.
- A: esbuild is a declared root devDependency (^0.27.2, already locked).
- B: v3/@claude-flow/cli/scripts/prepare-publish.mjs builds and stages
  plugins/ruflo-console/dist/tui.mjs so a registry install runs `ruflo tui`.
  Measured: +449,345 bytes on the CLI tarball.
- ADR-489: status Accepted; section 8 records decisions A-E (C: Swarm, Events,
  Missions, Room; D: Codex read-only by default, no danger-full-access, OpenRouter
  https-only to openrouter.ai + convoTargets hosts). Repairs a corrupted table row
  that had pasted copies of the file head into the ADR.
- README: a short ruflo tui section.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 14:07:28 -04:00
randRuFlo f047a545f0 fix(console): fold the Sessions list, honest wording, read budget for first reads, Codex sub-agent lineage
- Sessions list starts folded; jumping from the queue opens it.
- First reads past a pass's byte budget wait for the next pass ("not read yet").
- A Codex sub-agent rollout's trailing parent session_meta is lineage, not a second identity.
- ADR/CHANGELOG/README say discovery spawns nothing; the only write is the four-count summary.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:24:09 -04:00
randRuFlo c53bed71e3 feat(console,mods): session workspace on the Room: attention queue, session browser, preview (ADR-486)
Needs-you queue (approvals, questions, failures, finished-unread) across Claude Code, Codex and Ruflo
sessions, a browser grouped by repository and worktree, and a preview of the selected session. Local,
read-only discovery (no model call, no process); ambiguous identity goes to an unassigned bucket;
finished work clears only after its preview was drawn; transcript text never reaches a model, the
state, the disk or a text answer. ruflo-mods gains an optional counts-only attention row.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:18:27 -04:00
ruv aed428c43e feat(console,adr): ADR management registry, page and mission/loop/swarm integration (ADR-480)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 17:08:41 -04:00
ruv 146febd999 feat(mods): shared toast system with levels, dedupe, persistence and Settings (ADR-477)
One dependency-free policy (canonical in ruflo-mods, byte-identical copies in console,
swarm and protector, checked by scripts/sync-toast-policy.mjs and each smoke.sh): level
prefixes, one washed line of at most 120 characters, 60 s de-duplication, four toasts a
minute per source with errors held and counted, the person's all/important/off setting and
per-source mute (console Settings, mirrored to a file the others read), and a digest of
every toast kept for the console's Events page. All call sites migrated; new toasts for a
mission that finishes or fails and a swarm subagent that fails or a loop that is stuck.

Versions: console 0.37.0, swarm 0.3.4, protector 0.1.1, mods 0.3.16.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-07 12:50:30 -04:00
ruv f80c1584a2 feat(ruflo-console): Project Anatole section in Security & Doctor (0.33.23)
The console half of Project Anatole (ADR-453; the ruflo-protector plugin is on main, default off). A collapsible section on the Security &
Doctor page, in labelled blocks:
- Status: mode, a baseline maturity bar, open alerts by severity, blocked count, degraded, and a line saying the data is reported by the
  mod and unauthenticated;
- Rules: the 13 rules as an aligned table with their OWASP refs, an off/notify/block chip each, hits and acked share (from the last 200
  alerts), "changed from default" and "auto-demoted";
- Actions: run (scan the Claude configuration) and replay (what would have fired), results in the page's Result panel;
- Mode: off/learn/notify/enforce with a sentence on what the current mode does, and reset baseline;
- Open alerts: two lines each, with ack and allow buttons; the Findings meter also counts them, labelled as the mod's report.
Reading is bounded and regular-file-only, every field is whitelisted and cleaned (a hostile file cannot break the page), and rule ids,
fingerprints and alert ids are matched against tight patterns before they can reach a command. Every change goes through the confirm
gate: a mode, rule, ack or allow change is a write; switching to enforce is declared install-class and reset-baseline delete-class, so
Claude's own console tools always wait for the person on them. With the plugin never reported, the section is one install line.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 17:34:19 -04:00
ruv 5c7b0da4f6 feat(console): drive.sh CONSOLE_DRIVE_INSTALL installs a plugin in the throwaway config (0.33.13)
Registers a directory marketplace and installs the named plugin inside the isolated config only, so the Settings view's plugin option rows can be driven live. The real plugins and settings are never touched.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:37:13 -04:00
ruv deaa2220e4 feat(console): scripts/drive.sh drives the console from a headless Claude (0.33.9); isolated config
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 01:48:48 -04:00
ruv c4116f2377 ruflo-console 0.33.2: Room and Mods UX — clickable Mods detail, blocked filter, jump from feed entries
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 21:17:55 -04:00
ruv 3fd850042f feat(ruflo-console): drive.sh — console-drive as a repo script with --expect assertions (0.33.1)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:56:21 -04:00