Prepare a tinymist release in three phases:
- inspection and planning
- local preparation
- external actions
This workflow is intentionally conservative. It should help a maintainer inspect release readiness, prepare reviewable local edits, and then stop before any command that would mutate GitHub, publish crates, or push tags until the maintainer explicitly approves that exact action.
Input
The user should provide a target version such as v0.14.12-rc1, 0.14.12, or 0.14.11.
If the version is missing, ask for the exact version before doing anything else.
Workflow
Announce the release target and infer the release type
- Strip any leading
v
- Classify the target as:
release-candidate when it ends with -rcN
nightly when the patch number is odd
stable when the patch number is even and there is no -rcN
- Mention that stable releases should normally follow a successful release candidate, because that expectation is documented in
docs/tinymist/release-instruction.typ
Run the repo-native release helper
node scripts/release-preflight.mjs <target-version> --json
Use the JSON output as the primary machine-readable source for:
- branch readiness (
expectedBranch, branch.current, branch.ready)
- tracked
Cargo.toml and package.json files
- exact version-bearing lines that match the current release version
- release-sensitive non-manifest files such as
editors/neovim/bootstrap.sh and editors/neovim/samples/lazyvim-dev/Dockerfile
- generated-document follow-up commands such as
node scripts/link-docs.mjs for crates/typlite/README.md
- changelog status plus any changelog-summary coverage the helper can compute from GitHub-generated notes
- executable shell commands for update, review, prepare, re-check, and later handoff steps
Read the release policy and the relevant automation entry points
Always read:
docs/tinymist/release-instruction.typ
scripts/release.mjs
scripts/draft-release.mjs
When the target is nightly, also read:
.github/workflows/release-nightly.yml
scripts/nightly-utils.mjs
When the target is a regular or release-candidate build, prefer the repository's existing release path:
scripts/release.mjs
.github/workflows/release-asset-crate.yml
.github/workflows/auto-tag.yml
.github/workflows/announce.yml
Report inspection results before making edits
Summarize:
- the inferred release type
- the helper's readiness status, blockers, pending local-preparation items, and warnings
- the expected
bump-version-<version> branch and whether the current branch matches it and is pushed to remote.
- the tracked manifest scan command
- the exact update, review, prepare, re-check, and handoff commands the helper generated
- the changelog summary: which candidate release-note items are represented in
editors/vscode/CHANGELOG.md, which are omitted for maintainer review, or why the helper could not compute that summary
- which exact external commands or workflows would come later
Local preparation is allowed without a separate approval prompt
Reversible, reviewable checkout-local work is allowed, for example:
- running the generated patch commands
- drafting or editing
editors/vscode/CHANGELOG.md
- refreshing generated docs with the helper's follow-up commands such as
node scripts/link-docs.mjs
- composing the release PR title/body
- running the generated review commands
- staging the local release edits and creating
build: bump version to <version>
After local preparation:
- rerun
node scripts/release-preflight.mjs <target-version> --json
- summarize which generated commands were used
- if the helper still reports blockers or pending local-preparation items, stop and report them instead of moving on
- if the helper reports
readiness.ready: true, explicitly tell the maintainer that the local checkpoint is ready and that yarn release <version> is the next external command
External actions require explicit maintainer approval immediately before execution
Never run any of the following until the maintainer explicitly approves that exact action:
yarn release <target-version>
yarn draft-release v<release-notes-version>
cargo publish ...
gh workflow run ...
gh pr create ...
gh release ...
git tag ...
git push --tag
- any other command that mutates GitHub, publishes artifacts, or pushes refs
When you reach that boundary:
- show the exact pending command or workflow
- explain why it is external or irreversible
- wait for approval
- if approval is granted, run only the approved action
- report the outcome before considering any follow-up action
Fall back gracefully when automation cannot continue
If credentials, tools, or permissions are missing:
- report the blocker
- explain why automation stopped
- give the maintainer the concrete shell command needed next
Guardrails
- Always start with
node scripts/release-preflight.mjs <target-version> --json
- Keep the maintainer in the Codex console; do not hand the workflow off to a different chat or UI
- Prefer existing repository scripts and workflows over re-implementing release logic in prompt text
- Treat
scripts/release.mjs and scripts/draft-release.mjs as external-action entry points, not inspect-mode helpers
- Do not publish, tag, create PRs, or mutate GitHub resources without explicit approval immediately before the command
- Re-run the helper after local edits so the maintainer gets refreshed readiness, changelog-summary, and handoff commands
- Do not treat the generated release-notes command as the approval boundary for regular or release-candidate releases; the first external boundary is
yarn release <version> after the local checkpoint commit
- If the helper reports omitted changelog items, surface them before the commit and again before any external action
- Prefer command output over prose checklists when handing work back to Codex or the maintainer
1---2name: tinymist-release3description: For command `/tinymist-dev:release version`, prepare a tinymist release with an inspect-first workflow that reuses the repository's existing release scripts and stops before external side effects until the maintainer explicitly approves them.4license: Apache-2.05---67Prepare a tinymist release in three phases:891. inspection and planning102. local preparation113. external actions1213This workflow is intentionally conservative. It should help a maintainer inspect release readiness, prepare reviewable local edits, and then stop before any command that would mutate GitHub, publish crates, or push tags until the maintainer explicitly approves that exact action.1415## Input1617The user should provide a target version such as `v0.14.12-rc1`, `0.14.12`, or `0.14.11`.1819If the version is missing, ask for the exact version before doing anything else.2021## Workflow22231. Announce the release target and infer the release type2425 - Strip any leading `v`26 - Classify the target as:27 - `release-candidate` when it ends with `-rcN`28 - `nightly` when the patch number is odd29 - `stable` when the patch number is even and there is no `-rcN`30 - Mention that stable releases should normally follow a successful release candidate, because that expectation is documented in `docs/tinymist/release-instruction.typ`31322. Run the repo-native release helper3334 ```bash35 node scripts/release-preflight.mjs <target-version> --json36 ```3738 Use the JSON output as the primary machine-readable source for:39 - branch readiness (`expectedBranch`, `branch.current`, `branch.ready`)40 - tracked `Cargo.toml` and `package.json` files41 - exact version-bearing lines that match the current release version42 - release-sensitive non-manifest files such as `editors/neovim/bootstrap.sh` and `editors/neovim/samples/lazyvim-dev/Dockerfile`43 - generated-document follow-up commands such as `node scripts/link-docs.mjs` for `crates/typlite/README.md`44 - changelog status plus any changelog-summary coverage the helper can compute from GitHub-generated notes45 - executable shell commands for update, review, prepare, re-check, and later handoff steps46473. Read the release policy and the relevant automation entry points4849 Always read:50 - `docs/tinymist/release-instruction.typ`51 - `scripts/release.mjs`52 - `scripts/draft-release.mjs`5354 When the target is nightly, also read:55 - `.github/workflows/release-nightly.yml`56 - `scripts/nightly-utils.mjs`5758 When the target is a regular or release-candidate build, prefer the repository's existing release path:59 - `scripts/release.mjs`60 - `.github/workflows/release-asset-crate.yml`61 - `.github/workflows/auto-tag.yml`62 - `.github/workflows/announce.yml`63644. Report inspection results before making edits6566 Summarize:67 - the inferred release type68 - the helper's readiness status, blockers, pending local-preparation items, and warnings69 - the expected `bump-version-<version>` branch and whether the current branch matches it and is pushed to remote.70 - the tracked manifest scan command71 - the exact update, review, prepare, re-check, and handoff commands the helper generated72 - the changelog summary: which candidate release-note items are represented in `editors/vscode/CHANGELOG.md`, which are omitted for maintainer review, or why the helper could not compute that summary73 - which exact external commands or workflows would come later74755. Local preparation is allowed without a separate approval prompt7677 Reversible, reviewable checkout-local work is allowed, for example:78 - running the generated patch commands79 - drafting or editing `editors/vscode/CHANGELOG.md`80 - refreshing generated docs with the helper's follow-up commands such as `node scripts/link-docs.mjs`81 - composing the release PR title/body82 - running the generated review commands83 - staging the local release edits and creating `build: bump version to <version>`8485 After local preparation:86 - rerun `node scripts/release-preflight.mjs <target-version> --json`87 - summarize which generated commands were used88 - if the helper still reports blockers or pending local-preparation items, stop and report them instead of moving on89 - if the helper reports `readiness.ready: true`, explicitly tell the maintainer that the local checkpoint is ready and that `yarn release <version>` is the next external command90916. External actions require explicit maintainer approval immediately before execution9293 Never run any of the following until the maintainer explicitly approves that exact action:94 - `yarn release <target-version>`95 - `yarn draft-release v<release-notes-version>`96 - `cargo publish ...`97 - `gh workflow run ...`98 - `gh pr create ...`99 - `gh release ...`100 - `git tag ...`101 - `git push --tag`102 - any other command that mutates GitHub, publishes artifacts, or pushes refs103104 When you reach that boundary:105 - show the exact pending command or workflow106 - explain why it is external or irreversible107 - wait for approval108 - if approval is granted, run only the approved action109 - report the outcome before considering any follow-up action1101117. Fall back gracefully when automation cannot continue112113 If credentials, tools, or permissions are missing:114 - report the blocker115 - explain why automation stopped116 - give the maintainer the concrete shell command needed next117118## Guardrails119120- Always start with `node scripts/release-preflight.mjs <target-version> --json`121- Keep the maintainer in the Codex console; do not hand the workflow off to a different chat or UI122- Prefer existing repository scripts and workflows over re-implementing release logic in prompt text123- Treat `scripts/release.mjs` and `scripts/draft-release.mjs` as external-action entry points, not inspect-mode helpers124- Do not publish, tag, create PRs, or mutate GitHub resources without explicit approval immediately before the command125- Re-run the helper after local edits so the maintainer gets refreshed readiness, changelog-summary, and handoff commands126- Do not treat the generated release-notes command as the approval boundary for regular or release-candidate releases; the first external boundary is `yarn release <version>` after the local checkpoint commit127- If the helper reports omitted changelog items, surface them before the commit and again before any external action128- Prefer command output over prose checklists when handing work back to Codex or the maintainer