Repository navigation
feat(console): easier navigation β real Back, one name per page, /ruflo go, instant refresh (0.43.0) - #4039
Draft
socrates6969 wants to merge 16 commits into
Draft
socrates6969 wants to merge 16 commits into
socrates6969 wants to merge 16 commits into
Conversation
Back is now a real history: setView pushes the page it leaves (capped at 20, no
duplicate steps, skipped with { replace: true }), and Back pops, skipping
entries whose page or agent no longer exists, falling back to the menu (bbs) or
Overview. The breadcrumb names the page Back returns to.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Trail entries are { view, agentId? }: leaving the drill-down records its agent,
Back restores it through drill() and skips an entry whose agent is gone from the
snapshot. The liveness check no longer reads the claims cursor.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The engine gives a hotkey to the later of two buttons that share it, and the confirm card is drawn above the page body, so Timeline's "later" button (n) won the key from the card's Cancel. While an ask is pending, the page body is drawn through a kit that drops y/n hotkeys from page buttons (clicks, keys, labels, focus order and layout are unchanged). tests/key-shadow.spec.ts checks every view, with an ask raised anywhere and on the page itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hints that named a page and its key were hard-coded and had drifted: "Swarm (2)" (Swarm is 3) and "Cost (9)" (Cost is c; 9 is Memory) on the agent, memory and alerts pages. keyLabel(id) in state.ts now builds "Cost (c)" from VIEWS, and those hints use it. The /ruflo help no longer promises terminal keys the Stop/New/Clear buttons do not have, and no longer presents "b back" as global (it is back on the agent page only; the breadcrumb has a Back button). key-labels.spec.ts scans hooks/** for "<page label> (<key>)" and checks each against VIEWS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"wait, or stop it (s)" told people to press a key the terminal does not have. It now says "press β Stop", and key-labels.spec.ts checks that no terminal message names a key for Stop, New session or Clear. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦ help NAV_GROUPS is now the only grouping. The main menu's boxes are built from it (SWARM, MIND, SAFETY, NETWORK, TOOLS, in that order; the menu keeps its sub-sections as a second level in MENU_SECTIONS, and a page the split forgets is added to the group's last section), and the Help index lists Start, the same five groups, then Console. Guides for a page are filed under that page's group. The accent table is keyed by the same names. One label per page, the VIEWS one, in the menu, tabs, palette, help text and boot log: Claims (was Claims Board), Plugins (was Plugins & Mods), Swarm, Memory, Cost, Room, Terminal, Events, Timeline. The page that was "Learning Lab" and "Neural" is now Neural Lab, so it no longer reads like Learning (7). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦s Neural Lab "learning lab", "memory lab", "claims board", "plugins & mods" and the other menu-only names stopped resolving when the labels were unified. viewOf now falls back to a small explicit table (RETIRED_NAMES), and /ruflo <phrase> tries the full page name before its first word, so "/ruflo learning lab" opens Neural Lab. The key help line says "l neural lab". The retired-name spec is now case-insensitive with word boundaries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/ruflo swarm topology and /ruflo agent timeline are the verbs' own arguments again: a multi-word page name is only tried when the first word is not one of parseRuflo's verbs. VERBS is the list, and a spec keeps it equal to the switch's cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
viewOf now finds a page by a label prefix or the words of its names under one ranked rule (exact, alias, id prefix, label prefix, all words); a tie at the best rule is ambiguous and opens nothing, and a single letter stays the page key. /ruflo go <page> always opens a page and lists close pages when none fits; mission and catalog output point at it. The palette lists a page by the same rules and ranks a page whose label starts with the query first. The menu prompt reads names through viewOf, so it gains the same matching. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refresh (r, the footer button, the icon, the menu prompt's r) now only re-reads and probes: it no longer replays the BBS boot screen that hid the page for several seconds. The intro is Settings -> Replay boot. Below 44 columns the pane has no tab or footer buttons, so page keys and p / x / r / h were dead. The pages and the footer actions are now drawn as hidden buttons (the technique the nav card and a full footer already use), without y / n while an ask is pending. The unreachable flat tab bar is removed; the navigation-style setting stays (the nav card reads it). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦gent page Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦inal does not have Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦me test The retired-name regex was built in a plain template literal, so \w became w and the escape class was malformed. It now uses String.raw and a proper escape, has a planted-case test, and bans the capitalised 'The Room'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
β¦header says what it tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Adversarial review at
|
This was referenced Oct 12, 2026
This branch has not been deployed
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.
Draft until a manual check in a live console: menu β Swarm β an agent β "β Back" Γ2 lands on the menu, at 40 and at 160 columns;
y/non the Timeline page with a confirm card showing;/ruflo go catalog;/ruflo learning lab.Problem
Moving around ruflo-console 0.42 is harder than it needs to be:
n("later") is drawn after the confirm card's Canceln, so pressingnto cancel pans the timeline instead.s/o/zkeys that do not exist; help said "b back" as if it worked on every page.viewOfmatched only an id, key, exact label or id prefix, so "catalog" at the menu prompt found nothing;/ruflo catalogand/ruflo missionare other commands.Changes (0.43.0)
ui.closecannot tell Esc from the close mark, so Esc and the close mark are unchanged.y/nhotkeys (withoutAnswerKeys), soy/nalways answer the card (checked for every view).keyLabel(id)fromVIEWS), terminal/help wording fixed.NAV_GROUPSdrives the menu, tabs and the help index; each page has one label everywhere ("Neural Lab", "Claims", "Plugins", "Room"). Old names still work at the menu prompt and with/ruflo(RETIRED_NAMES).viewOfprecedence exact id/key/label β retired name β id prefix (3+) β label prefix β all words; ambiguity β none (a single letter is only ever a key). New/ruflo go <page>(answers with close matches when nothing or several match)./rufloverbs always win over page names (VERBS, checked against the switch), so/ruflo swarm topologyand/ruflo agent <id>keep their meaning. The palette lists pages and ranks a page whose label starts with the query first./ruflo dumptakes a full page name.p/x/r/hvia hidden buttons (drawn before the page, so a page's own key still wins).Tests
New specs:
history,back-button,key-shadow,key-labels,group-scheme,commands-verbs,find-by-name,refresh-instantβ 132+ tests, each written red first where it pins a fix. Related nav/menu/help/palette specs pass. On this Windows checkout the full vitest suite fails the same set before and after (environment-only: sparse checkout without sibling plugins, symlink EPERM, Windows path bugs fixed separately in #4036,claude-code/testingnot importable under vitest);events-sweephotkey tests occasionally time out under full-suite load and pass alone.claude plugin validate plugins/ruflo-consolepasses.Known follow-ups
plugin.jsondescription still says "The Room lists the sessionsβ¦" (page is "Room")./ruflo go agentopens Timeline via "agent timeline"); the typed side is not tokenised like page names (what's newwith a straight apostrophe β close-matches list).register.ts/pane.tsand the version are resolved by whichever merges second.π€ Generated with Claude Code