Skip to content

feat!: pnpm cella sync is now pnpm cella upgrade, leaving "sync" to cella's sync engine - #62

Merged
flipvh merged 1 commit into
mainfrom
feat/upgrade-command
Oct 28, 2026
Merged

flipvh merged 1 commit into
mainfrom
feat/upgrade-command

Conversation

@flipvh

@flipvh flipvh commented Oct 28, 2026

Copy link
Copy Markdown
Member

Template updates and cella's sync engine shared one word. In marketing and docs, "sync" now means only the sync engine; pulling template changes into an app is an upgrade.

What changes

Before After
pnpm cella sync pnpm cella upgrade
branch cella/sync/<stamp> cella/upgrade/<stamp>
commit chore: sync upstream cella v0.26.0 (<sha>) chore: upgrade cella to v0.26.0 (<sha>)
refs/cella/last-sync (+ -head) refs/cella/last-upgrade (+ -head)
settings.packageJsonSync / syncWithPackages packageJsonKeys / mergePackageJson
alignment frontmatter syncBreaking breaking (also in align --json)
manifest syncedAt upgradedAt
"sync config" in output "CLI config"

The README follows: headings "Upgrade workflow", "Merge rules", "Package.json merge".

Old names keep working through 0.6

  • cella sync runs the upgrade, hidden from help, and warns that it is renamed.
  • A cycle that 0.5 started on cella/sync/<stamp> resumes and ships, because an upgrade bumps the CLI mid-cycle. Open PRs under either prefix count for the "earlier PR still open" guard.
  • refs/cella/last-sync is read when the new ref is absent.
  • packageJsonSync and syncWithPackages are read under the new names, with one warning each. Upstream's config at an older merge-base is read the same way, so the template's own key rename does not show up as an upstream config change.
  • syncBreaking is read from alignments at older upstream commits.

Internal identifiers (SyncManifest, runSync, ensureSyncBase, …) keep their names. The service file and four command-named test files are renamed to upgrade.

Breaking: the public config type PackageJsonSyncKey is now PackageJsonKey, and align --json reports breaking. Nothing in cella, raak or projectcampus imports the type.

Verified

  • pnpm check and pnpm test (329 tests) pass; pnpm test:release passes.
  • New tests: cella sync resolves to upgrade with its options and both warnings (tests/cli.test.ts); a branch cut under cella/sync/ ships on the rerun (tests/e2e/upgrade-worktree.test.ts); syncBreaking frontmatter reads as breaking (tests/alignments.test.ts). These pin the transition for apps that are mid-cycle or on an older upstream.
  • Ran the built CLI in a throwaway clone of raak (old setting names, upstream at cella 7520e6a): help lists upgrade; analyze prints both rename warnings and ends with 2 upgrade pnpm cella upgrade; today's upstream alignments (still syncBreaking) show as breaking; refs/cella/last-upgrade is written; cella sync --help resolves.

The template side (dependency bump, cella.config.ts keys, CI branch prefix, docs, the cella-sync skill, the alignment frontmatter) follows in a cella PR once this is released.

Size

Kind Files Added Removed Net
Source 22 +1117 -1045 +72
Tests 21 +1678 -1642 +36
JSON 1 +1 -1 0
Docs 1 +96 -96 0
Total 45 +2892 -2784 +108

The added and removed counts include the five renamed files in full; the net numbers are the real growth.

  • Source +72 (code +54, comments +10): the alias command, the old-name fallbacks for branch prefix, ref, settings and frontmatter, and the rename warnings.
  • Tests +36: the three transition tests above, which pin a contract that apps mid-upgrade depend on.

🤖 Generated with Claude Code

…ella's sync engine

Template updates and the sync engine shared one word, which confused readers of cella's
marketing and docs. The command, its branch, ref, settings and output now say upgrade.

- `cella upgrade` cuts `cella/upgrade/<stamp>`, commits `chore: upgrade cella to v0.27.0 (<sha>)`
  and records `refs/cella/last-upgrade`; the manifest stamps `upgradedAt`.
- Settings `packageJsonSync` and `syncWithPackages` are `packageJsonKeys` and `mergePackageJson`.
- An alignment's `syncBreaking` frontmatter is `breaking`, also in `align --json`.
- Output says "CLI config" where it said "sync config".

Old names keep working for the 0.6 line: `cella sync` runs the upgrade with a warning, a
`cella/sync/` branch from a cycle 0.5 started still resumes and ships, `refs/cella/last-sync` is
read when the new ref is absent, the old settings are read with a warning (also in upstream's
config at an older commit), and `syncBreaking` is read from older upstream alignments.

BREAKING CHANGE: the public config type `PackageJsonSyncKey` is `PackageJsonKey`, and
`align --json` reports `breaking` in place of `syncBreaking`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@flipvh
flipvh merged commit cbec418 into main Oct 28, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant