Changelog
Release notes and shipped capabilities.
Unreleased
- Added a frontend generation strategy layer so website/UI prompts now carry a structured design brief: site type, archetype, audience, tone, content mode, asset policy, and anti-slop guardrails.
- Added a dedicated frontend design critique pass for mutated website/UI turns, separate from Sentinel code review, so Waterbrother can flag generic template output, fake credibility elements, placeholder-image dependence, and weak visual direction.
- Added tag-driven npm publishing via
.github/workflows/publish.yml.
- Updated install docs for the live package:
npm install -g @tritard/waterbrother.
- Documented the partner release flow using the repository
NPM_TOKEN secret and GitHub Actions.
2026-03-13
npm distribution prep
- Tightened
package.json metadata for npm publishing, added a project LICENSE, and limited shipped files to the CLI runtime payload.
- Updated
waterbrother update and /update so source clones use git pull plus checks while npm-installed users upgrade through a global npm install.
- Reframed README and install/update docs around npm-first onboarding for end users while keeping the source-install path for contributors.
Website redesign
- Reworked the public docs site into a near-black, x.ai-inspired visual system with luminous hero lighting, darker glass surfaces, stronger code blocks, and higher-contrast navigation and card styling.
- Reframed the landing page so the homepage reads like a product surface instead of a generic docs splash: sharper hero copy, stronger onboarding/MCP/production cards, and a cleaner quick-start story.
File-listing + cleanup UX refinements
- Leaving
auditor mode now unpins the reviewer profile and restores the mode-default profile (for example guide returns to coder unless you explicitly choose another profile).
- Added a deterministic local git-history path for prompts like
any ui changes today?, so Waterbrother can answer from recent commits without model-mediated shell probing.
- Default terminal output is quieter: normal trace mode no longer prints turn summaries, no-tool trace timelines, or generic
thinking... / running exact shell command... banners.
- Manual interrupts now use neutral copy (
Enter a new prompt or command when ready.) instead of implying the model did something wrong.
- Read-only file tools can now inspect
~/Desktop, ~/Downloads, and ~/Documents directly.
- Added macOS-friendly aliases for those locations:
/desktop, /downloads, and /documents.
- Tightened agent guidance for simple file-list requests so responses stay literal instead of drifting into editorial summaries.
- Tightened agent guidance for cleanup and organization requests so Waterbrother asks one focused question at a time before proposing moves.
- Default trace mode is now quieter during long turns; repeated run-state heartbeat lines are shown only in verbose trace mode.
- Approval prompts now support keyboard-first choices:
Enter/y approve once, p saves a session approval rule for the current shell-command prefix or tool, and Esc denies with optional guidance.
- Added
/approvals plus session-approval summaries in /status so saved shell-prefix and tool rules are inspectable.
- Styled approval prompts as bordered blocks with the default action highlighted.
- Added arrow-key row selection inside approval prompts.
- Added a compact footer rules indicator when session approval rules are active.
- Stopped read-only turns from inheriting unrelated
git diff files into receipts.
- Collapsed normal-mode traces for one-tool success cases to a single
tool:ok line.
- Added
receiptMode / --receipts auto|off|verbose and interactive /receipt-mode.
- Default receipt mode now suppresses noisy receipt lines for minimal read-only turns.
- Added
/run <prompt> as an explicit slash alias for ordinary chat turns.
- Cleared the spinner row before long-running
still working notices so trace output no longer collides with the animated bar.
- Mutating-turn receipts now diff against the turn checkpoint snapshot, which prevents unrelated pre-existing repo changes from leaking into
files, diff, and review summaries.
- Single-tool
node --check success turns now render as a terse one-line result (path: syntax ok) instead of a markdown-heavy assistant paragraph.
- The terse
node --check renderer now also applies when the model does harmless read-only prep work before the shell check.
- Tightened inline markdown stripping so plain terminal answers are less likely to leak emphasis, link, or strike-through markers.
- Multiline pasted input now stays in the interactive buffer until explicit
Enter, shows a placeholder like [Pasted Content N chars] in the prompt row, and no longer auto-submits on pasted newlines.
- Removed the terminal renderer's special handling for short
**bold-only** lines so replies like **Yes.** no longer preserve markdown emphasis in chat output.
- Hardened raw-terminal multiline paste capture so pasted newline bursts stay buffered as input content and only explicit
Enter submits the turn.
- Paste capture now consumes raw terminal data before keypress translation and briefly suppresses submit events after a pasted block, reducing accidental auto-send in Apple Terminal.
- Interactive assistant output no longer streams raw markdown fragments; terminal replies are buffered and rendered through the plain-text formatter so emphasis markers are not leaked during streaming.
- Explicit absolute or
~/ paths in read-only inspection prompts are now exposed to built-in file/search tools for that turn, reducing unnecessary shell fallback on repo architecture requests.
- Refreshed terminal polish with semantic trace pills, stronger footer and border contrast, a styled pasted-content chip, and updated approval-block accents.
- Reworked the docs site visual system in
assets/styles.css with motion tokens, stronger heroes, a glass topbar, richer cards, and cleaner install/onboarding presentation.
- Selectively forward-ported safe UX additions from PR #4 without taking the risky approval or mention changes:
/cost, /fork, /diff, and headless pipe mode via -p / --output-format text|json|stream-json.
- Hardened two production-readiness blockers: session saves now use atomic temp-file writes plus rename, and cwd sandbox checks now canonicalize real paths to block symlink escape by default.
- One-shot
exec / review interrupts now abort cleanly on Ctrl+C, terminate the child shell process tree, and persist the session in error/interrupted state instead of leaving stale planning metadata behind.
- Submitted user turns are now persisted before model/tool execution begins, so forced-kill recovery can resume from the actual last prompt instead of an empty planning shell.
- Blocked tool results now short-circuit into a direct assistant reply instead of re-entering the tool loop after a denied approval.
- Approval prompt cleanup now pauses stdin correctly, which fixes the one-shot hang after denied approvals.
- Terminal assistant output and live trace labels now sanitize ANSI escape sequences, carriage-return overwrite, and other control characters before rendering.
- Concurrent one-shot sessions were locally validated to keep distinct session ids, prompts, tool outputs, and assistant replies without cross-session bleed.
- Session saves now write lightweight metadata sidecars, so
/sessions and resume selection no longer need to parse full multi-megabyte transcripts in steady state.
- Synthetic long-session validation now shows steady-state
listSessions(5) around 5 ms even with ~2.9 MB session files present.
- Added
npm run soak:long-session to seed a large synthetic session, benchmark save/load/list behavior, and optionally run a real resume probe on top of that session.
- The long-session soak harness now supports bounded live
resume probes via --resume-timeout-ms, so stalled resume tests fail cleanly instead of hanging indefinitely.
- Fixed non-TTY one-shot stdin handling so supervised
resume runs no longer stall before loading the session.
- Large resumed sessions now pre-compact aggressively, and oversized compaction requests fall back to a deterministic local summary instead of timing out inside the compactor.
- Local scripted soak now passes on a 360-message / 2.76 MB session: resume pre-compacts to the last 24 messages and completes in about 9 seconds.
Esc now interrupts active turns in both interactive and one-shot TTY mode by temporarily capturing raw terminal escape input during model and tool execution.
- Destructive shell commands can no longer bypass policy through saved session shell-prefix approvals; deny-patterns now override session rules, ask-patterns still force confirmation, and persistent shell approvals are limited to non-mutating prefixes.
Esc pressed inside an approval prompt now denies that prompt instead of being intercepted by the global interrupt listener.
- Added explicit agent guidance that “run the exact shell command …” requests must execute only that command and must not silently fall back to diagnostic alternatives.
- Added a deterministic exact-shell execution path for prompts beginning with
Run the exact shell command ...; those prompts now bypass the model, execute exactly one run_shell call, and enforce policy before shell execution.
- Fixed runtime config merging so user or project overrides no longer erase default
approvalPolicy deny rules like rm -rf, git reset --hard, or curl ... | sh.
- Local hostile-output checks now cover three layers: renderer sanitization, direct spoof-prompt refusal, and contract-gated shell output before rendering.
- Added
/prod-readiness to track the active release-blocker matrix and the first validated runtime fixes.
2026-03-12
Config layering update
- Split config into user defaults in
~/.waterbrother/config.json and project overrides in .waterbrother/config.json.
- Runtime config now merges user and project settings automatically from the active working directory.
- Expanded config commands with scope-aware forms:
config set ... --scope user|project, config set-json ... --scope user|project, config get ... --scope user|project|merged, and config list ... --scope user|project|merged.
- Onboarding continues to save user-level defaults, while project-local model and workflow overrides can live in the repo.
- Deep-merged
mcpServers across user and project config layers.
2026-03-12
MCP stdio support
- Added config-driven MCP stdio server support via
mcpServers.
- Waterbrother now discovers MCP tools at runtime and exposes them to the model alongside built-in tools.
- Added
waterbrother mcp list for server + tool inspection.
- Added interactive
/mcp.
- Added MCP visibility in
/status, /session, and waterbrother doctor.
2026-03-12
Context continuity + memory release
- Added built-in web research tools for pasted URLs and open-web search prompts.
- Added
read_url for direct webpage reads and web_search for open-web search.
- Added interactive pasted-URL handling: paste a URL by itself or a URL plus question on one line.
- Added explicit slash commands:
/read <url>, /search <query>, and /open <url|index>.
- Added interactive
/update to reuse the existing self-update flow without leaving chat.
- Added selectable search results after
/search with arrow keys and Enter.
- Added live visible trace lines during turns so users can see structured progress before the final summary.
- Fixed live trace rendering so trace lines no longer collide with the animated spinner.
- Fixed read-only tools such as
list_files and read_file being mislabeled as unknown in traces.
- Increased the per-turn tool-call ceiling to reduce premature iteration-limit failures on larger edit tasks.
- Improved edit guidance for large rewrites so the agent prefers
write_file earlier instead of getting stuck in repeated replace_in_file loops.
- Tightened post-edit response style so edit summaries lead with changed files and concrete changes instead of hype.
- Updated agent guidance to prefer dedicated web tools over ad hoc shell commands.
- Updated docs and examples for web research workflows.
- Added manual compaction with
/compact and /compact <keep-last>.
- Added auto-compaction controls via
autoCompactThreshold and --auto-compact-threshold.
- Added project source-of-truth memory file support with
WATERBROTHER.md.
- Added memory commands:
/memory, /memory show, /memory add, /memory reload, /memory init.
- Added trace controls:
/trace and /trace on|off|verbose.
- Updated thinking animation to a flowing left-right glow style.
- Added dedicated GitHub repo reading for pasted GitHub repository URLs, including private repos when
gh is authenticated.
- Grouped retry noise in compact trace output so recoverable tool retries read as one operation.
2026-03-12
Command parity expansion
- Added
waterbrother exec <prompt> for non-interactive command-style runs.
- Added
waterbrother review <prompt> with reviewer profile default.
- Added
waterbrother resume [session-id] [prompt] and waterbrother resume --last.
2026-03-12
Approval UX + terminal rendering update
- Replaced yes/no approval prompts with codex-style
1/2/3 choices.
1 approve once, 2 approve all remaining tool calls in session, 3 deny and provide alternate guidance.
- Added turn spinner/progress animation while model and tools execute.
- Added compact turn summaries (duration, tool results, token usage when available).
- Improved assistant output rendering for markdown code fences in terminal sessions.
2026-03-12
Onboarding wizard + agent/vision update
- Added first-run onboarding wizard in terminal (API key, model, profile).
- Wizard can offer opening
https://console.x.ai/ for key creation.
- Added agent profiles:
coder, designer, reviewer, planner.
- Added top-level and slash vision commands for local image prompts.
- Session records now persist selected agent profile.
- Interactive UI now shows model/profile/approval/tools header at startup.
2026-03-12
Onboarding + parity baseline release
- Added web onboarding guide and API key setup docs.
- Added model catalog command and expanded slash command surface.
- Added command docs, changelog, and FAQ pages.
2026-03-12
Initial CLI scaffold
- Grok chat integration, tool runtime, sessions, and approval controls.