-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: levelcodeai/levelcode
base: v0.8.0
head repository: levelcodeai/levelcode
compare: v0.8.1
- 6 commits
- 5 files changed
- 2 contributors
Commits on Jul 20, 2026
-
fix(ui): show the LevelCode release version in the update tooltip and…
… About The update tooltip read "Current Version: 1.126.0 (cdf2549)" — a Code-OSS version next to a LevelCode commit — and "Released 22 Jun 2026", the upstream base's build date rather than the release the user installed. Reported after the first real auto-update, where it reads as a different product entirely. The commit was already right on purpose (build-macos.sh stamps LevelCode's HEAD so releases are distinguishable to the update feed). Only the version and date were still Code-OSS's, and `version` cannot simply be renamed: it is what extensions' `engines.vscode` is validated against, so setting it to 0.8.0 would reject every extension requiring ^1.x. So the release identity rides alongside it: - scripts/stamp-levelcode-version.mjs (new) stamps `levelcodeVersion` + `levelcodeReleaseDate` into the BUILT app's product.json. Refuses anything that isn't a plain dotted version (exit 1), so a bad `git describe` fails the build rather than shipping "Current Version: v0.8". - build-macos.sh runs it tag-derived, after the existing strip steps. No reachable tag (dev builds) → skipped, and the UI falls back to `version`. - The tooltip shows `levelcodeVersion ?? version`. About shows BOTH ("0.8.0 — Code-OSS 1.126.0") since it gets pasted into bug reports, where the base version explains extension-compatibility behaviour. Patch-workflow note: vscode/ is gitignored, so the three core edits are captured in patches/levelcode-core.patch (11 -> 14 entries). Regenerating wholesale is NOT safe here — the checkout is already de-branded, and a full regen pulled ~95 lines of de-brand's MS-doc-link stripping into the files.contribution.ts entry. The existing entries are preserved byte-identical and only the three new ones appended. CORE-PATCHES.md gains that escape hatch as NOTE 3, plus rows 12-14. Verified: typecheck-client passes (exit 0); the stamp script leaves `version` untouched, strips a v prefix, and exits 1 on a bad version; the 14-entry patch reverse-applies cleanly to the checkout; the appended entries carry no de-brand contamination and 6 [LevelCode] markers. NOT verified: the rendered strings. That needs a full gulp build and a launched app — see the PR for the check to run before the next release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 72383a0 - Browse repository at this point
Copy the full SHA 72383a0View commit details -
fix(ci): gate every extension's tests, not just levelcode-ai
The pre-build test job did `cd extensions/levelcode-ai` before globbing, so extensions/levelcode-updater/test/*.test.js never ran in CI — including the regression test added in the S3 fix, which is the only thing standing between a feed change and the updater's Download button handing users a raw .app.zip. It protected the release it shipped in and nothing after that. The step now globs extensions/*/test/*.test.js, so a new suite is gated the moment it is added and there is no list here to drift out of sync. Requires in these tests are file-relative, so running from the repo root needs no cd. Also guards the vacuous pass: a zero-match glob previously reported success while gating nothing, which is the same class of bug as the one being fixed. It now fails with a ::error:: annotation. Verified locally under `bash -e` (the Actions default shell): - real run: 14 test files pass, up from 13 - zero-match glob: exits 1 with the annotation - a deliberately failing suite: aborts the job, exit 1 - release.yml still parses; all 3 jobs intact Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 404ef20 - Browse repository at this point
Copy the full SHA 404ef20View commit details -
fix(build): keep git-describe's suffix so dev builds can't impersonat…
…e a release Addresses the PR #24 review. Both comments were real; the first turned out to sit on top of a latent bug worth more than the wording fix it asked for. 1. Regex vs stated intent. The comment claimed "a plain dotted version" while the regex allowed a -suffix. Rather than tighten the regex as suggested, the suffix is now REQUIRED behaviour and the comment says so — because dropping --abbrev=0 from `git describe` is the actual fix: at the tag (CI release): v0.8.0 -> stamps 0.8.0 off the tag (dev build): v0.8.0-1-g404ef20 -> stamps 0.8.0-1-g404ef20 With --abbrev=0 a dev build five commits past a release stamped a bare "0.8.0" and impersonated it in the UI — the exact class of confusion this PR exists to fix. Tightening to X.Y.Z would have locked that in, or failed dev builds outright once the suffix appeared. Junk ("v0.8", a branch name, an empty describe) still exits 1 and fails the build. 2. %cI documented as "authored". The code was right and the prose was wrong, so the prose changed: "Released" means when the build's commit LANDED, and a cherry-picked commit's author date can predate the release by weeks — the stability %aI offers is stability around the wrong instant. Now stated explicitly in the script header, build-macos.sh, and the product.ts doc comment. (On every release commit to date the two are identical, since they are GitHub merge commits.) Verified: exact-tag input stamps 0.8.0; describe-suffix input keeps the suffix; "v0.8" / a branch name / empty all exit 1; typecheck-client exit 0; the patch is still 14 entries with the original 11 byte-identical, no de-brand contamination, and reverse-applies cleanly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 42e223c - Browse repository at this point
Copy the full SHA 42e223cView commit details -
fix(ci): pin
shell: bashon the test gateAddresses the PR #25 review: the step uses `shopt`, a bash builtin, but relied on the runner default rather than declaring the shell. True today on ubuntu-latest; pwsh on a Windows runner, where the step would break if the job were ever copied. Worth noting the fix is not purely defensive — `shell: bash` is not the same as the default. It runs `bash --noprofile --norc -eo pipefail` rather than `bash -e`, so the gate also stops inheriting profile files and gains pipefail. Both are improvements here, and neither changes this step's behaviour (it has no pipes). Updated the inline comment that credited "the Actions default" for the abort, since `-e` now comes from the pinned shell. Re-verified under the exact flags `shell: bash` invokes (`bash --noprofile --norc -eo pipefail`): - real run: 14 test files pass, exit 0 - zero-match glob: exit 1 with the ::error:: annotation - a deliberately failing suite: aborts, exit 1 - release.yml parses; test/build/draft-release intact; shell resolves to bash Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for d994b2a - Browse repository at this point
Copy the full SHA d994b2aView commit details -
Merge pull request #24 from levelcodeai/fix/levelcode-version-in-upda…
…te-ui fix(ui): show the LevelCode release version in the update tooltip and About
Configuration menu - View commit details
-
Copy full SHA for ba941c1 - Browse repository at this point
Copy the full SHA ba941c1View commit details -
Merge pull request #25 from levelcodeai/fix/ci-gate-all-extension-tests
fix(ci): gate every extension's tests, not just levelcode-ai
Configuration menu - View commit details
-
Copy full SHA for 07b7341 - Browse repository at this point
Copy the full SHA 07b7341View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.8.0...v0.8.1