All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Meta-Harness autoresearch loop (
research/subsystem). Opus-driven search over a bounded mutation surface. Fixed 5-minute kernel, append-only results log, contrastive proposer with access to source + top/bottom traces. Seeresearch/domain_spec.mdfor the design. - Admiral actuator:
scripts/stress_watcher.pysends SIGUSR1 to the stress harness on unrecoverable TUI wedges; the harness respawns its drydock child at the next iteration boundary. Rate-limited. First loop where admiral acts on its observations. - Env override surface for experiments:
DRYDOCK_AUTO_CONTINUE_DISABLE,DRYDOCK_STRESS_{SESSION_RESET_EVERY,MAX_CONSECUTIVE_SKIPS_BEFORE_RESET,SEND_PROMPT_RETRY_COUNT,SEND_PROMPT_WAIT_PER_RETRY_SEC},DRYDOCK_ADMIRAL_{REPEAT_WARNING_THRESHOLD,REPEAT_FORCE_STOP_THRESHOLD,EMPTY_RESULT_THRESHOLD,SAME_TOOL_NAME_REPEAT_LIMIT_{BASH,READ}},DRYDOCK_PROMPTS_DIR. All default to the prior hardcoded values; production behavior unchanged. DEPLOYMENT.md: known-working hardware + vLLM Docker flags +~/.drydock/config.tomltemplate + env var table + diagnostic checklist. Answers the "works on your machine, not mine" question.scripts/stress_babysitter.sh: hourly monitor cron that auto-restarts long stress runs from the last successful step. Silent when healthy; Telegrams only on state change.- Check 0 empty-result loop detector in
agent_loop.py. Fires FORCE_STOP at 3 identical tool calls when the result matches an empty pattern (total_count: 0,no todos,no tasks,no matches, blank). Catches todo / task / grep-empty loops that Check 1's threshold-of-8 is too lax for. - Proactive write-oscillation prune in
_sanitize_message_ordering. Any path with ≥3write_filehistory entries gets its older copies pruned before the next LLM call, so context stays below Gemma 4's 131K ceiling instead of waiting for a 400. - Raw-markdown leakage detector in stress harness + admiral.
Surfaces TUI rendering regressions as
stress-alert/raw-markdown- leakageon the admiral dashboard. OVERNIGHT_PROGRESS.mdsession-continuity doc template.
should_break_loopinagent_loop.py:876— the conditiontool_turns == 0was unreachable since the file's current structure landed. Text-only assistant responses now cleanly close the user turn instead of regenerating untilPER_PROMPT_BUDGET_SECtimes out. This is a behavior fix users will notice immediately — questions the model asks now wait for input.- Continue-loop: env-gated via
DRYDOCK_AUTO_CONTINUE_DISABLE=1so stress runs (and any workflow hitting text-only prompt loops) can opt out. SESSION_ROOTresolution inscripts/shakedown_interactive.py: now reads the path from~/.drydock/config.toml's[session_logging].save_dirinstead of hardcoding~/.drydock/logs/session/. Fixes false-SKIP reporting on any machine whose drydock config has the newer default~/.vibe/logs/session/.- Todo tool (
todo.py): empty-read response now escalates. First empty: "No todos yet. Write one or proceed with the task." Second+: "Still no todos. Stop calling read. Empty state will not change on its own." Closes GitHub #10. - Fresh-start wipe in stress harness: wipes cwd to fixtures (PRD/AGENTS/functional_tests) instead of accumulating prior runs' half-written artifacts.
- Raw-markdown detector patterns tightened (
**bold**,##heading,[link](url)only — dropped bullet + numbered-list patterns that matched rendered lists and generated 45 % false positives).
- First clean 1658-prompt stress run completed 2026-04-21. ~1622 successful prompts (run + babysitter auto-restart), 35 SKIPs, 0 TIMEOUTs, ~60 admiral-initiated TUI recycles. ~46-hour wall-clock. Reference baseline for future experiments.
scripts/auto_release.shsupportsDRYDOCK_FORCE_VERSIONfor MINOR / MAJOR bumps (the ordinary PATCH-bumper would have taken us to 2.6.149, not 2.7.0).
- Meta-Harness median-of-3 replication before promotion (currently single-sample).
- TUI Markdown widget regression surfaced by admiral but not yet fixed.
- Session ID included in telemetry events for better tracing
- Skills now extract arguments when invoked, improving parameter handling
- Auto-compact threshold falls back to global setting when not defined at model level
- Update notification toast no longer times out, ensuring the user sees the restart prompt
- Removed
file_content_beforefrom Vibe Code, reducing payload size
HarnessFilesManagerfor selective loading of harness files, enabling SDK usage without accessing the file system.
- Web search tool infers server URL from provider config instead of hardcoded production API
ask_user_questionstool disabled in prompt mode
- Space key fix extended to all
Inputwidgets (question prompts, proxy setup) in VS Code terminal - Ruff isort/formatter config conflict resolved (
split-on-trailing-commaset tofalse)
- User plan displayed in the CLI banner
- Reasoning effort configuration and thinking blocks adapter
- Auto-compact threshold is now per-model
- Removed expensive file scan from system prompt; cached git operations for faster agent switching
- Improved plan mode
- Updated
whoamiresponse handling with new plan type and name fields
- Space key works again in VSCode 1.110+
- Arrow-key history navigation at wrapped-line boundaries in chat input
- UTF-8 encoding enforced when reading metadata files
- Update notifier no longer crashes on unexpected response fields
- /resume command to choose which session to resume
- Web search and web fetch tools for retrieving and searching web content
- MCP sampling support: MCP servers can request LLM completions via the sampling protocol
- MCP server discovery cache (
MCPRegistry): survives agent switches without re-discovering unchanged servers - Chat mode for ACP (
session/set_config_optionswithmode=chat) - ACP
session/set_config_optionssupport for switching mode and model - Tool call streaming: tool call arguments are now streamed incrementally in the UI
- Notification indicator in CLI: terminal bell and window title change on action required or completion
- Subagent traces saved in
agents/subfolder of parent session directory - IDE detection in
new_sessiontelemetry - Discover agents, tools, and skills in subfolders of trusted directories (monorepo support)
- E2E test infrastructure for CLI TUI
- System prompts rewritten for improved model behavior (3-phase Orient/Plan/Execute workflow, brevity rules)
- Tool call display refactored with
ToolCallDisplay/ToolResultDisplaymodels and per-tool UI customization - Middleware pipeline replaces observer pattern for system message injections
- Improved permission handling for
write_file,read_file,search_replace(allowlist/denylist globs, out-of-cwd detection) - Proxy setup UI updated with guided bottom-panel wizard
- Smoother color transitions in CLI loader animation
- Dead tool state classes removed (
Grep,ReadFile,WriteFilestate)
- Agent switch (Shift+Tab) no longer freezes the UI (moved to thread worker)
- Empty assistant messages are no longer displayed
- Tool results returned to LLM in correct order matching tool calls
- Auto-scroll suspended when user has scrolled up; resumes at bottom
- Retry and timeout handling in Mistral backend (backoff strategy, configurable timeout)
- Multiple clipboard copy strategies: OSC52 first, then pyperclip fallback when system clipboard is available (e.g. local GUI, SSH without OSC52)
- Ctrl+Z to put Vibe in background
- Improve performance around streaming and scrolling
- File watcher is now opt-out by default; opt-in via config
- Bump Textual version in dependencies
- Inline code styling: yellow bold with transparent background for better readability
- Banner: sync skills count after initial app mount (fixes wrong count in some cases)
- Collapsed tool results: strip newlines in truncation to remove extra blank line
- Context token widget: preserve stats listeners across
/clearso token percentage updates correctly - Vertex AI: cache credentials to avoid blocking the event loop on every LLM request
- Bash tool: remove
NO_COLORfrom subprocess env to fix snapshot tests and colored output
- Google Vertex AI support
- Telemetry: user interaction and tool usage events sent to datalake (configurable via
enable_telemetry) - Skill discovery from
.agents/skills/(Agent Skills standard) in addition to.vibe/skills/ - ACP:
session/loadandsession/listfor loading and listing sessions - New model behavior prompts (CLI and explore)
- Proxy Wizard (PoC) for CLI and for ACP
- Proxy setup documentation
- Documentation for JetBrains ACP registry
- Trusted folders: presence of
.agentsis now considered trustable content - Logging handling updated
- Pin
cryptographyto >=44.0.0,<=46.0.3; uv sync for cryptography
- Auto scroll when switching to input
- MCP stdio: redirect stderr to logger to avoid unwanted console output
- Align
pyproject.tomlminimum versions withuv.lockfor pip installs - Middleware injection: use standalone user messages instead of mutating flushed messages
- Revert cryptography 46.0.5 bump for compatibility
- Pin banner version in UI snapshot tests for stability
- Incremental load of long sessions: windowing (20 messages), "Load more" to fetch older messages, scroll to bottom when resuming
- ACP support for thinking (agent-client-protocol 0.8.0)
- Support for FIFO path for env file
- UI redesign: new look and layout for the CLI
- Textual UI optimizations: ChatScroll to reduce style recalculations, VerticalGroup for messages, stream layout for streaming blocks, cached DOM queries
- Bumped agent-client-protocol to 0.8.0
- Use UTC date for timestamps
- Clipboard behavior improvements
- Docs updated for GitHub discussions
- Made the Upgrade to Pro banner less prominent
- Fixed inaccurate token count in UI in some cases
- Fixed agent prompt overrides being ignored
- Terminal setup: avoid overwriting Wezterm config
- Legacy terminal theme module and agent indicator widget
- Standalone onboarding theme selection screen (replaced by redesign)
- Allow environment variables to be overridden by dotenv files
- Display custom rate limit messages depending on plan type
- Made plan offer message more discreet in UI
- Speed up latest session scan and harden validation
- Updated pytest-xdist configuration to schedule single test chunks
- Prevent duplicate messages in persisted sessions
- Fix ACP bash tool to pass full command string for chained commands
- Fix global agent prompt not being loaded correctly
- Do not propose to "resume" when there is nothing to resume
- Fix encoding issues in Windows
- Subagent support
- AskUserQuestion tool for interactive user input
- User-defined slash commands through skills
- What's new message display on version update
- Auto-update feature
- Environment variables and timeout support for MCP servers
- Editor shortcut support
- Shift+enter support for VS Code Insiders
- Message ID property for messages
- Client notification of compaction events
- debugpy support for macOS debugging
- Mode system refactored to Agents
- Standardized managers
- Improved system prompt
- Updated session storage to separate metadata from messages
- Use shell environment to determine shell in bash tool
- Expanded user input handling
- Bumped agent-client-protocol to 0.7.1
- Refactored UI to require AgentLoop at VibeApp construction
- Updated README with new MCP server config
- Improved readability of the AskUserQuerstion tool output
- Use ensure_ascii=False for all JSON dumps
- Delete long-living temporary session files
- Ignore system prompt when saving/loading session messages
- Bash tool timeout handling
- Clipboard: no markup parsing of selected texts
- Canonical imports
- Remove last user message from compaction
- Pause tool timer while awaiting user action
- instructions.md support
- workdir setting in config file
- bash tool not discovered by vibe-acp
- markup in blinking messages
- safety around Bash and AGENTS.md
- explicit permissions to GitHub Actions workflows
- improve render performance in long sessions
- Fix config desyncing issues
- User definable reasoning field
- Fix rendering issue with spinner
- Fix crash when continuing conversation
- Fix Nix flake to not export python
- agentskills.io support
- Reasoning support
- Native terminal theme support
- Issue templates for bug reports and feature requests
- Auto update zed extension on release creation
- Improve ToolUI system with better rendering and organization
- Use pinned actions in CI workflows
- Remove 100k -> 200k tokens config migration
- Fix
-pmode to auto-approve tool calls - Fix crash when switching mode
- Fix some cases where clipboard copy didn't work
- Remove dead code
- Fix artefacts automatically attached to the release
- Refactor agent post streaming
- Improve error message when running in home dir
- Do not show trusted folder workflow in home dir
- Modular mode system
- Trusted folder mechanism for local .vibe directories
- Document public setup for vibe-acp in zed, jetbrains and neovim
--versionflag
- Improve UI based on feedback
- Remove unnecessary logging and flushing for better performance
- Update textual
- Update nix flake
- Automate binary attachment to GitHub releases
- Prevent segmentation fault on exit by shutting down thread pools
- Fix extra spacing with assistant message
- Add more copy_to_clipboard methods to support all cases
- Add bindings to scroll chat history
- Relax config to accept extra inputs
- Remove useless stats from assistant events
- Improve scroll actions while streaming
- Do not check for updates more than once a day
- Use PyPI in update notifier
- Fix tool permission handling for "allow always" option in ACP
- Fix security issue: prevent command injection in GitHub Action prompt handling
- Fix issues with vLLM
- add
terminal-authauth method to ACP agent only if the client supports it - fix
user-agentheader when using Mistral backend, using SDK hook
- added
include_commit_signatureinconfig.tomlto disable signing commits
- fixed crash in some rare instances when copy-pasting
- improved context length from 100k to 200k
- add missing steps in bump_version script
- move
pytest-xdistto dev dependencies - take into account config for bash timeout
- improve textual performance
- improve README:
- improve windows installation instructions
- update default system prompt reference
- document MCP tool permission configuration
- Fix streaming with OpenAI adapter
- Rename agent in distribution/zed/extension.toml to mistral-vibe
- Fix icon and description in distribution/zed/extension.toml
- Remove .envrc file
- Add LICENCE symlink in distribution/zed for compatibility with zed extension release process
- Fix setup flow for vibe-acp builds
- Fix update notification
- Initial release