singularity-forge/scripts/sync-pkg-version.cjs
alphinus_biosdesk 32156ec036 fix: sync pkg/package.json version with pi-coding-agent to prevent false update banner
pkg/package.json had a hardcoded version (0.1.0) that never got updated.
Since gsd-pi sets PI_PACKAGE_DIR=pkg/, pi's config.js reads VERSION from
pkg/package.json. The update check compares this stale version against npm
registry and always shows 'Update Available' even when the user is already
on the latest release.

Fix:
- Update pkg/package.json to current pi-coding-agent version (0.57.1)
- Add sync-pkg-version.cjs script that reads the installed pi-coding-agent
  version and writes it into pkg/package.json
- Run the sync script in prepublishOnly so the version stays correct on
  every publish
2026-03-11 09:07:17 +01:00

30 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
/**
* Sync pkg/package.json version with the installed @mariozechner/pi-coding-agent version.
*
* gsd-pi sets PI_PACKAGE_DIR=pkg/ so that pi's config.js reads piConfig from
* pkg/package.json (for branding: name="gsd", configDir=".gsd"). However, config.js
* also reads `version` from that same file and uses it for the update check
* (comparing against npm registry). If pkg/package.json has a stale version,
* pi's update banner fires even when the user is already on the latest release.
*
* This script reads the actual installed pi-coding-agent version and writes it
* into pkg/package.json so VERSION is always correct at publish time.
*/
const { readFileSync, writeFileSync } = require('fs')
const { resolve, join } = require('path')
const root = resolve(__dirname, '..')
const piPkgPath = join(root, 'node_modules', '@mariozechner', 'pi-coding-agent', 'package.json')
const gsdPkgPath = join(root, 'pkg', 'package.json')
const piPkg = JSON.parse(readFileSync(piPkgPath, 'utf-8'))
const gsdPkg = JSON.parse(readFileSync(gsdPkgPath, 'utf-8'))
if (gsdPkg.version !== piPkg.version) {
console.log(`[sync-pkg-version] Updating pkg/package.json version: ${gsdPkg.version}${piPkg.version}`)
gsdPkg.version = piPkg.version
writeFileSync(gsdPkgPath, JSON.stringify(gsdPkg, null, 2) + '\n')
} else {
console.log(`[sync-pkg-version] pkg/package.json version already matches: ${piPkg.version}`)
}