Migrating projects
The migrate command upgrades an existing Rheo project to the current version. It reads the version field from rheo.toml, determines what migrations apply for the gap between that version and the current CLI, and reports or applies them.
Usage
rheo migrate path/to/project # dry run — reports changes, writes nothing
rheo migrate path/to/project --apply # applies changes and bumps rheo.toml versionAlways run the dry run first to review what will be rewritten, then pass --apply to write the changes.
migrate is best-effort: it applies the mechanical rewrites it knows about, but it does not guarantee that your project will build or behave correctly on the new version. After migrating, rebuild and check the output yourself, and consult the changelog for breaking changes that require manual attention.
What migrate rewrites
migrate groups its rewrites by the project version it’s migrating from:
| From version | What migrate rewrites |
|---|---|
< 0.4.0 |
|
< 0.5.0 |
|
< 0.5.1 |
|
< 0.6.0 |
|
| any outdated version | Bumps the version field in rheo.toml to match the current CLI version (--apply only). |
Removals in 0.6.0
[html]feed_base_url,feed_author,feed_title[[html.feed_include]]- the entire
#let rheo-<key>variable convention that fed the old generator —rheo-feed-title,rheo-feed-updated,rheo-feed-exclude rheo-author, whose replacement is#set document(author: ...)
Since 0.6.0, a Rheo build will warn when it finds a retired key:
`feed_base_url` in [html] is retired and has no effect — Atom feed generation moved to the Typst package @rheo/feeds — see https://rheo.ohrg.org/feedsA top-level #let rheo-anything = (1, 2) used to be a compile error, because the old harvester only accepted a string or boolean literal on the right-hand side. From 0.6.0 it’s just an ordinary Typst binding that Rheo doesn’t consider.