- moonrepo (
moon) - Rust stable toolchain +
wasm32-unknown-unknowntarget dx(Dioxus CLI 0.7.x)- Node.js + Yarn (VSCode extension)
- JDK 17 (IntelliJ plugin)
moon run :setup| Branch | Role |
|---|---|
develop |
Active development — default target for PRs |
main |
Production — only updated via moon run :deploy |
Conventional commit format: <type>(<scope>): <description>
Types: feat, fix, refactor, docs, chore, test, style
Scopes: mindy-engine, mindy-html, vscode-extension, idea-plugin, ui, root
moon run mindy-html:serve # Dev server (http://localhost:8080, hot reload)
moon run "vscode-extension/syb-mindmap:serve.debug" # Build + install extension + open VSCodemoon run mindy-engine:test
moon run mindy-html:test
cargo testRun from develop once all features are merged.
What it does:
git pull- Computes the next semver version from conventional commits (
git cliff --bump) - Generates changelogs:
.github/CHANGELOG.md,vscode-extension/syb-mindmap/CHANGELOG.md,idea-plugin/CHANGELOG.md - Bumps the version in all manifests:
vscode-extension/syb-mindmap/package.json(viayarn version)idea-plugin/build.gradle.kts(viased)Cargo.tomlworkspace (viacargo set-version)
- Commits everything as
chore: release tag 'x.y.z' - Creates a git tag
x.y.z - Pushes commits and tags
moon run :releaseVersion bump strategy:
feat→ minor,fix→ patch,feat!/BREAKING CHANGE→ major.
Promotes the latest release tag to main.
What it does:
- Reads the latest tag (
git describe --tags --abbrev=0) git checkout maingit reset --hard <tag>git push --force-with-lease
moon run :deployAlways run
releasebeforedeploy.
Depends on build (WASM release + .vsix package).
moon run "vscode-extension/syb-mindmap:publish"Required: a VSCode Marketplace Personal Access Token, configured via vsce
(stored in the system keychain or exported as VSCE_PAT).
Depends on build (./gradlew buildPlugin).
moon run "idea-plugin:publish"Required environment variables:
| Variable | Description |
|---|---|
CERTIFICATE_CHAIN |
Plugin signing certificate chain |
PRIVATE_KEY |
Private key for signing |
PRIVATE_KEY_PASSWORD |
Password for the private key |
IDEA_PUBLISH_TOKEN |
JetBrains Marketplace token |
# 1. Merge all features into develop, then:
moon run :release
# 2. Promote to main
moon run :deploy
# 3. Publish extensions (env vars required, see above)
moon run "vscode-extension/syb-mindmap:publish"
moon run "idea-plugin:publish"