analyze-code
CommandAnalyze code quality, identify issues, and suggest improvements.
Release the iOS app version currently on TestFlight to the App Store
> /plugin marketplace add nimbalyst/nimbalyst> /plugin install nimbalyst-wiki@nimbalyst
description: Release the iOS app version currently on TestFlight to the App Store
Promote the iOS version currently in `Info.plist` (the one that's been on TestFlight) to the App Store. This command does NOT bump the version -- it assumes the user manually bumped `CFBundleShortVersionString` when they started TestFlight testing for this release.
If you need to bump the version instead, use `/ios-release` (which runs `scripts/ios-release.sh`).
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" packages/ios/NimbalystApp/Sources/Info.plist
This is the version we're tagging. Do NOT modify `Info.plist`.
git tag --list 'ios/*' --sort=-v:refname | head -1
If no `ios/v*` tag exists, this is the first tracked iOS release -- ask the user for a sensible cutoff (e.g. the last public App Store version's release date).
git log <last-ios-tag>..HEAD --oneline --no-merges -- packages/ios/ packages/runtime/src/sync/
Read all commit subjects. The release notes will be derived from these.
Trim hard. The previous mistake was being too detailed.
**A. Developer changelog (for `IOS_CHANGELOG.md`)**
Categorize as Added / Changed / Fixed / Removed. Drop:
Keep ~10-15 bullets total per category.
**B. App Store "What's New" text**
Even shorter -- 6-8 bullets max. Drop:
Each bullet must answer "what can I now do?" or "what problem is fixed?". Use present tense. End with one line summarizing the rest as "Plus a lot of [area] reliability fixes."
Display the developer changelog and the App Store text in fenced markdown blocks. Note:
Wait for user approval before touching any files.
After approval, rewrite `IOS_CHANGELOG.md` so it contains:
Use today's date in `YYYY-MM-DD`.
pnpm run ios:build:transcript
Then copy the output into the Xcode resources directory (these files are gitignored but the archive expects them in place):
cd packages/ios && \ rm -f NimbalystApp/Resources/transcript-dist/assets/transcript-*.js && \ cp dist-transcript/transcript.html NimbalystApp/Resources/transcript-dist/transcript.html && \ cp dist-transcript/assets/* NimbalystApp/Resources/transcript-dist/assets/
(Xcode's pre-build script regenerates these on archive too, but rebuilding here surfaces any build errors before the user opens Xcode.)
**CRITICAL**: do not use `git add -A` or `git add .`. Other files may be pre-staged in the user's index from unrelated work; sweeping them into the release commit will pollute the tag's diff. Stage `IOS_CHANGELOG.md` explicitly, then check `git status` to confirm only that file is staged before committing.
git status # sanity check git diff --cached --name-only # confirm nothing else already staged git add IOS_CHANGELOG.md git diff --cached --name-only # confirm ONLY IOS_CHANGELOG.md is now staged
If anything else is already staged, STOP and ask the user how to proceed -- don't commit.
Then commit with the developer changelog as the message body:
git commit -m "iOS Release v<VERSION> <developer changelog body>"
The tag should point to whatever is at HEAD, not specifically the changelog commit. Later fixes (especially anything touching the React transcript bundle in `packages/runtime/`) may have landed on top, and those will be in the archived build. Tagging HEAD ensures the tag reflects the actual code shipped.
git tag -a ios/v<VERSION> HEAD -m "iOS Release v<VERSION> <developer changelog body>"
Pushing the tag is visible to others and triggers any tag-based CI. Ask the user explicitly: "Push `ios/v<VERSION>` to origin?"
On approval:
git push origin ios/v<VERSION>
Do NOT push `main` unless the user asks -- the changelog commit is local-only until they say otherwise.
Print the App Store "What's New" text in a fenced block for easy copy-paste, then:
Next: 1. Open packages/ios/NimbalystApp/NimbalystApp.xcodeproj in Xcode 2. Select the NimbalystApp scheme + "Any iOS Device" 3. Confirm the Build number in target General is greater than the highest TestFlight build for v<VERSION> 4. Product > Archive 5. Distribute App > App Store Connect > Upload 6. In App Store Connect: My Apps > Nimbalyst > + Version <VERSION> 7. Select the uploaded build 8. Paste the "What's New" text above into "What's New in This Version" 9. Choose manual or automatic release after approval 10. Submit for Review
Nimbalyst - The open-source visual workspace for Claude Code, Codex, and OpenCode. Run multiple coding agents in parallel, edit their work visually in markdown, mockups, and diagrams, and track tasks. Free, MIT-licensed desktop app for macOS, Windows, Linux, with mobile companion for iOS and Android.
Analyze code quality, identify issues, and suggest improvements.
Audit recent AI coding sessions to find repeated mistakes, speed losses, and missed Nimbalyst tool usage — then propose harness…
Triage pnpm audit findings and produce a prioritized, supply-chain-cautious package-update plan, then apply approved batches
Survey recently triaged GitHub issues, propose the ones safe to fix without a product decision, and fan the selected ones out to…
Gather details and draft an actionable bug report for developers.
Shortcut for "continue working" — pick the work in flight back up exactly where it stopped and keep going until it is done or…