chore(release): version packages - #119
Merged
Merged
Conversation
✅ Deploy Preview for contentrain-ai ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
contentrain@0.11.0
Minor Changes
ea328a5: Divergence becomes a product state, and reconcile becomes its exit.
Truth first (types, mcp, cli). A diverged base branch — commits the
contentrainbranch lacks, the state a dual-domain migration PR leavesbehind — is no longer reported as a failed write. The content lands on
contentraineither way; auto-merge writes andcontentrain_mergenowreturn
base_advance: 'advanced' | 'blocked_diverged'(shared vocabularywith Studio's approve contract — a PR is an attachment, never a third
state) plus
remote_push: 'pushed' | 'rejected' | 'no-remote', where anon-fast-forward push rejection used to be swallowed silently.
mergeBranchgains the fetch + base-sync pre-step the write path alreadyhad, so one clean base commit no longer kills every approve; the merged
cr/*branch is pruned even when the advance is blocked, ending thephantom pending-review rows in the serve UI.
contentrain_statusandcontentrain statuscount BOTH directions (in_sync / content_ahead / base_ahead / diverged) — one-directional counting reported the exactstate that blocks every advance as "in sync". Serve approve endpoints
return the new fields and carry structured error data; transaction-layer
fetch/push is hardened (no credential prompts, block timeout).
The reconcile primitive (types, mcp).
planReconcile(
@contentrain/mcp/core/ops) is a content-aware three-way merge overthree ref-bound
RepoReaders (merge-base / contentrain / base). One sidechanged → mechanical merge at entry-, key-, and term+locale granularity;
both sides changed the same item → a
ConflictItemwith a CLOSEDcodeunion (consumers key localized editor questions on it) and an id that
hashes position AND values — a resolution made against a stale dry-run is
dropped and the conflict re-reported (compare-and-set). Document bodies
are never text-merged; models carry
suggested: 'theirs'as advice,never auto-applied; context.json is always regenerated.
RepoProvidergains optional
getMergeBase/createMergeCommitmembers and theoptional
mergeCommitcapability (GitHub: two-parent Git Data APIcommit; GitLab: absent, MR fallback; both keep external
implementscode compiling).
Executors and surfaces (mcp, cli).
reconcileBranches(
@contentrain/mcp/git/reconcile) runs a realgit merge --no-commitin a temp worktree and writes the entire plan over it — the planner is
authoritative for content paths, git for everything else — then commits
with two parents and fast-forwards the base.
contentrain_reconcile(new tool, local-only, dry_run-first like
contentrain_apply) andcontentrain reconcile(interactive CLI: plan summary, one ours/theirsquestion per conflict,
--yesnever defaults a conflict) are theproduct doors. Every
blocked_divergedsurface names them as the exit.Patch Changes
@contentrain/mcp@3.1.0
Minor Changes
ea328a5: Divergence becomes a product state, and reconcile becomes its exit.
Truth first (types, mcp, cli). A diverged base branch — commits the
contentrainbranch lacks, the state a dual-domain migration PR leavesbehind — is no longer reported as a failed write. The content lands on
contentraineither way; auto-merge writes andcontentrain_mergenowreturn
base_advance: 'advanced' | 'blocked_diverged'(shared vocabularywith Studio's approve contract — a PR is an attachment, never a third
state) plus
remote_push: 'pushed' | 'rejected' | 'no-remote', where anon-fast-forward push rejection used to be swallowed silently.
mergeBranchgains the fetch + base-sync pre-step the write path alreadyhad, so one clean base commit no longer kills every approve; the merged
cr/*branch is pruned even when the advance is blocked, ending thephantom pending-review rows in the serve UI.
contentrain_statusandcontentrain statuscount BOTH directions (in_sync / content_ahead / base_ahead / diverged) — one-directional counting reported the exactstate that blocks every advance as "in sync". Serve approve endpoints
return the new fields and carry structured error data; transaction-layer
fetch/push is hardened (no credential prompts, block timeout).
The reconcile primitive (types, mcp).
planReconcile(
@contentrain/mcp/core/ops) is a content-aware three-way merge overthree ref-bound
RepoReaders (merge-base / contentrain / base). One sidechanged → mechanical merge at entry-, key-, and term+locale granularity;
both sides changed the same item → a
ConflictItemwith a CLOSEDcodeunion (consumers key localized editor questions on it) and an id that
hashes position AND values — a resolution made against a stale dry-run is
dropped and the conflict re-reported (compare-and-set). Document bodies
are never text-merged; models carry
suggested: 'theirs'as advice,never auto-applied; context.json is always regenerated.
RepoProvidergains optional
getMergeBase/createMergeCommitmembers and theoptional
mergeCommitcapability (GitHub: two-parent Git Data APIcommit; GitLab: absent, MR fallback; both keep external
implementscode compiling).
Executors and surfaces (mcp, cli).
reconcileBranches(
@contentrain/mcp/git/reconcile) runs a realgit merge --no-commitin a temp worktree and writes the entire plan over it — the planner is
authoritative for content paths, git for everything else — then commits
with two parents and fast-forwards the base.
contentrain_reconcile(new tool, local-only, dry_run-first like
contentrain_apply) andcontentrain reconcile(interactive CLI: plan summary, one ours/theirsquestion per conflict,
--yesnever defaults a conflict) are theproduct doors. Every
blocked_divergedsurface names them as the exit.Patch Changes
@contentrain/types@1.2.0
Minor Changes
ea328a5: Divergence becomes a product state, and reconcile becomes its exit.
Truth first (types, mcp, cli). A diverged base branch — commits the
contentrainbranch lacks, the state a dual-domain migration PR leavesbehind — is no longer reported as a failed write. The content lands on
contentraineither way; auto-merge writes andcontentrain_mergenowreturn
base_advance: 'advanced' | 'blocked_diverged'(shared vocabularywith Studio's approve contract — a PR is an attachment, never a third
state) plus
remote_push: 'pushed' | 'rejected' | 'no-remote', where anon-fast-forward push rejection used to be swallowed silently.
mergeBranchgains the fetch + base-sync pre-step the write path alreadyhad, so one clean base commit no longer kills every approve; the merged
cr/*branch is pruned even when the advance is blocked, ending thephantom pending-review rows in the serve UI.
contentrain_statusandcontentrain statuscount BOTH directions (in_sync / content_ahead / base_ahead / diverged) — one-directional counting reported the exactstate that blocks every advance as "in sync". Serve approve endpoints
return the new fields and carry structured error data; transaction-layer
fetch/push is hardened (no credential prompts, block timeout).
The reconcile primitive (types, mcp).
planReconcile(
@contentrain/mcp/core/ops) is a content-aware three-way merge overthree ref-bound
RepoReaders (merge-base / contentrain / base). One sidechanged → mechanical merge at entry-, key-, and term+locale granularity;
both sides changed the same item → a
ConflictItemwith a CLOSEDcodeunion (consumers key localized editor questions on it) and an id that
hashes position AND values — a resolution made against a stale dry-run is
dropped and the conflict re-reported (compare-and-set). Document bodies
are never text-merged; models carry
suggested: 'theirs'as advice,never auto-applied; context.json is always regenerated.
RepoProvidergains optional
getMergeBase/createMergeCommitmembers and theoptional
mergeCommitcapability (GitHub: two-parent Git Data APIcommit; GitLab: absent, MR fallback; both keep external
implementscode compiling).
Executors and surfaces (mcp, cli).
reconcileBranches(
@contentrain/mcp/git/reconcile) runs a realgit merge --no-commitin a temp worktree and writes the entire plan over it — the planner is
authoritative for content paths, git for everything else — then commits
with two parents and fast-forwards the base.
contentrain_reconcile(new tool, local-only, dry_run-first like
contentrain_apply) andcontentrain reconcile(interactive CLI: plan summary, one ours/theirsquestion per conflict,
--yesnever defaults a conflict) are theproduct doors. Every
blocked_divergedsurface names them as the exit.@contentrain/query@7.0.6
Patch Changes
@contentrain/serve-ui@0.0.2
Patch Changes