Repository navigation
v0.6.0
LoopTroop v0.6 — Our biggest update yet!
This is a massive release: 80 commits, 1,065 files changed, and 198,747 lines changed — 169,311 added / 29,436 removed — since v0.5.9, across the application, tests, tooling, and documentation.
Smarter AI questions, skip reasons you can trace, a major optimization effort, and more than twice the passing tests. There’s a lot packed into this one! 🎉
✨ What’s new
⏭️ Skip reasons & decision history
Add optional reasons when skipping interview questions, approving plans with coverage gaps, skipping Manual QA, cancelling, or finishing without a merge. The new Skips panel keeps the decision history together across phases and retries, including later changes and reversals. #122
💬 AI questions that fit your workflow
Questions now appear in an inline panel with separate model tabs and a configurable 1–60 minute wait, defaulting to 5 minutes. If you’re away, expiry declines the question so the model can continue using its own judgment. Interacting stops the countdown and gives you time to answer. #126
⚡ A major optimization & cleanup effort
Smarter parsing caches, fewer redundant requests, and less repeated work in live logs and history handling. In the recorded cache benchmark, repeated parsing of a 64-bead document dropped from 24.3 ms to 0.68 ms — approximately 36× faster for that workload. Log improvements · Parser benchmark
🧪 More than twice the tests
Passing tests grew from 3,495 to 8,099 — up 132% — across 500 test files, with 93.19% line coverage. New regression coverage strengthens workflows, recovery, parsers, installation, and UI interactions, while enforced coverage thresholds help protect those gains. Previous CI · Current CI
🔌 OpenCode v2 support
LoopTroop now detects and supports OpenCode v1 and v2, including native v2 integration, provider/model catalog handling, and stronger session tracking. Interrupted streams and uncertain prompt delivery receive safer recovery handling. #191
💾 More reliable runs & recovery
Stronger crash, restart, cancellation, and retry handling helps preserve project files, settings, and workflow progress. The daemon also detects PRs merged on GitHub and completes their tickets in the background — even with the browser closed, including squash and rebase merges. #133 · #156
📜 Logs that stay complete and easier to follow
Better recovery from reconnects and pagination gaps, more reliable streaming history, stable model tabs and filters, and preserved history across retries and cancellations. Log exports stay complete, and failed clipboard copies now show a clear error. #136 · #158
✨ A smoother, more accessible workspace
Improved keyboard navigation, dialog focus, pagination, and error feedback. Drafts, answers, and unsaved edits stay with the correct ticket when switching, while stronger save checks help prevent stale changes from overwriting newer work. #134 · #137 · Detailed changes
🛡️ Stronger security & release verification
Hardened executable launches, file-access boundaries, and credential handling, plus stronger dependency checks. New stable releases also include a downloadable, verified provenance bundle to help verify where release artifacts came from. #152 · #195
🪟 Easier installs & upgrades
Chocolatey and WinGet are now live installation channels, alongside Scoop fixes and stronger installer checks. Package installs support Node 24.18.0+ with its bundled npm, removing the requirement for a particular npm version. #173 · #176 · #181
💚 Thanks to everyone testing, reporting issues, and helping shape LoopTroop!
Additional changes
- Improved punctuation and readability across user-facing app text, the website and repository documentation while preserving their content.
- Setup instructions are shorter, documentation code blocks wrap to fit the page, and obsolete repository audit records are removed.
- The repository now links to the published roadmap and explains where contributions are welcome and when to discuss larger changes.
- Pullfrog workflows can run manually prompted agents while keeping model credentials in Pullfrog's encrypted secret store.
- No-follow file reads now detect replaced files using exact file identity on Windows before consuming their contents.
- Beads refinement preserves stable IDs and council attribution when it reconciles conflicting change records, and relevant-files budgets keep higher-priority entries.
- The test suite removes redundant worktree and log replay setup, avoids host process scans for fake child IDs, and strengthens boundary, timeout, and transport regressions.
- Kanban pagination arrows follow the visible page, and Escape cancels an uncommitted page-number edit.
- Failed ticket starts that stay in DRAFT clear provisional model locks and can be retried with updated settings; corrupt metadata stays readable and cannot be overwritten by a start.
- V8 coverage now exceeds 90% line coverage across all four Vitest projects; the required Verify job enforces 90% lines and 80% branches while Codecov reports separately.
- Security reports now have a private disclosure policy with scoped Safe Harbor terms.
- New stable releases attach a verified provenance bundle as
release-provenance.sigstore.json. - CI tools install from integrity lockfiles without third-party lifecycle scripts, network boundaries gain generated-input tests, and security findings have verified dispositions.
- Pull requests block vulnerable dependency changes, supported read-only CI jobs audit network activity, and OpenSSF Scorecard reports repository security checks.
- OpenCode v2 supports forked sessions from a verified event boundary; v1 remains supported, and prompts wait through catalog reloads under their workflow deadline.
- OpenCode v2 idle waits honor caller deadlines, and string fields without
optionsaccept text whencustomis omitted or false. - Startup checks a crashed daemon's retained owned-server record before probing or adopting a still-running OpenCode child.
- Single-choice options and free-text answers are alternatives; model prices show one label per shared range.
- Dependency updates arrive in fewer grouped pull requests and none merges itself; workflows take the build Node version from
.nvmrcalone. - Repository tooling and release sources now live under existing project folders while historical release repair and public installer and container contracts remain unchanged.
scoop install looptroopworks again, and a release now checks an install descriptor against the release it claims to ship before publishing it.- LoopTroop requires Node 24.18.0 or newer, and no longer requires a particular npm version. The minimum now follows Node releases 90 days behind, and only once every install channel offers it, so installing from the documented commands works on the Node a package feed actually offers.
- Published documentation now describes the latest implemented behavior directly as live guidance.
- CLI command help now accepts
--help,help, and?after a command. - Model-filtered debug history now retains native OpenCode rows when session ownership metadata differs.
- Ticket drafts and log history now survive deletion races, pagination gaps, native-log rewrites, and incomplete tail records without restoring stale state.
- Remote browser access now uses one explicitly configured HTTPS origin, rejects incomplete remote-mode setup at startup, and keeps plain-HTTP remote clients token-only.
- SSE connections reserve per-ticket and process-wide capacity before setup, while tool children no longer inherit daemon tokens or OpenCode passwords.
- Bead approval and YAML recovery now reject incomplete input and preserve explicit clears and scalar text across the editor and server.
- Cancellation recovery, anchored pending-bead retries, interview receipt commits, and council session-stop proofs now remain safe across failed writes and restarts.
- Git cleanup preserves uncertain process ownership and user files, while interrupted recovery can retry an absent destination safely.
- Windows tool discovery skips script types it cannot launch; container repair reports distinguish missing inventories from recorded package versions.
- Chocolatey and WinGet are live install channels:
choco install looptroopandwinget install LoopTroopAI.LoopTroopwork, and every release publishes to both. - Release-candidate verification stops on npm registry errors instead of assuming the stable tag is unchanged.
- Standalone release binaries now use Node
26.9.0's native single-executable builder while application and package channels hold the Node24.18.0floor. - Canonical OpenCode installation directories (
~/.opencode/bin) are now trusted by default for theopencodebinary across platforms, preventing execution refusals when OpenCode release archives are unpacked under root while preserving directory ownership and file write-permission checks. - Linux user-namespace tools with unverifiable overflow ownership now require explicit trusted-directory opt-in, including the Node interpreter owner and canonical OpenCode binaries.
- Installer daemon probes keep unexpected child exits unknown.
- Cross-platform resolver tests inject a Linux UID-map fixture when they emulate Linux on macOS, while production ownership checks remain fail-closed.
- Windows daemon starts can accept a still-live child launched by that command when the start-time probe is temporarily unavailable, while stale and tokenless records remain fail-closed.
- Managed OpenCode shutdown now retains daemon ownership and a retryable control path when its process tree cannot be confirmed gone; a persisted shutdown-pending guard prevents CLI force escalation, and the daemon retries with capped backoff even after its listener closes. Failed startup cleanup leaves durable owned-child evidence so a successor cannot adopt it.
- A later daemon start checks a crashed daemon's retained owned-server record before probing or adopting OpenCode; a verified live child must be cleaned up before startup can proceed.
- OpenCode step-cap recovery keeps its authoritative marker in owner-only app configuration, preserving edited or unverified configs instead of trusting a mutable ticket copy; active retries stop when the cap cannot be re-applied safely.
- Protected hook validation reports structured recovery refusals with the retained marker path and manual remedy, while CLI cleanup keeps ignored files and strict non-Git skeleton checks at the final removal boundary.
- The OrcaCode pull-request review workflow is removed; it reported a failed check on every pull request and never completed a successful run.
Container image
docker pull looptroopai/looptroop:0.6.0
docker pull ghcr.io/looptroop-ai/looptroop:0.6.0
Both registries serve the same linux/amd64 + linux/arm64 index,
sha256:097027eaa8f5d5656b6ab0a5f5782509db9373e0dd9dc9b10e8ee8df3ba2fbec.
The image ships without OpenCode, so a bare docker run exits at
startup by design. See Run it in a container
for how to point it at a server and reach the interface.