This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+8 more
Affected surfaces
Summary
AI summaryMerge and delete actions now automatically remove remote cr/* branches, fixing stale branch accumulation.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds `contentrain prune` CLI command to remove leaked merged remote branches. Adds `contentrain prune` CLI command to remove leaked merged remote branches. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Feature | Low |
Introduces `contentrain_doctor` "Remote branches" health check. Introduces `contentrain_doctor` "Remote branches" health check. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Feature | Low |
Adds `contentrain_branch_list` option to view remote branches (`remote: true`). Adds `contentrain_branch_list` option to view remote branches (`remote: true`). Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Feature | Low |
Exports new branch‑lifecycle utilities from `@contentrain/mcp/git/branch-lifecycle`. Exports new branch‑lifecycle utilities from `@contentrain/mcp/git/branch-lifecycle`. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Improves merged‑branch detection using patch‑id equivalence when ancestry breaks. Improves merged‑branch detection using patch‑id equivalence when ancestry breaks. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Fixes fast‑forward guard in transaction layer that previously never fired. Fixes fast‑forward guard in transaction layer that previously never fired. Source: llm_adapter@2026-07-16 Confidence: high |
— |
| Bugfix | Medium |
Deletes remote cr/* branches after merge or deletion. Deletes remote cr/* branches after merge or deletion. Source: llm_adapter@2026-07-16 Confidence: low |
— |
Full changelog
Minor Changes
-
ee8da2d: Delete remote cr/* branches on merge/delete and harden merged-branch detection
Every review-mode save pushed its
cr/*branch to origin, but nothing ever deleted the remote copy after a merge — stale branches accumulated monotonically (one per save+merge cycle) and rendered as phantom pending reviews in Studio.mergeBranch(and thereforecontentrain_merge,contentrain merge,contentrain diff, the Serve UI approve endpoints, andLocalProvider.mergeBranch) now deletes the merged branch's remote copy — best-effort: failures surface as aremote.warning, never as a failed merge. Default on; opt out withremoteBranchCleanup: falseinconfig.json. Note: deleting a pushed branch closes any open PR/MR on it.contentrain_branch_delete, the Serve UI reject endpoint,contentrain diff's delete action, andLocalProvider.deleteBranchremove the remote copy too.contentrain_branch_deletealso supports remote-only deletion when the local ref is already gone.- GitHub/GitLab providers delete the source branch after a successful API merge (opt out per call with
mergeBranch(..., { removeSourceBranch: false })). - Merged-branch detection (
isMerged,cleanupMergedBranches,checkBranchHealth) now falls back to patch-id equivalence (git cherry) when ancestry breaks — merged branches no longer flip to "unmerged" after a base-history rewrite. Also fixes the fast-forward guard in the transaction layer, which previously never fired (merge-base --is-ancestorsignals via exit code with empty stderr, which simple-git reports as success). contentrain_doctorgains a "Remote branches" check (authoritativels-remotecount, offline-safe);contentrain_branch_listacceptsremote: truefor a remote view.- New
contentrain pruneCLI command drains already-leaked merged remote branches (--dry-run/--yes/--json), andcontentrain_submitlazily prunes up to 20 merged remote leftovers per run. - New exports from
@contentrain/mcp/git/branch-lifecycle:deleteRemoteBranch,listRemoteCrBranches,pruneMergedRemoteBranches,isRefMerged,classifyMergedBranches.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Contentrain/ai
Local-first MCP server for AI content governance — 13 tools for model/content CRUD, validation, normalization, and i18n across any framework.
Related context
Earlier breaking changes
- v@contentrain/[email protected] `validateModelDefinition` now returns `{ errors, warnings }` instead of a string array.
- v@contentrain/[email protected] `model_save` rejects models with unknown keys, `min > max`, invalid constraints, and `unique` on singletons.
- v@contentrain/[email protected] `content_save` now validates before committing and rejects invalid content.
- v@contentrain/[email protected] `validateModelDefinition` now returns `{ errors, warnings }` instead of a string array.
- v@contentrain/[email protected] `model_save` rejects models with unknown keys, `min > max`, invalid constraints, and `unique` on singletons.
Beta — feedback welcome: [email protected]