# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.2.2](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.2.1...reinhardt-admin-cli@v0.2.2) - 2026-06-25
### Documentation
- *(tutorial)* align basis guide with sqlite pages setup
- update version references to v0.2.1
## [0.2.1](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.2.0...reinhardt-admin-cli@v0.2.1) - 2026-06-23
### Documentation
- *(tutorial)* align basis guide with sqlite pages setup
## [0.2.0](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.1.3...reinhardt-admin-cli@v0.2.0) - 2026-06-11
Stable release of `reinhardt-admin-cli` for the Reinhardt 0.2.0 line. This
entry consolidates the 0.2.0 release-candidate series; the original
RC entries remain below as detailed history.
### Migration Notes
- Refresh generated project templates if the project vendors Reinhardt scaffold output.
- See [`instructions/MIGRATION_0.2.md`](../../instructions/MIGRATION_0.2.md) for the workspace migration checklist.
### Added
- *(commands)* add interactive dependency configuration
- `reinhardt-admin migrate-manouche-v2 [PATH]` subcommand applying the
Manouche v1 → v2 codemod (spec §6.1 + §6.2). Available as `cargo make
migrate-manouche-v2`. Supports `--dry-run` and `--skip <rule>`. Rules:
`bare_ident`, `watch_unwrap`, `use_effect_deps`, `component_props`.
### Changed
- *(admin-cli)* replace the imperative AST formatter with a tree-sitter and Topiary pipeline for `page!`, `form!`, and `head!` DSL macros.
### Fixed
- *(admin-cli)* keep `migrate-manouche-v2` idempotent for already wrapped page expression slots.
- *(admin-cli)* preserve item attributes when `migrate-manouche-v2` rewrites attributed items.
- *(admin-cli)* avoid treating control-flow syntax variables as page children in `migrate-manouche-v2`.
- *(admin-cli)* keep `migrate-manouche-v2` from rewriting `match` patterns and `let` bindings as page children.
- *(admin-cli)* preserve inner module docs and migrate element bodies inside `let` initializers in `migrate-manouche-v2`.
- *(admin-cli)* restore Topiary formatter wiring from main
- *(admin-cli)* run rustfmt on DSL-skipped files in fmt command
- *(admin-cli)* pass ignore-all files through rustfmt in fmt command
- *(admin-cli)* update migrate_v2 expected fixtures to match prettyplease output
- *(admin-cli)* reject commented-out `#![rustfmt::skip]` in `rustfmt_skip_attr_matches`
- split formatter from admin cli
- *(commands)* align startproject scaffold defaults
### Documentation
- *(release)* enforce public API doc coverage
## [0.2.0-rc.5](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.2.0-rc.4...reinhardt-admin-cli@v0.2.0-rc.5) - 2026-06-11
### Added
- *(commands)* add interactive dependency configuration
### Documentation
- *(release)* enforce public API doc coverage
### Fixed
- *(ci)* repair admin dependency config checks
### Fixed
- *(admin-cli)* keep `migrate-manouche-v2` idempotent for already wrapped page expression slots.
- *(admin-cli)* preserve item attributes when `migrate-manouche-v2` rewrites attributed items.
- *(admin-cli)* avoid treating control-flow syntax variables as page children in `migrate-manouche-v2`.
- *(admin-cli)* keep `migrate-manouche-v2` from rewriting `match` patterns and `let` bindings as page children.
- *(admin-cli)* preserve inner module docs and migrate element bodies inside `let` initializers in `migrate-manouche-v2`.
## [0.2.0-rc.2](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.1.3...reinhardt-admin-cli@v0.2.0-rc.2) - 2026-06-03
### Fixed
- *(admin-cli)* restore Topiary formatter wiring from main
- *(admin-cli)* run rustfmt on DSL-skipped files in fmt command
- *(admin-cli)* pass ignore-all files through rustfmt in fmt command
- *(admin-cli)* revert rustfmt-damaged migrate_v2 fixtures
- *(admin-cli)* update migrate_v2 expected fixtures to match prettyplease output
- *(admin-cli)* preserve migrate_v2 fixtures during fmt-all
- *(admin-cli)* reject commented-out `#![rustfmt::skip]` in `rustfmt_skip_attr_matches`
- *(admin-cli)* skip nested workspaces in fmt-all
- split formatter from admin cli
### Maintenance
- forward merge main v0.1.2 changes into develop 0.2.0
### Styling
- apply rustfmt to non-DSL files on develop/0.2.0
### Changed
- *(admin-cli)* replace the imperative AST formatter with a tree-sitter and Topiary pipeline for `page!`, `form!`, and `head!` DSL macros.
## [0.1.1](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.1.0...reinhardt-admin-cli@v0.1.1) - 2026-05-24
### Added
- `reinhardt-admin migrate-manouche-v2 [PATH]` subcommand applying the
Manouche v1 → v2 codemod (spec §6.1 + §6.2). Available as `cargo make
migrate-manouche-v2`. Supports `--dry-run` and `--skip <rule>`. Rules:
`bare_ident`, `watch_unwrap`, `use_effect_deps`, `component_props`.
## [0.1.0](https://github.com/kent8192/reinhardt-web/compare/reinhardt-admin-cli@v0.1.0-rc.30...reinhardt-admin-cli@v0.1.0) - 2026-05-22
Initial stable release of `reinhardt-admin-cli` as part of the
reinhardt-web 0.1.0 release. This crate ships the `reinhardt-admin`
binary — the project's scaffolding, formatter, and plugin
manager — driven from a single `clap`-based entry point.
For the workspace-wide release narrative, see the [root CHANGELOG](https://github.com/kent8192/reinhardt-web/blob/main/CHANGELOG.md#010---2026-05-22).
Per-prerelease history is in the [Release Discussions](https://github.com/kent8192/reinhardt-web/discussions/categories/release).
### Capabilities at 0.1.0
- **Project and app scaffolding** — `startproject` generates a
new Reinhardt project (matching the per-app layout from
[#4476](https://github.com/kent8192/reinhardt-web/discussions/4476)), `startapp` adds an application module, and both
accept `--template-dir` to override the embedded templates.
- **Interactive dependency selection** — `startproject` can prompt
for the Reinhardt version and feature flags, and `configure`
applies the same dependency selection to an existing project.
- **Template selection via `ArgGroup`** — `--template /
--with-pages / --with-rest` replaces the previous
`--template-type` flag; the selection is enforced by a `clap`
`ArgGroup` so invalid combinations fail at parse time.
- **AST-based formatter** — `fmt` recursively walks nested
`page!` macros, formats them through `prettyplease`, and
hardens the parser against false-positive `page!`-shaped
substrings inside strings and comments. Files without a
`page!` macro are a no-op (not a skip). Writes are atomic
with permission preservation and automatic backup cleanup.
- **Plugin manager** — `plugin install / remove / list / search /
enable / disable / update / info` subcommands provide a single
workflow for managing third-party extensions during the RC
phase.
- **Secure defaults** — atomic file writes, recursion-depth guard
on the AST formatter, sanitised error messages (no leaked
paths), input validation on mutation paths, secret zeroing on
drop via `zeroize`, and `.env` parsing with TOCTOU
mitigations.
### Notable Breaking Changes
- **`--template-type` removed** — replaced by `--template /
--with-pages / --with-rest` enforced via a `clap` `ArgGroup`.
Scripts that pass `--template-type` must be updated to one of
the new flags.
- **Per-app layout in `startproject`** ([#4476](https://github.com/kent8192/reinhardt-web/discussions/4476)) — scaffolding emits the new layout where per-app `server_fn` and client UI live under `apps/<app>/` instead of `commands/templates/...`.
### Migration Notes
- Replace `reinhardt-admin startproject --template-type <kind>`
invocations with `--template <kind>` (or the matching
`--with-pages` / `--with-rest` flag).
- Existing projects that pre-date [#4476](https://github.com/kent8192/reinhardt-web/discussions/4476) should
relocate their per-app handlers manually; the scaffold emits
the new layout automatically for newly created apps.
- For the workspace-wide migration narrative, see the [root CHANGELOG](https://github.com/kent8192/reinhardt-web/blob/main/CHANGELOG.md#010---2026-05-22).