| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-22 | 14.3 kB | |
| Release v0.2.2 source code.tar.gz | 2026-05-22 | 3.6 MB | |
| Release v0.2.2 source code.zip | 2026-05-22 | 4.0 MB | |
| Totals: 3 Items | 7.6 MB | 0 | |
Summary
- Extracted magic numbers into named constants, consolidated a repeated Tailwind label class, and standardised boolean variable naming across the codebase.
- Hardened workflow approval, audit, bead-finalization, archived-version, and cleanup boundaries with content hashes and visible cleanup warnings.
- Documented the ticket-handler route split from a single file into focused route modules without changing workflow behavior.
- Added profile-controlled OpenCode retry budgets so transient provider stalls block early with diagnostics and same-session Continue across OpenCode-backed phases.
- Preserved underlying OpenCode provider/session causes on coding bead failures so parser or retry-budget wrappers no longer hide usage-limit style blockers.
- Extended the ticket disk space card in the details view to allow expanding any category (Source Code, Phase Artifacts, or Execution Logs) to see which specific folders/files are occupying space, rendered in a beautiful HSL dark-mode monochrome interactive accordion.
- Added a beautiful button and card to calculate and display ticket disk space usage with granular breakdown by logs, artifacts, and source code.
- Made manual Retry preserve versioned logs and artifacts for every non-implementation failed status while keeping CODING bead-scoped.
- Made documentation screenshots collapsible and clickable, with expanded bead error screenshots on the docs home page.
- Consolidated changelog maintenance into the docs changelog while keeping a root pointer for discoverability.
- Prevented first-interaction crashes when a lazy UI module fails to load during dev startup.
- Made versioned coverage reports keep version transitions in order while defaulting to the latest check and suppressing stale open-gap lists.
- Clarified the
npm run devstartup summary with an explicit package release-age gate note. - Added a beautiful Changelog documentation page positioned above the Roadmap.
- Made Full Answers parsing more resilient to malformed YAML formatting while preserving approved interview metadata.
- Kept the left-panel Errors header compact while showing real bead counters in expanded coding-error labels.
- Made OpenCode runtime setup permissive and self-healing while keeping missing execution tooling as a hard setup blocker.
- Made OpenCode session startup more resilient with bounded app-wide retries and health diagnostics.
- Added an opt-in
npm run dev --opencode-logs=allmode for full managed OpenCode DEBUG logs in the terminal. - Audited and corrected all user-facing status descriptions, Details content, and documentation for accuracy and consistency.
- Added a high-priority roadmap item for a Context Slimming Pipeline that audits per-phase input/output fields, strips unused data from canonical context while preserving it in companion artifacts, and classifies every field by downstream consumption.
- Applied targeted reliability and safety fixes from an external audit: atomic write durability, git timeout hardening, ticket cancel race, interview null guard, and bead schema validation.
Detailed Changes
Changed
- Extracted 9 magic numbers (
GIT_CHECK_DEBOUNCE_MS,COUNTDOWN_TICK_MS,DROPDOWN_Z_INDEX, etc.) into named constants insrc/lib/constants.ts. - Consolidated the repeated
text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foregroundTailwind pattern (21 occurrences) into a.section-label@applyclass insrc/index.css. - Standardised all boolean state and derived variables across 21 components to use
is/has/shouldprefixes (e.g.open→isOpen,showHistory→isHistoryOpen,showModelTabs→hasModelTabs).
Added
- Added SHA-256 content identity to approval snapshots/receipts and artifact read responses, required
expectedContentSha256approval payloads with stale-approval409responses, durable approval receipts for all approval gates, and append-onlyuser_edit_receipt:*artifacts for manual artifact edits. - Added
cleanup.statusto cleanup reports and a top-level ticket cleanup summary so completed tickets can surface non-blocking cleanup warnings. - Added profile settings for
OpenCode Retry LimitandOpenCode Retry Grace Window, exposed through the API, Configuration UI, and documentation with defaults of 10 retry events and 60 seconds. - Added recursive nested file and folder expansion directly in the ticket disk space details view, incorporating standard monochrome folder/file icons, exact size formatting, and custom collapsible sub-accordions with smooth transitions.
- Added full recursive top-level and category child listings with sizes in the Hono ticket size API endpoint (
/tickets/:id/size). - Added a ticket disk space calculation card under the Artifacts Location in details view with a premium themed button, interactive hover effects, live loading state, error alert banner, and on-demand recursive disk size computation broken down by Source Code, Phase Artifacts, and Execution Logs.
- Added a
GET /tickets/:id/sizeroute to Hono backend for recursively measuring ticket worktree folders using safe non-symlink-followinglstatconcurrency, computing precise space breakdowns for logs, artifacts, and source files. - Added a robust integration test
server/routes/__tests__/tickets.size.test.tsverifying exact and recursive file size aggregation and granular category splits. - Added two bead error screenshots to the docs home page and a docs-wide image lightbox so screenshots can be opened nearly full screen with a top-right close button.
- Added a dedicated
Changelogdocumentation page (docs/changelog.md) detailing LoopTroop's official release history starting from release0.1.0. - Integrated
/changelogroute into both VitePress sidebar and top navbar navigation. - Added
npm run dev --opencode-logs=allto print full managed OpenCode DEBUG logs with--print-logs --log-level DEBUG, plusLOOPTROOP_OPENCODE_LOGS=allfor direct watcher launches.
Changed
- Clarified that the workspace phase header's
(details)button opens the canonical workflow metadata fromshared/workflowMeta.ts, and aligned the state-machine and ticket-flow wording for approval and execution-setup statuses with the current UI copy. - Bead completion now means OpenCode success plus local finalization success: local commits are required when code changes exist, true no-op completions are allowed, push failures are warnings, and fatal finalization failures route through
BEAD_FINALIZATION_FAILEDinstead of broadcastingbead_complete. - Archived phase-attempt artifacts are explicitly read-only, while current approval-edit routes continue to write only the active version.
- Added "Context Slimming Pipeline" as a high-priority roadmap item in
docs/roadmap.mdfor per-phase input/output field auditing, deterministic strip-and-store, and retry-path field classification. - Updated architecture and ticket-flow documentation to reference the focused
server/routes/ticketHandlers/module directory for user-triggered ticket actions. - Clarified the Configuration UI copy for OpenCode Provider Recovery so it explicitly mentions rate-limit, usage-limit, overload, timeout, and network retry events across phases.
- Manual Retry from
BLOCKED_ERRORnow archives and creates fresh phase attempts for every non-implementation status, including runtime setup and post-implementation phases, whileCODINGkeeps its existing failed-bead reset and retry history. - Wrapped the docs home-page screenshots in collapsed-by-default details sections so only each screenshot title is visible until expanded.
- Made
docs/changelog.mdthe canonical full changelog, including unreleased changes, and replaced the rootCHANGELOG.mdwith a discoverability pointer. npm run devnow prints a short multi-line package gate note in the startup summary, making it clearer that direct npm dependency updates and audit fixes wait until package releases are 7 days old while OpenCode updates immediately.- Updated
@opencode-ai/sdkfrom1.15.5to1.15.6. npm run devnow starts managed OpenCode servers withOPENCODE_PERMISSION='"allow"'by default, whileLOOPTROOP_OPENCODE_PERMISSION_MODE=inheritlets external permission policy pass through unchanged.- Workspace setup prompts now treat missing required command launchers as setup gaps, attempt user-space provisioning under
.ticket/runtime/execution-setup/tool-cache, record reusableenv.sh/runwrapper artifacts, and tell coding/final-test agents to run setup-dependent commands through the wrapper. - Execution setup retries now preserve the ticket-owned
tool-cachewhile clearing stale profile and wrapper state, and stop early when the same tooling blocker repeats after provisioning fails. - Updated
BLOCKED_ERRORstatus description to include theContinueaction alongsideRetry, with accurate detail on eligibility and session behavior; alignedDRAFTING_PRDdescription to note that structured retries are exhausted before a PRD draft is skipped. - Replaced all opaque internal prompt IDs (
PROM4,PROM_CODING,PROM51,PROM25) with plain English descriptions inshared/workflowMeta.ts,docs/execution-loop.md,docs/ticket-flow.md, anddocs/configuration.md; replaced internal constant names (BEAD_STATUS_SCHEMA_REMINDER,CONTINUE_CODING_SCHEMA_REMINDER,shouldUseStructuredRetry,buildContinuationPrompt,perIterationTimeoutMs) with conceptual descriptions in the CODING Details steps. - Removed stale
COMPLETEDnote that incorrectly implied the candidate branch had not yet been merged (the merge decision is finalized inWAITING_PR_REVIEWbeforeCOMPLETEDis reached). - Synced all eight out-of-date rows in the
docs/state-machine.mdPhase Descriptions table with their canonicaldescriptionfields inshared/workflowMeta.ts. - Refined PRD coverage status description to clarify in-phase revision loop instead of implying cross-state transitions.
- Clarified PRE_FLIGHT_CHECK status description to note the minimal AI connectivity probe instead of broadly stating "No AI context is passed."
- Annotated dead
GAPS_FOUNDstate machine transitions for PRD and beads coverage phases as defensive-safety artifacts since coverage loops internally. - Added JSDoc to all exported types, interfaces, and functions across
shared/workflowMeta.ts,src/lib/workflowMeta.ts,WorkspacePhaseSummary.tsx,ticketMachine.ts, andticketQueries.ts. - Documented the dynamic
continueaction injection ongetAvailableWorkflowActionswith a reference toaddContinueActionWhenAvailable. - Annotated the unused
votescontext key as reserved and added a note toCONTEXT_KEY_LABELS.
Fixed
- OpenCode
session.statusretry events for rate limits, usage limits, overload/capacity, temporary unavailability, timeouts, and network/socket failures now block throughBLOCKED_ERRORafter the configured budget, preserving provider diagnostics and active sessions for Continue when eligible. - Coding completion-marker and bead retry-budget failures now retain the latest underlying OpenCode provider/session diagnostic, such as usage-limit retries, in the blocked error details.
- CODING now routes continuable OpenCode/provider retry exhaustion through the normal blocked-error path instead of converting it into bead retry exhaustion, while ordinary implementation failures keep the existing bead reset/retry behavior.
- Active bead countdowns now reset their start timestamp when a new coding iteration/session begins, preventing the UI from sticking at
00:00/20:00while later iterations continue. - Left-panel blocked-error headers now stop appending active bead identifiers after the count and Active badge, preventing long bead names from overflowing the navigator while preserving details in the expanded error view.
- Coding error occurrence labels now use the ticket's runtime bead counters, so left-panel rows and blocked-error headers show labels such as
Implementing (Bead 2/5)instead of the genericBead ?/?fallback. - Lazy-loaded Configuration, ticket creation, project, and workspace views now automatically refresh once after recoverable dynamic-import/chunk-load failures, avoiding the root crash screen caused by transient first-load module fetch races.
- Coverage reports now show the latest open-gap status by default after ordered version transitions, suppress stale open-gap lists when no gaps remain, and switch gap headings/lists to the selected
v1 > v2orv2 > v3transition. - Fixed date rendering on the Changelog documentation page by formatting version dates as clean, standard parentheses text, avoiding raw unparsed HTML badge tags.
- Full Answers normalization now restores canonical
follow_up_roundswhen a model emits malformed round metadata and repairs common multilinefree_textYAML formatting without changing answer text. - Bead commits now exclude execution setup temp roots, reusable setup artifact roots, and legacy
.cache/project-tooling/**files so temporary toolchains cannot be recorded as implementation work. - OpenCode session creation now retries the initial attempt up to three times with bounded backoff, collecting lightweight health diagnostics after failures while preserving cancellation and timeout behavior.
Security & Reliability
- Ticket cancel now awaits active OpenCode session abort before executing destructive cleanup, eliminating the race where cleanup could run while sessions were still writing.
- Interview batch async path now explicitly returns 404 when no session artifact is found, replacing the non-null assertion that could crash at runtime.
- Bead plan PUT endpoint now validates each bead against a required-field schema (id, title, status, priority, dependencies) and rejects duplicate IDs, preventing malformed execution plans from being written.
- Git operations now include a 30-second timeout and
GIT_TERMINAL_PROMPT=0/GIT_ASKPASS=echoenvironment guards so locked repositories, credential prompts, or network filesystems cannot hang the server process; push operations use a 120-second timeout. - Atomic write helper now cleans up the
.tmpfile in all failure paths and fsyncs the parent directory after rename for crash-durable artifact persistence.