Appearance
TODO: Publish CE pre-release for theming-system-redesign branch
Status: Done (procedure completed, theming branch advanced past this) Created: 2026-04-09 Related: AF PR #1842, CE PR #722, Linear CAV-102
Problem
AF theming-system-redesign branch fails CF Pages build because:
src/preview-iframe.tsimportsDataStorefrom@cavai/creative-engine- Published CE 6.8.2 does NOT export
DataStore - The export only exists on CE
theming-system-redesignbranch (PR #722, commits277216301+158c0d194) - CF Pages uses
npm install, not the local file symlink, so it pulls 6.8.2 from npm and crashes
Main AF works fine because it doesn't import DataStore. But the PR build is red until CE publishes a version with the export.
Constraints
- We don't want to publish a "real" semver version (6.9.0 / 7.0.0) — we don't know what the final version number will be when
theming-system-redesignactually merges - We don't want main on either repo to pick up the theming changes — those must stay isolated to the PR
- We can't change AF
package.jsonon main, so the theming CE version must NOT match^6.8.0
Solution: pre-release tag
Publish CE from theming-system-redesign with a pre-release version that never becomes the real release:
0.0.0-theming.1(or tied to a commit sha: 0.0.0-theming-277216301)
Why this is safe
npm's semver treats pre-release versions as opt-in: 0.0.0-theming.1 does NOT satisfy ^6.8.0. So:
- Main AF (
"@cavai/creative-engine": "^6.8.0") → still resolves to 6.8.2 (stable) - Branch AF (
"@cavai/creative-engine": "0.0.0-theming.1") → exact pin, only this branch uses it npm install @cavai/creative-engine(no version) → still gets 6.8.2 from thelatesttag
Dist-tag for extra isolation
Publish with a custom dist-tag so it doesn't land on latest:
bash
npm publish --tag themingSteps
1. On CE theming-system-redesign (can be done on any machine)
bash
cd Creative-Engine
git checkout theming-system-redesign
git pull
# Bump version in package.json to 0.0.0-theming.1
# (or the next number if we've already published 0.0.0-theming.1 earlier)
npm version 0.0.0-theming.1 --no-git-tag-version
git add package.json package-lock.json
git commit -m "Publish pre-release 0.0.0-theming.1 for AF PR build"
git push
npm run build
npm publish --tag themingVerify:
bash
npm view @cavai/creative-engine@0.0.0-theming.1
npm view @cavai/creative-engine dist-tags
# Should show: latest: 6.8.2, theming: 0.0.0-theming.12. On AF theming-system-redesign
bash
cd Application-Frontend
git checkout theming-system-redesign
# Bump CE dep to exact pre-release version
# In package.json: "@cavai/creative-engine": "0.0.0-theming.1"
# (exact pin, no ^ or ~)
npm install
git add package.json package-lock.json
git commit -m "Bump CE to 0.0.0-theming.1 pre-release"
git pushCF Pages rebuilds PR #1842 → should go green.
3. Local dev stays on symlink
Local dev on both repos continues to use the local file symlink via local-setup, unaffected by the pre-release publish. The pre-release only matters for CI (CF Pages).
When theming goes live
- Merge CE
theming-system-redesign→ main - Publish stable version from main (whatever the real number turns out to be — 6.9.0, 7.0.0, etc.)
- Merge AF
theming-system-redesign→ main, bumping CE dep to the new stable version in the same commit - Deprecate or leave the
0.0.0-theming.*versions — they're inert
Current rebase state
AF theming-system-redesign has been rebased cleanly onto main locally (108 commits applied, 1 dropped as already upstream). npm run build passes locally. Ready to force-push as soon as the CE pre-release is published.
Conflicts resolved during rebase:
LocalBuildPreview.vue— kept both main's iframe-ready listener and branch's scrubObserverAnimationPreviewBox.vue,ShowHideOp.vue,AnimationEffectList.vue,TemplateButton.vue— took branch's tokenized versionsOperatorAnimations.vue— deleted 146-line invert block (branch intentionally removed it in "kill Vuetify underline leaks" commit)