feat: port legacy Bolt features and distribution to V2

Merged
A-
1d ago
+15534-4228

User description

Issue for this PR

Related to #419; the full V1 port remains in progress.

Type of change

  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Bring legacy Bolt functionality into the active V2 packages:

  • Restore CLI reports, code analysis, agent workflows, aliases, logs, transcript exports, memory management, session resume/fork, indexing, benchmarks, flaky-test detection and project initialization.
  • Add background jobs, supervision, cron scheduling and invariant state/verification commands.
  • Integrate memory capture and recall, voice transcription, sandbox controls, network protection, credential redaction, Git tools and semantic search.
  • Restore specialist agents, slash commands, Vim input, process controls and cost alerts in the TUI.
  • Apply Bolt branding, icons and default themes across terminal, web and desktop interfaces, with compatible configuration discovery.
  • Retarget packaging, updates and release publishing to Bolt npm packages, GitHub releases, Homebrew and Docker; remove upstream AUR/WinGet publishing while retaining release verification gates.
  • Move reusable legacy implementations and tests into active packages and document remaining parity work in legacy/PORTING.md.

How did you verify your code works?

Validation was not run during this metadata inspection. The candidate includes regression tests across CLI, Core, memory, TUI, utilities, desktop packaging and release workflows. Full current workspace verification and remaining V1 parity audits are still pending.

Visual

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72"><style>@media(prefers-reduced-motion:no-preference){.pulse{animation:pulse 3s infinite}@keyframes pulse{0%,100%{opacity:.45}50%{opacity:1}}}</style><g fill="none" stroke="currentColor"><rect x="8" y="10" width="224" height="52" rx="8" opacity=".4"/><path d="m20 28 7 7-7 7m15 0h12"/></g><g fill="currentColor" font-family="monospace"><text x="58" y="32" font-size="13">Bolt V2</text><text class="pulse" x="58" y="49" font-size="10">memory · voice · jobs</text></g></svg>

Screenshots / recordings

Not captured during this inspection.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

View coding task


Summary by cubic

Ports the remaining legacy Bolt CLI features and distribution tooling into the active V2 packages, completing the rename from OpenCode to Bolt. Related to #419; the full V1 port remains in progress.

New features

  • Restores CLI reports, code analysis, agent workflows, aliases, logs, transcript exports, memory management, session resume/fork, indexing, benchmarks, flaky-test detection, and project initialization.
  • Adds background jobs, supervision, cron scheduling, and invariant state/verification commands.
  • Integrates memory capture/recall, voice transcription, sandbox controls, semantic search, and Bolt branding with corrected default themes across TUI, web, and desktop.
  • Adds specialist agents, slash commands, Vim input, process controls, and cost alerts in the TUI.
  • Hardens the ported commands: JSON export failures, pager wrap detection, default-branch resolution, diff-gate severity parsing, blast rename paths, deletion/rename-only analysis, invariants path resolution, and fork cursors across message pages.

Migration

  • The CLI binary is now bolt; opencode remains as a legacy alias.
  • The CLI and platform packages move from @opencode/* to @bolt-builder/*; the bundled @opencode/* workspace libraries keep their IDs for plugin compatibility.
  • Publishing moves to GitHub releases, Homebrew, and Docker; AUR and WinGet publishing is removed, and manual feature-branch runs build unsigned artifacts only.
  • Remaining parity work is tracked in legacy/PORTING.md.

PR Type

Enhancement, Tests, Documentation


Description

  • Port legacy CLI subcommands and analysis tools

  • Add core memory, semantic search, and voice plugins

  • Apply Bolt branding across desktop and TUI interfaces

  • Retarget packaging and releases to Bolt npm packages


Diagram Walkthrough

flowchart LR
  v1["Legacy V1 Codebase"] -- "Port CLI & Workflows" --> cli["V2 CLI Commands"]
  v1 -- "Port Memory & Tools" --> core["V2 Core Plugins"]
  core -- "Provide Services" --> tui["V2 TUI & App"]

File Walkthrough

Relevant files
Tests
11 files
updater-install.test.tsUpdate CLI updater install tests for Bolt packages and channels +78/-125
bolt-release.test.tsAdd release workflow test suite for Bolt CLI and desktop artifacts +297/-0 
one-shot-command.test.tsAdd tests for CLI one-shot commands                                            +266/-0 
review-command.test.tsAdd tests for code review and why CLI commands                      +227/-0 
bolt-commands.test.tsxAdd integration tests for TUI commands and feature toggles +189/-0 
transcript-command.test.tsAdd tests for transcript grep and export commands                +195/-0 
tool-search.test.tsAdd tests for semantic search and Git tools                            +144/-2 
bolt-memory.test.tsAdd tests for project memory RPC and process management RPC +146/-0 
logs.test.tsAdd unit tests for CLI log filtering and streaming              +156/-0 
theme.test.tsUpdate theme resolution tests to match default bolt themes +54/-57 
jobs-command.test.tsAdd integration tests for background job commands                +152/-0 
Enhancement
22 files
updater.tsUpdate package updater service to target Bolt releases and managers +111/-133
commands.tsRebrand CLI root command and add ported V1 subcommands      +354/-17
en.tsRebrand application i18n text strings to Bolt                        +27/-26 
git.tsAdd Git tool plugin for status, diff, log, blame, and show operations +391/-0 
error-component.tsxRebrand TUI error crash component and repository issue link +5/-5     
jobs.tsImplement background process and job supervision handlers +287/-0 
memory.tsImplement project memory plugin and tools                                +248/-0 
analyze.tsImplement repo analysis handler for linting, typechecking, and dead
code
+214/-0 
manage.tsImplement project memory management operations                      +191/-0 
agent.tsRegister specialist agents and prompt definitions                +122/-0 
semantic-rank.tsImplement lexical BM25 ranking and code chunking utilities +200/-0 
transcription.tsImplement local whisper and OpenAI voice transcription service +162/-0 
cron.tsImplement cron job management and scheduling command          +164/-0 
invariants.tsImplement behavioral invariant stating and verification command +165/-0 
bench.tsImplement benchmark command comparing head against base branch +157/-0 
submodules.tsImplement git submodule status checking and synchronization command +162/-0 
drift.tsImplement doc drift detection for removed code symbols      +151/-0 
why.tsImplement AI-assisted git history archaeologist command    +141/-0 
commitlint.tsRefactor commit message linter command handler for CLI runtime +50/-52 
asserts.tsImplement test assertion mining and AI suggestion command +136/-0 
semantic-search.tsImplement semantic search tool plugin for agent executions +175/-0 
shared.tsImplement shared memory RPC execution and querying helpers +87/-0   
Additional files
101 files
lib.sh +1/-82   
plan-release.sh +3/-3     
publish-aur.sh +0/-15   
publish-cli.sh +10/-16 
publish-desktop.sh +19/-20 
publish-discord.sh +1/-1     
publish-docker.sh +2/-2     
publish-github-release.sh +9/-4     
publish-homebrew.sh +4/-5     
publish-npm.sh +16/-9   
render-aur.sh +0/-80   
render-homebrew.sh +16/-17 
render-winget.sh +0/-45   
repack-windows.sh +6/-3     
sign-cli-macos.sh +6/-4     
sign-desktop-macos.sh +5/-5     
tag-release.sh +14/-0   
unpack-windows.sh +1/-1     
release-dry-run.yml +12/-51 
release.yml +14/-55 
PORTING.md +82/-0   
alias.ts +0/-76   
ask.ts +0/-84   
blast.ts +0/-110 
commit.ts +0/-125 
diff-gate.ts +0/-129 
drift.ts +0/-153 
grep.ts +0/-107 
learn.ts +0/-136 
logs.ts +0/-114 
memory.ts +0/-443 
review.ts +0/-218 
why.ts +0/-184 
alias.ts +0/-57   
alias.test.ts +0/-82   
learn.test.ts +0/-50   
logs.test.ts +0/-53   
process.tsx +0/-263 
voice.test.ts +0/-54   
index.html +1/-1     
manifest.json +2/-2     
oc-theme-preload.js +5/-3     
app.tsx +1/-1     
web.ts +1/-1     
screen.tsx +1/-1     
route.tsx +1/-1     
about.tsx +1/-1     
animated-wordmark.tsx +12/-21 
Dockerfile +4/-4     
opencode.cjs +3/-3     
build-node.ts +2/-2     
build.ts +4/-4     
pack.ts +38/-26 
postinstall.mjs +3/-3     
alias.ts +54/-0   
arch.ts +40/-44 
ask.ts +58/-0   
blast.ts +116/-0 
commit.ts +104/-0 
dead.ts +19/-27 
default.ts +1/-1     
deps.ts +50/-23 
diff-gate.ts +113/-0 
dupes.ts +25/-36 
export-html.ts +5/-5     
export-md.ts +2/-10   
flaky.ts +106/-0 
fork.ts +54/-0   
grep.ts +94/-0   
hotspots.ts +26/-32 
indexer.ts +101/-0 
init.ts +146/-0 
learn.ts +82/-0   
logs.ts +85/-0   
map.ts +21/-35 
conflicts.ts +7/-0     
diff.ts +7/-0     
export.ts +8/-0     
import.ts +7/-0     
review.ts +7/-0     
search.ts +7/-0     
team.ts +8/-0     
why.ts +8/-0     
owners.ts +33/-30 
packages.ts +31/-36 
resume.ts +87/-0   
review.ts +126/-0 
run.ts +34/-1   
export.ts +39/-0   
tighten.ts +120/-0 
uninstall.ts +5/-6     
upgrade.ts +2/-2     
schema.ts +3/-0     
crash.ts +6/-6     
index.ts +62/-2   
mini-host.ts +3/-2     
alias.ts +47/-0   
answer.ts +125/-0 
blast.ts +6/-2     
changed-files.ts +32/-0   
Additional files not shown