reinhardt-admin-cli 0.2.2

Command-line tool for Reinhardt project management
Documentation
# 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.