chore(deps): bump @pierre/diffs to 1.2.12 (stage 1 of 2) - #1188
Conversation
Bump the exact pin from 1.2.8 to 1.2.12 in all six package.json files (root, packages/ui, packages/server, packages/review-editor, apps/review, apps/pi-extension) and resolve the lockfile. 1.2.12 pulls in @pierre/theme 1.1.0 (minor, transitive-only; we have no direct theme dependency) and a new transitive @pierre/theming 0.0.2. Stage 2 (1.3.x, next week once aged) carries the theme major and the hover pipeline rework. Verified: typecheck, full bun test, CI DOM set, all four builds, SSR parity at 1.2.8 vs 1.2.12 (structure identical except the intentional tabindex removal from the 1.2.12 focus fix), and a fresh registry install of the pi-extension tarball resolving a working 1.2.12 (guarding against the 1.2.9-era broken-tarball failure mode, #880).
Adversarial review (at
|
… @pierre/theming 1.0.0 Retune buildLineBgOverrides for the 1.3.x hover pipeline: per-selector hover mix rules are gone; hover is now one central rule mixing the active-line bg 97% (light) / 91% (dark) toward --diffs-hover-mix-target. Emitted hover --mix-* values are divided by those factors so the final rendered hover bg shares match 1.2.12 exactly at normal and strong, and subtle pins the 1.2.x hover finals (deletion 80/75, addition 80/70). Also add @pierre/theme and @pierre/theming to the bunfig minimumReleaseAge excludes (review follow-up from #1188).
… @pierre/theming 1.0.0 (#1190) Retune buildLineBgOverrides for the 1.3.x hover pipeline: per-selector hover mix rules are gone; hover is now one central rule mixing the active-line bg 97% (light) / 91% (dark) toward --diffs-hover-mix-target. Emitted hover --mix-* values are divided by those factors so the final rendered hover bg shares match 1.2.12 exactly at normal and strong, and subtle pins the 1.2.x hover finals (deletion 80/75, addition 80/70). Also add @pierre/theme and @pierre/theming to the bunfig minimumReleaseAge excludes (review follow-up from #1188).
Why staged
This is stage 1 of a two stage
@pierre/diffsupgrade. 1.2.12 was published 2026-06-29 and is safely aged per our 7 day supply chain posture. Stage 2 (next week, once aged) takes 1.3.x, which carries the@pierre/thememajor and the hover pipeline visual rework; that one needs dedicated visual QA, so it is deliberately not in this PR.What 1.2.9 to 1.2.12 delivers
shikirange widened to^3 || ^4(1.2.10); we still resolve shiki 3.23.0Note: 1.2.9's npm tarball was historically broken (our #880 era). The fresh install check below specifically guards that failure mode for 1.2.12.
One audit correction
The pre-upgrade audit stated 1.2.9 to 1.2.12 carries no theme dependency change. The registry disagrees:
@pierre/diffs@1.2.12pins@pierre/theme@1.1.0(was1.0.3) and adds a new@pierre/theming@0.0.2package. Both are transitive only; no workspace package depends on@pierre/themedirectly, and our source has zero direct theme imports. This is a theme minor, not the 2.x major that stage 2 carries, but it does mean the rendered CSS is not byte identical, which raises the value of the manual visual QA below.Lockfile diff, every changed line
"@pierre/diffs": "1.2.8"to"1.2.12"in the six workspace dependency blocks (root, packages/ui, packages/server, packages/review-editor, apps/review, apps/pi-extension): the bump itself.@pierre/diffsresolution entry: new version, new integrity hash, and its dependency block now lists@pierre/theme 1.1.0,@pierre/theming 0.0.2,diff 9.0.0, andshiki/@shikijs/transformersat^3 || ^4.@pierre/themeentry: 1.0.3 to 1.1.0 (transitive, pulled by diffs).@pierre/theming@0.0.2: new transitive entry (its peer deps resolve to already present packages)."@pierre/diffs/diff": diff@8.0.3todiff@9.0.0: scoped override inside@pierre/diffsonly. Our own top leveldiffstays^8.0.4and still resolves to 8.0.4.apps/opencode-plugin,apps/pi-extension, andpackages/server0.24.1 to 0.25.1,apps/vscode-extension0.16.7 to 0.16.8. These are pre-existing drift on main: the release version bumps landed in the package.json files without a lockfile refresh, so anybun installon main today writes these same four lines. Verified by diffingHEAD:bun.lockagainst the package.json versions atHEAD.Verification performed
bun run typecheck(all seven tsconfigs, aftervendor.sh)bun test(3007 tests, 250 files)packages/server/review-workspace.test.tssemantic diff availability; it passes in isolation and the full suite reran fully green, consistent with the known server file timing flakes)DOM_TESTS=1isolateduseFileBrowser.test.tsxDOM_TESTS=1CI DOM set (28 files from test.yml)bun run --cwd apps/review buildbun run build:hookbun run build:opencodebun run build:pi@pierre/diffs/worker/worker.js?worker&inline)apps/review/dist/index.html(createObjectURLplus data URL script), build emitted no warningsnode_modules/@pierre/diffsis 1.2.12; exports map intact for our import surface (.,./react,./ssr,./worker/worker.js)preloadFileoutput on three fixture files at 1.2.8 vs 1.2.12: prerendered HTML structure identical excepttabindex="0"removed from the<pre>wrapper, which matches the 1.2.12 focus fix. The embeddeddata-core-cssstylesheet changed: 1.2.12 ships it unminified (formatting and attribute quoting noise) plus real rule evolution consistent with the release notes (merge conflict actions, hover computed vars). No structural surprises.bun pm packof apps/pi-extension, thennpm installof the tarball in a scratch dir with a clean cache: resolves@pierre/diffs@1.2.12from the registry, dist/ssr and dist/worker intact, and a Node runtime smoke ofpreloadFilefrom that install renders successfully@pierre/themestill 1.0.3Not verified here: manual visual QA checklist
Headless verification cannot observe rendering, and the theme 1.1.0 transitive bump means CSS did change. I am not claiming visual parity. Before merging, a human should check:
VITE_PIERRE_VALIDATE_HEIGHTS=1Stage 2 pointer
Next week, once 1.3.x has aged past the 7 day window: bump to 1.3.x, take the
@pierre/thememajor and the hover pipeline visual work, with full visual QA. Do not fast forward this PR to 1.3.x.