원클릭으로
bump-version
Bump the Objeck release version across all platform files, rebuild on Windows and Linux, and run regression tests
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Bump the Objeck release version across all platform files, rebuild on Windows and Linux, and run regression tests
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Fully automate an Objeck release — reads version.h, auto-bumps if needed, pre-flight gates, LSP sync, docs update, tag push, GitHub Actions build/sign/publish monitoring, release body, and DigitalOcean playground deploy
Deploy/refresh the Objeck web playground (playground.objeck.org) on its VPS over SSH — git pull, rebuild the sandbox Docker image, restart the service, health-check. Host and SSH access are held out-of-band; this skill contains no secrets.
Update release documentation (README.md, CHANGELOG.md, docs/readme.html, docs/readme.txt) for a new version
| name | bump-version |
| description | Bump the Objeck release version across all platform files, rebuild on Windows and Linux, and run regression tests |
| allowed-tools | Read Edit Write Bash Grep Glob |
| argument-hint | [YYYY.M.R] e.g. 2026.5.0 |
Bump the Objeck version to $ARGUMENTS across all files and do a full cross-platform rebuild.
Objeck uses YEAR.MONTH.RELEASE (e.g. 2026.4.0, 2026.5.1). The last number is the release count within that month (starting at 0).
If no argument is provided, read the current version from core/shared/version.h (the VERSION_STRING line) and ask the user what the new version should be.
Parse $ARGUMENTS as YEAR.MONTH.RELEASE. All three parts must be present. Confirm with the user before proceeding.
update_version.ps1Edit core/release/update_version.ps1 — change the three variables at the top:
$year_end = "YEAR"
$month_end = "MONTH"
$version = "RELEASE"
CRITICAL — bump
$versionhere every release.update_version.ps1is the only script that regeneratescore/shared/version.h(fromversion.in); Linux'supdate_version.shdoes not touchversion.h. If$versionis stale, the Windows build stampsobcwith the oldVER_NUMand it then cannot load the newly-committed.obllibraries ("different version of the tool chain" — Windows CI fails, andversion.hkeeps reverting locally). This exact mismatch (a202660obc against202661libs) bit the 2026.6.1 release.
update_version.ps1 (generates version.h + .rc files)cd core/release && powershell -ExecutionPolicy Bypass -File update_version.ps1
This generates from .in templates:
core/shared/version.h (from version.in)core/release/code_doc64.cmd (from code_doc64.in)core/release/cov_scan.sh (from cov_scan.in)programs/deploy/util/readme/readme.json (from readme.json.in).rc resource files for compiler, VM, debugger, REPL, launcherCurate
readme.json.inby hand. Only@VERSION@/@YEAR@are templated — thetitleand thefeaturesarray are hand-maintained. Before generating, add a new{ "version": "v<VERSION>", "items": [...] }block at the top offeaturesand settitleto a one-line summary of the release. If you skip this, the generatedreadme.jsonships the new version number over the previous release's feature list (a visible glitch in the deploy README).Likewise, if a library was added/removed, sync the obc list in
code_doc64.in(and the lib-build lists inupdate_version.sh/update_version_arm.shand the CIRebuild libraries (Windows)step) so docs and builds stay in step.
Also bump the web-playground version constant by hand.
programs/web-playground/backend/app/config.pyhard-codesobjeck_version: str = "v<VERSION>"(the string the playground header and/api/healthreport). It is not templated fromversion.in, so a release that forgets it ships a playground reporting the previous version even after a successful deploy. This bit 2026.6.1 — the playground servedv2026.6.0until the constant was bumped and re-deployed.
Also bump the README "Latest Release" badge by hand.
README.md(line ~15) uses a static shields.io badge:https://img.shields.io/badge/release-v<VERSION>-blue. It was switched from the dynamicgithub/v/releaseendpoint because that endpoint intermittently renderedunable to select next github token from pool(a shields.io server-side error when its GitHub API token pool is exhausted). The static badge never calls the API, but must be bumped tov<VERSION>every release or it shows the previous version.
deploy_windows.cmdThis must run from a VS Developer Command Prompt or have VCINSTALLDIR set. Run:
cd core/release && cmd.exe //c "deploy_windows.cmd x64"
This rebuilds the entire MSVC solution (compiler, VM, debugger, REPL, launcher), all native libraries (crypto, lame, diags, ODBC, ONNX, OpenCV), generates API docs, and creates the deploy directory.
CRITICAL —
docs/api.zipmust be generated AFTER the.obllibraries are at the new version.deploy_windows.cmdregeneratesdocs/api.zipby runningcode_docagainst the.oblalready indeploy-x64/lib— it does NOT rebuild the.oblitself. If those libs are still the previous version (e.g. the bump is split — Windows binaries bumped here but the.oblrebuilt later/on Linux per steps 5–6, or on another machine),code_dochits "compiled with a different version of the tool chain", writes zero HTML, and produces a brokendocs/api.zipcontaining only the 3 style files. A broken api.zip is silent locally but fails the release — the cloudrelease-build.yml"Generate API Docs" step unzips the committeddocs/api.zipas the doc base (it relies on it; the Linux path does not copy freshcode_docoutput intodocs/api), so 0 HTML → "API docs incomplete: only 0 HTML files (expected 50+)" → cascadingVerify required binariesfailures on every non-windows-x64 target. This broke v2026.6.4. So: if the.oblare rebuilt separately/after, REGENERATEdocs/api.ziponce the new.oblare indeploy-x64/lib(re-rundeploy_windows.cmd, or run thecode_docdoc-gen +7z a -tzip api.zip api/*fromdeploy-x64/doc). Build the zip with7z/zip(forward-slash paths), not PowerShellCompress-Archive(writes backslash entries that Linuxunzipmangles). Always verify before committing (see step 8):unzip -l docs/api.zip | grep -c '\.html$'must be ≥ 50.
If deploy_windows.cmd cannot run (no VS environment), fall back to rebuilding just compiler and VM:
cd core/compiler/vs && MSBuild compiler.vcxproj -p:Configuration=Release -p:Platform=x64 -t:Rebuild
cd core/vm/vs && MSBuild vm.vcxproj -p:Configuration=Release -p:Platform=x64 -t:Rebuild
update_version.shRun on Linux or WSL. This rebuilds sys_obc, lang.obl, obc, and all standard
libraries (including web_server.obl — added 2026.6.1; keep the lib list here in
sync with update_version.sh / update_version_arm.sh). Note it does not
regenerate version.h (see step 2). From the repo root:
wsl -d Ubuntu -- bash -c 'cd "$REPO"/core/compiler && bash update_version.sh' # $REPO = /mnt/c/.../objeck-lang
Important: Use single quotes around the bash -c argument to avoid \r line ending issues.
If WSL is not available, note that the user needs to run update_version.sh on Linux/macOS.
After the Linux build, the .obl files in core/lib/ are the authoritative rebuilt copies:
cp core/lib/*.obl core/release/deploy-x64/lib/
Windows:
cmd.exe //c "cd /d <repo>\programs\regression & <repo>\programs\regression\run_regression.cmd x64"
Linux (WSL): Copy Linux obc/obr to deploy-x64/bin temporarily, then:
wsl -- bash -c 'cd <repo>/programs/regression && bash run_regression.sh x64'
Restore Windows obc.exe/obr.exe afterward.
The core_opencv test may fail on WSL (missing native .so) — that's expected.
core/shared/version.h and confirm VER_NUM and VERSION_STRING matchupdate_version.ps1 variables match the new versiondocs/api.zip is complete (a broken one silently fails the release — see step 4):
unzip -l docs/api.zip | grep -c '\.html$' must be ≥ 50 (a healthy build is ~435).
If it's ~0–3, the api.zip was generated against stale .obl; rebuild it after the new
.obl are in deploy-x64/lib and re-verify. Also confirm forward-slash paths
(unzip -l docs/api.zip | head shows api/..., not api\...).Show the user:
git add and git commit -m "Bump version to X.Y.Z and rebuild all libraries" (but do NOT commit automatically)