Prepare Folia Release
Prepare release files and hand the user paste-ready notes. Do not commit, tag, push, publish, or trigger a workflow unless the user explicitly requests that separate action; pushing realeco-release on main can start the production release workflow.
1. Establish the release range
- Inspect
git status --shortand preserve all pre-existing user changes. - Find the newest stable tag reachable from
HEAD. Only accept tags matching^v[0-9]+\.[0-9]+\.[0-9]+$; ignore channel tags such aslimoand prerelease tags. - Treat
<base-tag>..HEADas the release range. Record the base tag and full HEAD SHA. - Inspect both commits and actual changes:
git log --reverse --format="%H`t%s" <base-tag>..HEAD
git diff --stat <base-tag>..HEAD
git diff --name-only <base-tag>..HEAD
Read the implementation behind candidate features. Do not derive release notes from commit subjects alone. Keep uncommitted changes outside the release-range analysis unless the user explicitly asks to include them.
2. Draft user-facing changes
- Describe observable capabilities, improvements, compatibility changes, and meaningful fixes in user language.
- Exclude dependency bumps, refactors, tests, CI, debug helpers, and internal maintenance unless they materially change user experience.
- Do not overstate partial or provider-limited support. Preserve limitations that users need to know.
- Consolidate related commits into one item and avoid implementation details.
- Select roughly 3–6 primary items for the in-app feature cards. The Markdown release notes may include additional meaningful fixes.
Determine the target desktop version before writing. It must be a stable A.B.C version greater than the base stable version. If the user did not provide it, propose the appropriate SemVer bump and confirm it before modifying files.
3. Update NewFeaturesIntro-related files
Use the desktop target version consistently:
- In
src/components/modal/newFeaturesRelease.ts:- set
i18nKeytoreleaseNotes.vA_B_C; - replace the feature cards with the selected release items;
- reuse suitable
lucide-reacticons and remove only imports made unused by this edit.
- set
- In every locale returned by
rg -l '"releaseNotes"' src/i18n/locales:- add a new
vA_B_Cobject without deleting historical releases; - add
introplus matchingtitleanddescriptionkeys for every card ID; - write in that locale's existing language and tone. The current locales are
en.ts,in.ts, andzh-CN.ts.
- add a new
- Set
USER_GUIDE_AUTO_OPEN_VERSIONinsrc/components/modal/userGuideContent.tstoA.B.C.
Keep card IDs identical across the release definition and all locales. Preserve comments, especially @note comments.
4. Update release versions
Desktop/Realeco and Docker are independent version streams. Never copy one version into the other merely for consistency.
For desktop/Realeco, write the same stable A.B.C value to:
package.json→version;package-lock.json→ the top-levelversionandpackages[""].version;realeco-release→ exactly one version line with a trailing newline.
For Docker, update deploy/docker/VERSION to a stable version greater than its current value. If the user did not specify a Docker version, propose the next patch version separately and confirm it before writing.
The eventual release commit's complete message must be exactly release: vA.B.C; extra body text fails .github/workflows/electron-release.yml. Report this requirement, but do not create the commit without explicit authorization.
5. Validate the prepared release
- Confirm every edited version is plain SemVer and increases from its own previous value.
- Confirm
package.json, both root lockfile version fields, andrealeco-releasematch. - Confirm every feature card has text in every locale and
USER_GUIDE_AUTO_OPEN_VERSIONmatches the desktop version. - Run:
git diff --check
npm run test:unit -- test/unit/realecoReleaseMetadata.test.ts
bash deploy/docker/scripts/validate-version.sh deploy/docker/VERSION <previous-docker-version>
- Follow
skills/testing-strategy/SKILL.mdfor any additional validation. Do not run a full Electron package by default. If a dev server is already running, inspect its errors instead of starting another build. - Review
git diffand ensure only intended release-preparation files changed.
6. Return the handoff
Report the comparison range, desktop version, Docker version, changed files, and validation results. Then provide a directly copyable Markdown block, written for users rather than developers:
## 更新说明
- <最重要的新功能或改进>
- <其他用户可感知变化>
- <必要的限制或重要修复>
End with the required future commit message: release: vA.B.C. Keep the Markdown notes aligned with the in-app cards, while allowing extra user-relevant fixes that do not merit a card.