Releases: JSONbored/loopover
Release list
loopover-orb orb-v2.1.0-beta.7
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.7Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.7.
What's Changed
🚀 Features
- docs(ui): federated fleet intelligence operator-consent page by @RealDiligent in #6631
- feat(miner-ui): redesign ledgers route with StateBoundary + skeletons (#6512) by @jaytbarimbao-collab in #6646
- feat(orb): trust-gate inbound federated bundles per the #6477 key-trust design by @luciferlive112116 in #6649
- feat(config): make sweepWatchdog staleness threshold configurable (#6594) by @andriypolanski in #6639
- feat(miner-ui): wire the chat rail to the read-only streaming backend (#6518) by @jaytbarimbao-collab in #6661
🐛 Fixes
- feat(ci): auto-sync the MCP known-latest constant, never a manual bump by @JSONbored in #6638
- fix(config): migrate badgeEnabled/publicQualityMetrics off the DB by @JSONbored in #6647
- test(ui): guard the Cloudflare build's self-heal step against regression by @JSONbored in #6648
- fix(github): reject a malformed three-segment repoFullName in comments.ts by @ultrahighsuper in #6640
- docs(selfhost): document the GPU-reservation force-recreate gotcha for ollama by @JSONbored in #6652
- test(settings): inject Batch C gate/AI-review fields via the manifest (queue core) by @JSONbored in #6653
- test(settings): inject Batch C gate/AI-review fields via the manifest (small files) by @JSONbored in #6656
- fix(auth): send the canonical PRODUCT_USER_AGENT from github-oauth.ts by @galuis116 in #6637
- test(settings): inject Batch C gate/AI-review fields via the manifest (queue rest) by @JSONbored in #6654
- fix(review): trim whitespace on three truthy env flag checks by @RealDiligent in #6641
- refactor(signals): reuse slop.ts's canonical clamp in improvement.ts by @galuis116 in #6643
- fix(engine): harden applyContributorCalibration against NaN inputs by @RealDiligent in #6651
- fix(engine): honor no-issue rationale in predicted preflight by @jsdevninja in #6645
- fix(mcp): honor free-text tests evidence in loopover_check_test_evidence by @ultrahighsuper in #6657
- fix(agent-actions): cancel in-flight CI on a blacklist close too (#6659) by @JSONbored in #6669
- fix(github): resolve GraphQL cache TTL per cache class by @claytonlin1110 in #6655
- fix(engine): exclude inline code spans in predicted-gate extractLinkedIssueNumbers by @ultrahighsuper in #6658
- fix(github): compare the bot login case-insensitively when dismissing its approval by @luciferlive112116 in #6662
- fix(review): align lockfile-tamper finding text with lockfile-entry check by @RealDiligent in #6663
- fix(github): reject per-segment whitespace in splitRepo by @RealDiligent in #6664
- fix(miner): route the governor/prediction/plan local stores through openLocalStoreDb by @lourincedaging0-commits in #6667
- fix(review): guard fix-handoff suggestion blocks against an embedded code fence by @ultrahighsuper in #6668
- fix(engine): align predicted-gate collision risk with live gate by @RealDiligent in #6671
- fix(ci): stop draft PRs from wasting CI/review-pipeline resources (#6670) by @JSONbored in #6679
Full Changelog: orb-v2.1.0-beta.6...orb-v2.1.0-beta.7
loopover-orb orb-v2.1.0-beta.6
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.6Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.6.
What's Changed
🚀 Features
- feat(review): add an opt-in draft-PR close policy to stop bot-review farming by @JSONbored in #6454
- feat(ui): add CSV export to the operator dashboard by @luciferlive112116 in #6471
- docs(ui): audit ui-kit for existing chat-adjacent UI primitives by @galuis116 in #6474
- feat(orb): export a signed, anonymized federated calibration bundle (opt-in) by @reyanthony062001-ops in #6505
- feat(miner-ui): add a light/dark theme toggle to miner-ui by @jaytbarimbao-collab in #6529
- feat(ui-kit): port state-views.tsx primitives into @loopover/ui-kit by @galuis116 in #6539
- feat(orb): add the opt-in federated collector transport client (push/pull) by @reyanthony062001-ops in #6537
- feat(miner): add config-gated chat action-dispatch scaffolding by @nghetienhiep in #6542
- feat(miner-ui): add the chat rail's message composer by @luciferlive112116 in #6549
- feat(ui): maintainer dashboard panel for per-tool MCP usage counts by @galuis116 in #6548
- feat(review): add AMS live-gate-thresholds read endpoint by @RealDiligent in #6553
- feat(miner-ui): add the persistent collapsible chat rail shell by @ultrahighsuper in #6564
- feat(miner): add read-only chat grounding over the existing miner MCP tools by @davion-knight in #6570
- feat(review): bridge a submitter's AMS track record into ORB reputation, upgrade-only by @davion-knight in #6566
- feat(miner-ui): chat message list, bubble, and typing indicator components by @jaytbarimbao-collab in #6563
- feat(miner): consume ORB live gate thresholds in self-review-context by @RealDiligent in #6565
- feat(engine): add selfLoopAutonomy to AmsPolicySpec by @luciferlive112116 in #6568
- feat(miner-ui): add discover and attempt HTTP action routes by @boskodev790 in #6574
- feat(miner-ui): adopt StateBoundary + skeletons on the Overview route by @dhgoal in #6576
- feat(selfhost): make LOOPOVER_SWEEP_WATCHDOG and LOOPOVER_PR_RECONCILIATION .loopover.yml-controllable by @bohdansolovie in #6575
- feat(miner): consult selfLoopAutonomy in decideNextAction's pass-to-handoff step by @davion-knight in #6581
- feat(miner-ui): useStreamingText hook + StreamingText renderer by @jaytbarimbao-collab in #6583
- feat(miner-ui): register portfolio release/requeue chat actions by @jsdevninja in #6586
- refactor(miner-ui): adopt shared StateBoundary in the portfolio route by @luciferlive112116 in #6588
- feat(review): schedule fleet escalation sweep with Discord notify by @RealDiligent in #6584
- feat(ui): add AMS-vs-human contributor-mix maintainer dashboard panel by @galuis116 in #6590
- feat(miner): register governor pause/resume chat actions (#6521) by @andriypolanski in #6587
- refactor(settings): drop Batch B's 15 config-as-code-only DB columns by @JSONbored in #6622
- feat(miner-ui): redesign run-history route with StateBoundary, skeleton, and pagination by @jaytbarimbao-collab in #6591
🐛 Fixes
- chore(ui): remove dead Breadcrumbs and ScrollFlow components by @luciferlive112116 in #6450
- fix(miner-ui): render oldestQueuedAgeMs in the overview portfolio card (#6185) by @shin-core in #6451
- fix(ui): content-shaped loading skeletons for dead-letter/maintainer/miner panels (#6178) by @nghetienhiep in #6452
- fix(ui): adopt TableScroll + caption + scope=col a11y pattern across 8 tables by @nghetienhiep in #6453
- fix(review): linked-issue claim priority theft, unscoped PR-mention pollution, hard-rule stickiness, and draft-cycling double-count by @JSONbored in #6455
- fix(miner-ui): render the events-by-type breakdown ledgers already fetches by @luciferlive112116 in #6456
- fix(review): thread commitMessages to the live slop gate, wire screenshot-gate advisory mode, and scope rate limits per-repo by @JSONbored in #6457
- fix(review): freshness-gate shadow-override promotion, audit-before-write ordering, and clear_at preservation by @JSONbored in #6458
- fix(review): defang prompt-injection payloads in RAG-retrieved reference context by @JSONbored in #6459
- fix(review): redact cohort/miner-originated/human-originated/raw-trust and bare score in public sanitizers by @JSONbored in #6460
- fix(review): include the PR body in the AI-review cache fingerprint by @JSONbored in #6463
- fix(review): honor selftune opt-out and revoked autonomy in override read-back by @JSONbored in #6464
- fix(review): pin expectedHeadSha on the contributor_cap close action by @JSONbored in #6466
- fix(review): correlate screenshot-table presence-mode evidence to the PR head SHA by @JSONbored in #6467
- fix(settings): give loopover its own autonomy config-as-code by @JSONbored in #6468
- fix(engine): exempt generated/vendored/minified files from the missing-test-evidence signal by @JSONbored in #6469
- fix(engine): stop the collision report using unscoped issue.linkedPrs for risk escalation by @JSONbored in #6470
- fix(review): give score-breakdown.ts its own vocabulary instead of the public sanitizer by @JSONbored in #6473
- fix(ui): forward errorKind so dashboards show connectivity-aware errors by @luciferlive112116 in #6476
- fix(db): renumber colliding migration 0156 to 0157 by @JSONbored in #6484
- fix(ui): render generatedAt on GateOutcomeCard and ActivationPreview by @galuis116 in #6492
- fix(test): stop createTestEnv() default leaking the bundled self-repo manifest by @JSONbored in #6493
- fix(ui): rename remaining user-visible gittensory branding to LoopOver by @JSONbored in #6499
- fix(db): grandfather the 0156 migration-number collision by @JSONbored in #6494
- fix(settings): restore draftPrClosePolicy after it was dropped by the autonomy config-as-code PR by @JSONbored in #6496
- fix(ci): repair two functional breaks left by the gittensory->loopover rename by @JSONbored in #6497
- fix(config): scrub remaining pre-rename gittensory references by @JSONbored in #6532
- refactor(test): move queue-4.test.ts's Batch A fields to manifest injection by @JSONbored in #6528
- docs(config): fix remaining gittensory residue in shipped config examples by @JSONbored in #6502
- fix(ui): wire StateBoundary's errorLabel at the six real dashboard call sites by @galuis116 in #6523
- chore: rename npm package metadata from gittensory to loopover by @JSONbored in #6500
- fix(miner): wire DEPLOYMENT.md audit into real CI execution by @RealDiligent in #6524
- feat(mcp): register plan-DAG tools + local scorer in packages/loopover-mcp by @galuis116 in #6526
- fix(ci): capture review-enrichment node:test coverage for Codecov by @RealDiligent in #6527
- refactor(test): move queue-2.test.ts's Batch A fields to manifest injection by @JSONbored in #6531
- refactor(test): move queue.test.ts/queue-5.test.ts's Batch A fields to manifest injection by @JSONbored in #6533
- refactor(test): move queue-3/queue-lifecycle-guards Batch A fields to manifest injection...
gittensory-orb orb-v2.1.0-beta.5
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.5Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.5.
What's Changed
🚀 Features
- feat(engine): add a stable, versioned getTrackRecordSummary read API by @lourincedaging0-commits in #6316
- feat(mcp): add a typed PostHog wrapper module for packages/loopover-mcp by @claytonlin1110 in #6368
- feat(mcp): register the maintain REST surface as local stdio tools by @luciferlive112116 in #6382
- docs(ams): port docs/env-reference.md to a generated website docs page (docs.ams-env-reference.tsx) by @oktofeesh1 in #6385
- feat(ui): adopt RefreshMeta on owner, miner, and digest panels by @jsdevninja in #6387
- feat(mcp): register the 8 miner write-tools on the local stdio server by @davion-knight in #6390
- feat(engine): define a shared TrustSignal type for ORB/AMS reputation bridging by @lourincedaging0-commits in #6379
- docs(ams): port docs/discovery-plane-operator-guide.md to a website docs page (docs.ams-discovery-plane.tsx) by @oktofeesh1 in #6391
- docs(ams): port docs/miner-goal-spec.md to a website docs page (docs.ams-goal-spec.tsx) by @oktofeesh1 in #6397
- docs: cover MCP tool-call telemetry in the privacy boundary by @luciferlive112116 in #6422
- docs(ams): port docs/fleet-run-manifest.md to a website docs page (docs.ams-fleet-manifest.tsx) by @oktofeesh1 in #6433
- feat(mcp): validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine by @davion-knight in #6425
- feat(mcp): record local stdio tool calls at the dispatch chokepoint by @luciferlive112116 in #6432
🐛 Fixes
- fix(mcp): honor --help for analyze-branch and preflight by @bohdansolovie in #6326
- feat(review): downscale desktop Visual-preview thumbnails in self-host mode by @JSONbored in #6347
- docs(selfhost): .env.example documents the current Orb collector/broker defaults by @dhgoal in #6352
- fix(ci): check-orb-release-due picks the true latest orb tag, not a stale beta by @dhgoal in #6353
- fix(mcp): treat a bare
helppositional as --help in parseOptions (#6257) by @nickmopen in #6362 - fix(selfhost): fail open with a metric on a token-cache Redis error by @galuis116 in #6364
- docs(selfhost): describe what the starters actually ship for critical secrets by @luciferlive112116 in #6365
- docs(selfhost): document CONFIG_DIR_EMPTY_ACKNOWLEDGED in .env.example by @galuis116 in #6367
- fix(ui): mount ConfigGeneratorYamlPreview in the config generator panel by @jsdevninja in #6371
- fix(ci): regenerate fumadocs collections unconditionally in validate-code by @JSONbored in #6375
- fix(mcp): drop autonomy levels the server removed in #4620 from the CLI by @luciferlive112116 in #6378
- fix(mcp): print unknown API compatibility in status (#6263) by @thomasalvaedison7777-lgtm in #6363
- fix(mcp): redact a parenthesis/bracket/colon-prefixed local path in redactLocalPath by @joaovictor91123 in #6369
- fix(ci): wait for all 6 test shards before Codecov posts a patch status by @JSONbored in #6386
- feat(review): give LOOPOVER_REVIEW_PLANNER a per-repo config override by @JSONbored in #6321
- feat(selfhost): make LOOPOVER_REVIEW_OPS and LOOPOVER_PUBLIC_STATS .loopover.yml-controllable by @JSONbored in #6372
- feat(loopover)!: full production cutover to loopover.ai, retire gittensory.aethereal.dev routes by @JSONbored in #6380
- docs: update remaining links/prose from gittensory.aethereal.dev to loopover.ai by @JSONbored in #6381
- fix(selfhost): guard pg-adapter's rollback so it can't mask the original batch error by @galuis116 in #6392
- feat(selfhost): make LOOPOVER_REVIEW_DRAFT and LOOPOVER_AUTO_FILE_DRIFT_ISSUES .loopover.yml-controllable by @JSONbored in #6373
- fix(ci): resolve wrangler via require.resolve, never PATH, for cf-typegen by @JSONbored in #6384
- chore(rees): remove dead captureError export in review-enrichment/src/sentry.ts by @galuis116 in #6393
- fix(selfhost): raise ollama's default batch size to match bge-m3's context window by @JSONbored in #6394
- docs(rees): README analyzer table lists all 57 registered analyzers by @dhgoal in #6395
- fix(ci): derive version-copy floor from single source of truth by @nghetienhiep in #6374
- fix(db): order pull-request list queries deterministically by @JSONbored in #6388
- fix(mcp): sanitize every terminal path that prints API-controlled text by @luciferlive112116 in #6396
- test(ci): give check-mcp-package.mjs an injectable, unit-testable seam by @nghetienhiep in #6389
- chore(miner): remove dead config-precedence.js wrapper module (#6159) by @shin-core in #6400
- docs: document OLLAMA_NUM_BATCH in .env.example by @JSONbored in #6423
- fix(api): open the public no-credential routes to any CORS origin by @JSONbored in #6401
- chore(mcp): remove dead referenceScorePreviewCommand export in local-branch.js by @galuis116 in #6402
- chore(ci): add .github/superagent.yml, exempt established repeat contributors by @JSONbored in #6435
- fix(engine): exclude lockfiles and dependency manifests from trivial-churn detection by @JSONbored in #6429
- chore(signals): converge change-guardrail.ts and preflight-limits.ts onto their @loopover/engine shims by @galuis116 in #6403
- fix(extension): handle a rejected sendMessage in loadOpportunityBadge by @dhgoal in #6430
- chore(miner-ui): move 3 test-only fixture factories out of the lib's public API into their test files by @real-venus in #6438
- chore(review): converge 9 hand-duplicated src/review/ files onto their @loopover/engine shims by @galuis116 in #6437
- fix(miner): expire claims orphaned by a dead process at claim time by @luciferlive112116 in #6441
- fix(ci): check-mcp-package imports the shared secret-shape detector by @dhgoal in #6447
- fix(ci): skip the heavy job fan-out for draft pull requests by @JSONbored in #6448
- chore(engine): remove dead isDuplicateClusterWinner (#6172) by @shin-core in #6434
New Contributors
- @thomasalvaedison7777-lgtm made their first contribution in #6363
Full Changelog: orb-v2.1.0-beta.4...orb-v2.1.0-beta.5
gittensory-orb orb-v2.1.0-beta.4
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.4Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.4.
What's Changed
🚀 Features
- feat(miner): export buildIssueQualityReport for self-review (#6057) by @bohdansolovie in #6142
- feat(mcp): register 4 maintainer/repo-owner intake tools in packages/loopover-mcp by @jaytbarimbao-collab in #6199
- refactor(settings): converge 4 duplicated settings files onto their loopover-engine shims by @nghetienhiep in #6201
- feat(miner-ui): add a pause-reason input to the governor control (#6186) by @nghetienhiep in #6207
- feat(api): expose self-tune override audit and clear routes (#6168) by @nghetienhiep in #6215
- feat(api): wire internal decision/calibration routes, drop duplicate handleParity by @nghetienhiep in #6216
- feat(miner): wire the leakage-safe replay harness into the calibration flow (#3011) by @nghetienhiep in #6219
- feat(mcp): add loopover_get_pr_reviewability tool on both MCP servers by @lourincedaging0-commits in #6222
- feat(docs): migrate loopover-ui docs pages to fumadocs-mdx content pipeline by @oktofeesh1 in #6271
- docs(mcp): clarify ambiguous loopover-mcp stdio tool descriptions for LLM selection by @nghetienhiep in #6270
- feat(review): expose a repo's effective self-tuned gate thresholds via a read-only endpoint by @lourincedaging0-commits in #6307
- feat(mcp): compute loopover_lint_pr_text in-process from the shared engine by @nghetienhiep in #6308
- docs(ams): port DEPLOYMENT.md to a website docs page (docs.ams-deployment.tsx) by @oktofeesh1 in #6312
- docs(ams): port docs/operations-runbook.md to a website docs page (docs.ams-operations-runbook.tsx) by @oktofeesh1 in #6318
- feat(mcp): add
tools search <query>for fuzzy tool discovery by @nghetienhiep in #6317 - feat(mcp): compute loopover_check_slop_risk in-process from the shared engine by @nghetienhiep in #6329
- docs(ams): port docs/observability.md to a website docs page (docs.ams-observability.tsx) by @oktofeesh1 in #6331
- feat(registry): add subnet-funded pool association to the repo model (#6320) by @nghetienhiep in #6333
- feat(mcp): categorize and group loopover-mcp tools output (#6301) by @nghetienhiep in #6336
- docs(ams): port docs/unattended-scheduling.md to a website docs page (docs.ams-unattended-scheduling.tsx) by @oktofeesh1 in #6338
- feat(miner): add tenant-scoping columns to all four local ledger schemas by @JSONbored in #6340
- feat(review): add a visible caption under each Visual/Scroll preview thumbnail by @JSONbored in #6341
- feat(mcp): add telemetry enable/disable CLI command with persisted opt-in by @nghetienhiep in #6348
- docs(ams): port docs/sizing.md to a website docs page (docs.ams-sizing.tsx) by @oktofeesh1 in #6351
- feat(mcp): add a typed posthog telemetry wrapper for the remote server by @nghetienhiep in #6355
- feat(mcp): instrument the remote tool-dispatch chokepoint with PostHog events by @claytonlin1110 in #6358
- docs(ams): port docs/config-precedence.md to a website docs page (docs.ams-config-precedence.tsx) by @oktofeesh1 in #6360
🐛 Fixes
- feat(grafana): add additive maintainer review event panels by @james3773 in #6138
- fix(settings): parse PROTECTED_AUTOCLOSE_AUTHORS_EXTRA via the shared login-list parser (#audit-3.13) by @real-venus in #6214
- fix(queue): honor autoCloseExemptLogins in the repeated-draft-cycling review-evasion guard by @real-venus in #6217
- fix(engine): detect activity changes once the progress tail is full by @luciferlive112116 in #6218
- chore(signals): remove dead deriveContributionLanes superseded by onboarding-pack's contribution-lane model by @real-venus in #6220
- chore(miner): remove dead parseJsonFlag from portfolio-queue-cli by @dhgoal in #6198
- docs(miner): fix stale header comment in submission-freshness-check by @dhgoal in #6200
- fix(github): only swallow 404 in removePullRequestLabel (#6192) by @bohdansolovie in #6211
- chore(review): remove dead isIgnoredReviewAuthor wrapper (zero callers, thinly wraps decideReviewEligibility) by @real-venus in #6223
- fix(miner): expose the freeform idea feasibility gate via a CLI command by @nghetienhiep in #6224
- fix(engine): normalize classifyPortfolioConvergence's numeric inputs by @luciferlive112116 in #6225
- docs(review): stop claiming the self-improve D1 tables don't exist by @luciferlive112116 in #6232
- fix(settings): accept [bot]-suffixed logins in contributorBlacklist by @jaytbarimbao-collab in #6233
- docs(miner-ui): README no longer claims the data views are unshipped by @dhgoal in #6242
- fix(miner): exit 2, not 1, on a secret-mount failure by @dhgoal in #6248
- fix(miner): wrap pr-disposition-poller GitHub calls in fetchWithRetry (#4829) by @jaytbarimbao-collab in #6265
- fix(engine): converge gate-verdict + finding-severity calibration onto reviewer-consensus's zero-weight + malformed-repo handling by @real-venus in #6251
- chore(miner): remove 3 dead pre-unification governor gates superseded by the chokepoint ladder by @real-venus in #6278
- test(github): verify installation-token isolation under multi-tenant concurrency by @JSONbored in #6277
- test(queue): verify concurrent cross-tenant execution isolation by @JSONbored in #6299
- fix(ui): generate fumadocs-mdx collections/* via postinstall by @oktofeesh1 in #6310
- fix(security): redact Linear and session GitHub ciphertext in D1 export by @RealDiligent in #6309
- fix(mcp): complete tab-completion for
cache listby @luciferlive112116 in #6298 - fix(github): retry label and assignee writes on stale installation tokens by @bohdansolovie in #6306
- docs(selfhost): document Sentry once, matching the code's own default by @luciferlive112116 in #6315
- docs(db): guardrail listInstallations/listRepositories against tenant-facing misuse by @JSONbored in #6328
- fix(review): exclude bare .ts app-source files from isVisualPath by @JSONbored in #6330
- feat(selfhost): give sweep-watchdog and PR-reconciliation a per-repo opt-out by @JSONbored in #6319
- fix(ci): derive production-smoke MCP versions from package.json by @RealDiligent in #6334
- fix(review): make the visual-preview poll budget durable per head SHA by @JSONbored in #6335
- fix(selfhost): fail fast when a configured _FILE secret is unreadable by @RealDiligent in #6337
- refactor(mcp): consolidate local-path redaction into one shared module by @nghetienhiep in #6339
- fix(mcp): align env token precedence with the documented order by @nghetienhiep in #6342
- fix(selfhost): log blob-store path-traversal gets distinctly from misses by @RealDiligent in #6343
- fix(ci): exit non-zero when lockfile workspace sync misses by @RealDiligent in #6344
- fix(ci): share MCP tarball allowlist including shipped lib files by @RealDiligent in #6346
- fix(rees): reconstruct trailing-newline patches instead of failing closed (#6254) by @nickmopen in #6354
- fix(rees): use the shared diff-file-header predicate in api-break/caller-impact (#6255) by @nickm...
gittensory-orb orb-v2.0.0
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.0.0Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.0.0.
What's Changed
🚀 Features
- feat(observability): add an AMS cross-link panel to the resource hub by @jaytbarimbao-collab in #5640
- docs(miner): publish a measured CPU/RAM/disk sizing table for laptop vs fleet mode by @galuis116 in #5645
- feat(miner): add a Grafana dashboard for coding-agent-driver usage, cost, and attempt outcomes by @JSONbored in #5646
- feat(miner-hands): resolve the own-rejection-history trigger of
rejectionSignaledby @jeffrey701 in #5657 - feat(miner): extract and persist real coding-agent token usage by @JSONbored in #5658
- feat(miner): track real per-issue attempt-history on the portfolio queue by @JSONbored in #5661
- refactor(engine): rename worktree-allocator to worktree-plan to end the miner filename collision by @jaytbarimbao-collab in #5674
- feat(miner): read loop-cli convergence history from the persisted portfolio queue by @lourincedaging0-commits in #5679
- feat(services): wire computeFindingAcceptance into the operator dashboard by @JSONbored in #5684
- feat(miner): wire AMS's dead orb-export.js telemetry stub to a real central ingest endpoint by @JSONbored in #5697
- feat(ui): make maintainer data tables responsive and keyboard-accessible (#794) by @shinkaito-ai in #5665
- feat(miner): wire real reputationHistory into the Governor's self-reputation throttle by @lourincedaging0-commits in #5685
- refactor(engine): extract the deny-hook pure logic into gittensory-engine by @jeffrey701 in #5701
- feat(miner-hands): wire real self-plagiarism data into the Governor chokepoint by @jeffrey701 in #5706
- feat(ui): add browser Sentry with private source maps by @JSONbored in #5709
- feat(miner): wire stack detection into the attempt prompt by @carlh7777 in #5722
- docs: audit AMS global-singleton state for tenant-leak risk by @davion-knight in #5758
- feat(selfhost): add a read-only pre-deploy diff-summary script by @JSONbored in #5747
- docs(miner): AMS storage-abstraction research — datastore backend comparison by @lourincedaging0-commits in #5760
- refactor(engine): extract the pull-request-target-key parser into loopover-engine by @reyanthony062001-ops in #5762
- docs(miner): AMS auth/identity research — hosted login-layer options by @lourincedaging0-commits in #5764
- feat(api): add post-merge incident reporting for already-merged PRs by @nghetienhiep in #5766
- fix(review): trim the Improvement signal row to a concise value rating by @nickmopen in #5767
- feat(review): add a shared beta-collapsible convention for the PR comment by @nickmopen in #5769
- docs(engine): verify git mv rename recognition in coverage/diff tooling by @lourincedaging0-commits in #5770
- fix(review): never render a ❌ for a non-Gittensor contributor (#5100) by @nickmopen in #5774
- feat(engine): extract content-lane's pure leaf modules to loopover-engine by @real-venus in #5775
- fix(api): audit registered-vs-installed dashboard/digest copy by @galuis116 in #5776
- feat(engine): extract settings leaf modules to loopover-engine by @real-venus in #5779
- refactor(engine): move the unlinked-issue candidate pre-filter into the shared engine by @luciferlive112116 in #5778
- feat(engine): add a load-testing harness for iterate-loop under concurrent load by @nghetienhiep in #5781
- docs(spec): idea-intake bridge schema by @lourincedaging0-commits in #5783
- docs(engine): document the deliberate gate-advisory twin divergence by @real-venus in #5784
- feat(selfhost): optional Infisical secrets management for self-host deploys by @claytonlin1110 in #5785
- refactor(queue): extract the public-comment merge-facts derivation from maybePublishPrPublicSurface by @glorydavid03023 in #5787
- feat(review): add aggregate fix-handoff block renderer by @nghetienhiep in #5788
- feat(miner): pre-execution feasibility check for freeform ideas by @lourincedaging0-commits in #5789
- feat(review): synthesize the 'Contributor next steps' collapsible into a prioritized step by @real-venus in #5791
- feat(mcp): add the idea-intake bridge and loopover_intake_idea tool by @luciferlive112116 in #5792
- feat(miner): add cross-repo evaluation harness (#4788) by @andriypolanski in #5790
- docs(selfhost): design doc for the scheduled docs-drift audit sweep by @galuis116 in #5794
- feat(mcp): route ideas through intake into a loop claim plan by @luciferlive112116 in #5795
- feat(mcp): deliver a completed loop iteration as a customer results payload by @luciferlive112116 in #5797
- feat(mcp): stream loop progress to the customer via a progress snapshot by @luciferlive112116 in #5798
- refactor(engine): extract signals engine with re-export shim (#4884) by @andriypolanski in #5800
- feat(engine): per-tenant resource quota evaluation by @lourincedaging0-commits in #5801
- feat(mcp): evaluate when a rented loop should escalate to a human by @luciferlive112116 in #5806
- docs(engine): document the nine governor primitives in the package README by @real-venus in #5851
- docs: privacy audit of AMS telemetry/export surfaces for cross-tenant leakage by @davion-knight in #5759
- feat(selfhost): add n8n workflows and MinIO object storage compose profiles (#1219) by @andriypolanski in #5777
- feat(miner): honor kill-switch mid-attempt during iterate-loop by @jony376 in #5799
- feat(engine): per-tenant configuration layer by @lourincedaging0-commits in #5804
- docs(engine): add a Tenant quota README section by @davion-knight in #5860
- docs(engine): document the Rent-a-Loop pipeline modules by @davion-knight in #5868
🐛 Fixes
- feat(miner): persist coding-agent provider + real cost on the attempt log by @JSONbored in #5637
- refactor(mcp): retire the loopover_/gittensory_ legacy tool-name aliases by @JSONbored in #5648
- ci(selfhost): stop publishing the legacy gittensory-selfhost image tag by @JSONbored in #5650
- chore(config): retire the .gittensory.yml config-filename dual-read shim by @JSONbored in #5651
- refactor(env): retire GITTENSORY_/LOOPOVER_ dual-read across the worker by @JSONbored in #5652
- fix(miner): wire recordOwnSubmission's write side into the real attempt pipeline by @JSONbored in #5678
- fix(openapi): declare in:path parameters for every {templated} path segment by @JSONbored in #5664
- docs(miner): distinguish hosted vs stdio find_opportunities tool names by @JSONbored in #5666
- refactor(engine): extract shared telemetry-anonymization primitive by @JSONbored in #5683
- fix(queue): widen rag-index fan-out to match the regate-sweep candidate set by @JSONbored in #5686
- fix(queue): migrate burden-forecast fan-out from isRegistered to isInstalled by @JSONbored in #5687
- fix(github): retarget the backfill-registered-repos job family from isRegistered to isInstalled by @JSONbored in #5688
- fix(signals): scope contributor-open-pr-monitor to isI...
gittensory-orb orb-v2.1.0-beta.3
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.3Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.3.
What's Changed
🚀 Features
- feat(miner): add bounded retry/backoff to claim-conflict-resolver's post-submission live-state check by @jaytbarimbao-collab in #6081
- feat(mcp): add loopover_set_agent_paused and loopover_set_action_autonomy tools by @nghetienhiep in #6102
- docs(api): add operation-level summaries to all OpenAPI routes by @cleanjunc in #6111
- docs(selfhost): add a combined ORB + AMS self-host quickstart page by @davion-knight in #6123
- feat(engine): per-loop compute consumption ledger entries by @luciferlive112116 in #6126
- feat(selfhost): add real end-to-end review-latency metric by @JSONbored in #6127
- feat(engine): summarize the active rented-loop fleet for internal ops by @luciferlive112116 in #6130
- feat(engine): assemble the customer-facing loop dashboard view by @luciferlive112116 in #6136
🐛 Fixes
- review: drop redundant banner + demote readiness chip off-ready by @JSONbored in #6077
- fix(selfhost): correct stale gittensory_ metric names in .env.example by @galuis116 in #6079
- fix(engine): reject non-finite agent-sdk usage so it can't crash the iterate loop (#5827) by @shin-core in #6078
- fix(review): close draft-conversion evasion after review publishes, not just mid-review by @JSONbored in #6080
- fix(orb): add per-row identifying context to relay bulk-delete drop logs by @JSONbored in #6082
- fix(observability): link the Miner usage (AMS) dashboard from the resource hub by @luciferlive112116 in #6084
- chore: fix gittensory -> loopover rename residue in docs by @JSONbored in #6089
- config: merge the split review: block in .loopover.yml.example by @JSONbored in #6088
- fix(miner): label rejection-signaled aborts with the actual trigger reason by @RealDiligent in #6085
- fix(miner): bound GitHub reads in the attempt-gating path with a per-request timeout by @JSONbored in #6091
- config: guard review.fields key list against silent drift by @JSONbored in #6092
- fix(webhook): recognize full GitHub issue URL in closing keywords by @JSONbored in #6093
- fix(observability): correct LoopoverOrbExportErrorRateHigh's stale runbook metric name by @galuis116 in #6094
- fix(miner-ui): surface portfolio queue action failures to the operator by @RealDiligent in #6096
- review: collapse signal table into decision drivers + advisory fold by @JSONbored in #6083
- review: aggregate comment-size budget guard by @JSONbored in #6095
- fix(webhook): don't trust a sparse first-ever sync as confirmed no linked issue by @JSONbored in #6110
- test(mcp): cover find-opportunities searchQuery, goal-spec, and token-fallback paths by @davion-knight in #6106
- fix(miner): bound opportunity-fanout's GitHub reads with a per-request timeout by @JSONbored in #6107
- docs(selfhost): document ams-observability and backup in the compose PROFILES header by @galuis116 in #6109
- fix(selfhost): open Grafana's port for --profile observability, opt-in by @luciferlive112116 in #6108
- fix(mcp): make loopover-mcp CLI failures respect --json by @RealDiligent in #6113
- docs(selfhost): document every docker-compose.yml var in .env.example by @luciferlive112116 in #6118
- fix(signals): sync extension overlay redaction with canonical PUBLIC_UNSAFE_TERMS by @davion-knight in #6119
- fix(miner): share repo-clone.js's path-safety validation across owner/repo CLI parsers by @nghetienhiep in #6120
- fix(queue): close self-close review-evasion after publish, not just mid-review by @JSONbored in #6122
- perf(queue): fetch copycat candidate files concurrently, not sequentially by @JSONbored in #6124
- feat(auth): persist the GitHub user-to-server token from login by @JSONbored in #6125
- review: remove the legacy comment renderer (#6103) by @JSONbored in #6128
- feat(auth): refresh the session's GitHub token near/past its 8h expiry by @JSONbored in #6129
- feat(miner): resolve GitHub token from loopover-mcp session for AMS git operations by @JSONbored in #6132
- review: unwind the retired unifiedComment feature key by @JSONbored in #6134
- fix(auth): rate-limit the GitHub token-retrieval endpoint by session, not IP by @JSONbored in #6135
- fix(auth): rate-limit /v1/auth/extension/session by session, not IP by @JSONbored in #6137
Full Changelog: orb-v2.1.0-beta.2...orb-v2.1.0-beta.3
gittensory-orb orb-v2.1.0-beta.2
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.2Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.2.
What's Changed
🐛 Fixes
- fix(review): preserve lockfile-tamper entry tracking across nested dependencies (#5837) by @RealDiligent in #6038
- fix(miner): reject stray positional arguments in calibration-cli by @luciferlive112116 in #6048
- fix(docs): sweep remaining gittensory-* rename residue in self-host ops docs by @nghetienhiep in #6044
- fix(queue): cap duplicate-sibling live GitHub fetch concurrency (#5835) by @RealDiligent in #6049
- fix(miner): honor --json on the discover --dry-run failure path by @reyanthony062001-ops in #6051
- fix(mcp): document LOOPOVER_LOGIN / GITHUB_LOGIN in loopover-mcp --help by @jaytbarimbao-collab in #6052
- feat(miner): add opt-in Sentry error tracking + fix 4 silent-failure gaps by @JSONbored in #6045
- docs(claude): gardening backlog floor is continuous + milestone/relationship discipline by @JSONbored in #6063
- fix(miner): enforce maxConcurrentClaims before claiming an issue by @RealDiligent in #6061
- docs(miner): correct three comments describing gaps that no longer exist by @luciferlive112116 in #6064
- fix(miner): stop hooks check --tool/--input consuming an adjacent flag as their value by @reyanthony062001-ops in #6062
- fix(config): warn on unknown top-level fields in the focus-manifest validator by @jaytbarimbao-collab in #6075
- fix(miner): honor --json on the manage-poll --dry-run failure path by @nghetienhiep in #6072
Full Changelog: orb-v2.1.0-beta.1...orb-v2.1.0-beta.2
gittensory-orb orb-v2.1.0-beta.1
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.1Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.1.
What's Changed
🚀 Features
- feat(gate): configurable advisory check-runs so a stuck external status never freezes the gate (#4372) by @nickmopen in #5793
- feat(mcp): expose skipped-PR audit trail as a maintainer MCP tool by @nghetienhiep in #5905
- feat(mcp): expose repo registration readiness as a read-only MCP tool by @nghetienhiep in #5906
- feat(review): add OpenAI and Anthropic API key patterns to secret scan by @oktofeesh1 in #5907
- feat(miner): expose the calibration report as a read-only MCP tool by @oktofeesh1 in #5909
- feat(selfhost): add a --json output mode to loopover-config-lint (#5931) by @nickmopen in #5979
- docs(engine): add TSDoc to goal-model.ts by @davion-knight in #5981
- feat(miner): expose manage-phase status as a read-only MCP tool by @cleanjunc in #5984
- feat(review): wire the copycat containment engine into the gate by @oktofeesh1 in #5999
- feat(mcp): expose .loopover.yml config recommendations as a read-only MCP tool by @oktofeesh1 in #6016
- feat(orb): wire Sentry into the Cloudflare Worker (central ORB broker) by @JSONbored in #6036
🐛 Fixes
- feat(ci): upload loopover-ui bundle stats to Codecov by @JSONbored in #5961
- fix(rebrand): rename gittensory-repo-focus-manifest.ts module by @JSONbored in #5962
- fix(rebrand): rename gittensory-mcp prose cluster and fix release-candidate binary name by @JSONbored in #5965
- fix(rebrand): rename gittensory-mcp CLI snippets and JSON keys in apps/loopover-ui by @JSONbored in #5966
- fix(review): scan added lines whose content starts with ++ for secrets by @andriypolanski in #5952
- fix(signals): filter public-unsafe wantedPaths/preferredLabels from manifest findings by @claytonlin1110 in #5967
- fix(queue): scan patch-less copied/changed/unchanged files for secret scan by @andriypolanski in #5951
- fix(review): sanitize control characters in RAG chunk text before Postgres insert by @JSONbored in #5969
- fix(review): treat a blank consentPhrase as unset in evaluateClaCheck (#5838) by @shin-core in #5968
- fix(selfhost): preserve stack traces and split fingerprints for RAG/enrichment Sentry captures by @JSONbored in #5970
- fix(review): apply the prompt-injection reputation override before the minSample guard by @jeffrey701 in #5975
- fix(review): hash a JSON payload to prevent linked-issue-satisfaction cache-key collisions by @jeffrey701 in #5976
- feat(selfhost): warn loudly when the private config mount is empty by @JSONbored in #5977
- docs(miner): point the discovery-plane operator guide at the now-shipped discovery-index contract by @lourincedaging0-commits in #5978
- fix(selfhost): give structural AI-provider config errors a long circuit-breaker cooldown by @JSONbored in #5980
- fix(signals): filter wantedPaths before interpolating focus-area PR guidance by @reyanthony062001-ops in #5987
- fix(selfhost): instrument the silent orb-relay-drain reentrancy skip by @JSONbored in #5988
- fix(selfhost): default miner DR scripts to the post-rename config dir by @davion-knight in #5991
- fix(mcp): make decision-pack and repo-decision CLI commands honor --help by @nghetienhiep in #5995
- fix(review): wire skipAutomationBotAuthors into .loopover.yml config by @JSONbored in #5986
- fix(review): fold repo into ops_anomaly's Sentry fingerprint by @JSONbored in #5989
- fix(signals): make blockers explain every not-ready registration report (#5946) by @shin-core in #5992
- fix(miner): reject dash-prefixed baseBranch/remoteUrl in repo-clone (#5923) by @RealDiligent in #5998
- fix(selfhost): attach a pg.Pool error listener to prevent uncaught-exception crashes by @JSONbored in #5993
- fix(review): make size-gate file/line thresholds configurable by @JSONbored in #5997
- fix(selfhost): default miner prometheus export script to the real bin name by @davion-knight in #6000
- fix(engine): self-plagiarism election tie fails closed as documented by @nghetienhiep in #6001
- fix(miner): stop governor chokepoint gate from burning rate-limit quota on later-stage denials by @nghetienhiep in #6002
- fix(signals): flag the .at(-1)/.at(0) idiom in boundary-test-generation by @lourincedaging0-commits in #6006
- fix(miner): reject unknown migrate CLI arguments instead of ignoring them by @cleanjunc in #6010
- fix(review): give LOOPOVER_DUPLICATE_WINNER a per-repo config override by @JSONbored in #6005
- fix(review): add missing duplicationDelta to REES_ANALYZER_NAMES by @lourincedaging0-commits in #6009
- fix(miner): parse queue item ids from the end so IPv6-literal hosts round-trip (#5924) by @RealDiligent in #6008
- docs(claude): teach contributor-pipeline-gardening the gate's explicit-text-only enforcement by @JSONbored in #6019
- fix(queue): log unrecognized job types in processJob instead of dropping silently (#5836) by @shin-core in #6014
- fix(selfhost): tag the fleet compose image loopover-miner:latest by @davion-knight in #6013
- fix(miner): document --dry-run in governor pause/resume usage banner by @nghetienhiep in #6017
- fix(orb): close 5 silent-failure and missing-timeout gaps in the ORB subsystem by @JSONbored in #6007
- test(review): cover extractPreviewUrl branches in preview-url (#5848) by @boskodev790 in #6015
- fix(review): honor ContentRepoSpec.urlFields in directory-index synthesis by @jsdevninja in #6018
- fix(signals): carry labelPolicy.note through focusManifestPolicyToCompilerOutput by @luciferlive112116 in #6020
- fix(miner): honor --json on purge arg-parse errors by @nghetienhiep in #6033
- fix(miner): honor --json on governor pause/resume/status error paths (#5914) by @cleanjunc in #6034
- fix(review): give LOOPOVER_OPEN_PR_FILE_COLLISION a per-repo config override by @JSONbored in #6035
- docs(claude): flag the docs-architecture migration in contributor-pipeline-gardening by @JSONbored in #6042
- test(review): full branch coverage for the linked-issue-hard-rules-config src twin by @jaytbarimbao-collab in #6040
- test(review): add direct unit tests for review-thread-findings by @jaytbarimbao-collab in #6043
- fix(engine): normalize worktree-pool maxConcurrency so a NaN cap can't disable it by @reyanthony062001-ops in #6041
- chore(release): bump orb-manifest target to 2.1.0 by @JSONbored in #6047
New Contributors
- @shin-core made their first contribution in #5968
Full Changelog: orb-v2.0.0...orb-v2.1.0-beta.1
ui-kit: v1.0.0
1.0.0 (2026-07-14)
⚠ BREAKING CHANGES
- build: every gittensory-prefixed directory under apps/ and packages/ is now loopover-prefixed, and the two extension packages' npm names changed from @jsonbored/gittensory-* to @loopover/*. No dual-path/alias, per the epic's full-cutover mandate.