Summary
Add a dual identifier system: one stable release version + one fast incremental build number, so issue reports can target the exact build someone tested while still mapping to the longer-lived release version.
Versioning Model
| Identifier |
Example |
Purpose |
| Release version |
0.1.0 |
Semantic, changes on planned releases |
| Build number |
20260330.142 or pr-287.142 |
Auto-generated on every CI build |
| Build id |
main-20260330.142+abc1234 |
Human-readable, includes branch + short SHA for triage |
- Keep
package.json version as release semver
- Generate build metadata at build time into
build/build-info.json (gitignored)
- Inject into app at build/package time, expose through IPC to renderer
- In Settings, show both:
Version: 0.1.0 / Build: pr-287.142 (abc1234)
File Map
| File |
Action |
Description |
/scripts/generate-build-info.mjs |
new |
Read package.json version + CI env vars, write build/build-info.json |
/package.json |
edit |
Add build:meta script, chain into build/dist scripts |
/.github/workflows/branch-build.yml |
new |
PR + manual trigger workflow: test + package + artifact upload |
/packages/shared/src/index.ts |
edit |
Add BuildInfo type, APP_BUILD_INFO_GET IPC channel, getBuildInfo() to WindowApi |
/packages/main/src/index.ts |
edit |
IPC handler for APP_BUILD_INFO_GET, return version + parsed build-info.json |
/packages/main/src/preload.ts |
edit |
Expose getBuildInfo() in preload bridge |
/packages/renderer/src/components/panes/SettingsPane.tsx |
edit |
Fetch build info on mount, render "App Info" block |
/packages/renderer/src/lib/settingsSchema.ts |
edit |
Add workbench.about category for app/build metadata |
/docs/IDE_BUILD_PLAN.md |
edit |
Document dual-id strategy and CI metadata contract |
CI Flow for Branch Validation
- Trigger on
pull_request and workflow_dispatch
- Steps:
pnpm install --frozen-lockfile → pnpm test:ci → pnpm dist
- Before build, generate
build-info.json with:
buildNumber = github.run_number
branch = github.head_ref || github.ref_name
sha = github.sha.slice(0,7)
- Upload artifact named with build id
- Optionally comment PR with build id + artifact link
Issue Tracking Tie-in
- Add a "Report issue" action that auto-fills: release version, build number, commit SHA, OS/platform
- Sentry-ready:
release = releaseVersion, dist = buildNumber, tags: branch, sha
build-info.json Schema
{
"releaseVersion": "0.1.0",
"buildNumber": "pr-287.142",
"buildId": "main-20260330.142+abc1234",
"sha": "abc1234",
"branch": "main",
"builtAt": "2026-03-30T14:20:00Z",
"ciUrl": "https://github.com/Cheezeiii365/aIDE/actions/runs/12345"
}
Summary
Add a dual identifier system: one stable release version + one fast incremental build number, so issue reports can target the exact build someone tested while still mapping to the longer-lived release version.
Versioning Model
0.1.020260330.142orpr-287.142main-20260330.142+abc1234package.jsonversion as release semverbuild/build-info.json(gitignored)Version: 0.1.0/Build: pr-287.142 (abc1234)File Map
/scripts/generate-build-info.mjsbuild/build-info.json/package.jsonbuild:metascript, chain intobuild/distscripts/.github/workflows/branch-build.yml/packages/shared/src/index.tsBuildInfotype,APP_BUILD_INFO_GETIPC channel,getBuildInfo()to WindowApi/packages/main/src/index.tsAPP_BUILD_INFO_GET, return version + parsed build-info.json/packages/main/src/preload.tsgetBuildInfo()in preload bridge/packages/renderer/src/components/panes/SettingsPane.tsx/packages/renderer/src/lib/settingsSchema.tsworkbench.aboutcategory for app/build metadata/docs/IDE_BUILD_PLAN.mdCI Flow for Branch Validation
pull_requestandworkflow_dispatchpnpm install --frozen-lockfile→pnpm test:ci→pnpm distbuild-info.jsonwith:buildNumber=github.run_numberbranch=github.head_ref || github.ref_namesha=github.sha.slice(0,7)Issue Tracking Tie-in
release= releaseVersion,dist= buildNumber, tags: branch, shabuild-info.jsonSchema{ "releaseVersion": "0.1.0", "buildNumber": "pr-287.142", "buildId": "main-20260330.142+abc1234", "sha": "abc1234", "branch": "main", "builtAt": "2026-03-30T14:20:00Z", "ciUrl": "https://github.com/Cheezeiii365/aIDE/actions/runs/12345" }