๐งญ Synticore Website Compiler - Migration Guide
๐ฏ Purpose
This page explains how project version upgrades work, how to run them, and what the current migration set changes.
๐ฆ How Migration Is Triggered
Synticore compares:
- project version (
<project>/info.json) - compiler version (
source/resource/info.json)
When project version is older, Synticore can perform in-place migration before continuing tasks.
Version status categories:
- Equal: no migration needed
- Old: migration available and expected
- New: project was built with newer compiler; compatibility risk
๐ ๏ธ Migration Tasks You Can Run Manually
Full Upgrade Path
npm run gulp project_update_full
- Runs upgrade from
1.0.0to current compiler version.
Directed Upgrade Path
npm run gulp project_update_directed
- Interactive range selection (
startandendversions). - Useful for testing or controlled upgrade steps.
๐งพ Current Migration Registry State
Current migration registry includes migration to:
1.1.0
Migration ID summary in code:
to: '1.1.0'- name:
Project layout & config schema migration + cache upgrade
๐งฑ What 1.1.0 Migration Changes
๐๏ธ Layout And Artifacts
- Removes old package ignore block from project
.gitignoreif present. - Moves legacy
package.zipto_package/package.zip. - Moves legacy
cache.jsoninto_cache/project/file.json.
๐ง Cache Format Upgrades
- Upgrades project file cache format.
- Upgrades compiler cache format.
- Upgrades image cache format.
โ๏ธ Asset/Path Renames
in/asset/brand/foreground_wide.png->in/asset/brand/foreground-wide.png- Migrates
font_iconnaming tofont-iconacross paths/files/references/cache entries.
๐ Handlebars/Config Token Reference Updates
Migration updates legacy template/config token references, including legacy root assumptions.
๐ Config Key Moves From Legacy Keys
Migration contains key move steps for legacy config paths, including:
option.path.ignore_package->option.package.ignoreoption.path.ignore_nav-> navigation namespaceoption.breadcrumb->option.navigation.breadcrumboption.toc->option.navigation.tocoption.url.html_extension->option.url.clean(converted semantics)option.minify.js->option.js.minify
Notes:
- Some moves are conditional and avoid overwriting existing new-format keys.
- If
option.package.ignoreoroption.package.html.ignore_classis an empty array, migration restores legacy safety values (example/package-ignore). - For non-empty arrays only, migration preserves legacy values, appends
no-packageif missing, and deduplicates entries. - Placeholder token prefixes in content are also rewritten during migration walk.
โ Recommended Migration Workflow
- Back up the project directory.
- Run:
npm run gulp about
npm run gulp project_update_full
- Verify:
npm run gulp build
npm run gulp package
- Spot-check:
config.jsonfor expected key locationsin/asset/rename outcomes_cache/regeneration behavior- task logs in
<project>/_log/
๐งฏ Troubleshooting Migration Issues
๐ Migration Says No Work Needed
- Check
info.jsonproject version. - Compare with
source/resource/info.jsoncompiler version.
โ Task Fails After Migration
- Run
npm run gulp rebuild. - If still failing, inspect
<project>/_log/task_rebuild.logand repo_log/gulpfile.log.
๐งฉ Template Placeholders Not Resolving
- Confirm migrated config keys exist in current namespace.
- Re-run migration task and check migration logs for token-prefix rewrites.
๐งช Test Fixtures Available In Repository
Historical upgrade fixtures are in:
source/test/project_upgrade/1.0.0source/test/project_upgrade/1.0.1source/test/project_upgrade/1.0.2source/test/project_upgrade/1.0.3
Use these to validate upgrade behavior across legacy project shapes.