Skip to content

feat: Add dual build/version identification system for branch testing and release tracking #61

@Cheezeiii365

Description

@Cheezeiii365

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-lockfilepnpm test:cipnpm 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"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions