Files
stack/docs/scratchpads/update-checker-package-20260404.md
Jarvis e6d5fe5773
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
fix: retarget updater to @mosaic/mosaic
2026-04-04 20:42:18 -05:00

2.1 KiB

Scratchpad — updater package target fix (#382)

  • Objective: Fix mosaic update so modern installs query @mosaic/mosaic instead of stale @mosaic/cli.
  • Scope: updater logic, user-facing update/install hints, tests, package version bump(s).
  • Constraints: preserve backward compatibility for older @mosaic/cli installs if practical.
  • Acceptance:
    • fresh installs using @mosaic/mosaic report latest correctly
    • older installs do not regress unnecessarily
    • tests cover package lookup behavior
    • release version bumped for changed package(s)

Decisions

  • Prefer @mosaic/mosaic when both modern and legacy packages are installed globally.
  • For legacy @mosaic/cli installs, query @mosaic/cli first, then fall back to @mosaic/mosaic if the legacy package is not published.
  • Share install-target selection from packages/mosaic so both the consolidated CLI and the legacy packages/cli entrypoint print/install the same package target.
  • Extend the update cache to persist the resolved target package as well as the version so cached checks preserve the migration target.

Validation

  • pnpm install
  • pnpm --filter @mosaic/mosaic test -- __tests__/update-checker.test.ts
  • pnpm exec eslint --no-warn-ignored packages/mosaic/src/runtime/update-checker.ts packages/mosaic/src/cli.ts packages/mosaic/src/index.ts packages/mosaic/__tests__/update-checker.test.ts packages/cli/src/cli.ts
  • pnpm --filter @mosaic/mosaic lint
  • pre-push hooks: typecheck, lint, format:check

Review

  • Manual review of the updater diff caught and fixed a cache regression where fallback results would lose the resolved package target on subsequent cached checks.

Risks / Notes

  • Direct pnpm --filter @mosaic/mosaic typecheck and pnpm --filter @mosaic/cli ... checks were not representative in this worktree because packages/cli is excluded from pnpm-workspace.yaml and the standalone package check lacked the built workspace dependency graph.
  • The repo's pre-push hooks provided the authoritative validation path here and passed: root typecheck, lint, and format:check.