Files
stack/docs/scratchpads/387-updater-wrapper-gitea-20260404.md
Jarvis c39fa065fc
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
fix: simplify updater to @mosaic/mosaic only, add explicit tea repo/login flags (#387)
BREAKING CHANGE: Remove legacy @mosaic/cli fallback from update-checker.
The updater now targets only @mosaic/mosaic — legacy package compatibility
is out of scope per approved breaking change.

- update-checker.ts: remove LEGACY_PKG, INSTALLED_PACKAGE_ORDER, candidate
  iteration, and cache key comparison. Single query for @mosaic/mosaic only.
- update-checker.test.ts: remove legacy fallback and cross-contamination
  tests. Add test asserting no @mosaic/cli queries are made.
- pr-merge.sh: add --repo and --login flags to tea merge command; resolve
  OWNER/REPO before case block.
- issue-close.sh: add --repo and --login flags to tea issue commands;
  resolve OWNER/REPO after detect_platform.
- pr-ci-wait.sh: no changes needed (uses curl, not tea).
- detect-platform.sh: no changes needed (provides get_repo_owner/name).

Ref: #387
2026-04-04 21:06:59 -05:00

2.7 KiB

Scratchpad — issue #387 updater simplification + Gitea wrapper repo context

  • Objective: simplify updater behavior to @mosaic/mosaic only, and fix Gitea wrapper scripts so merge/CI/issue operations work reliably when tea needs explicit repo/login context.
  • Scope:
    • packages/mosaic/src/runtime/update-checker.ts
    • packages/mosaic/__tests__/update-checker.test.ts
    • any package metadata/version bumps needed
    • repo-source git wrappers under packages/mosaic/framework/tools/git/
  • Constraints:
    • Jason approved breaking changes; legacy @mosaic/cli support is out of scope.
    • Keep changes focused and mergeable.
  • Acceptance:
    • updater only targets @mosaic/mosaic
    • wrapper path works on Gitea in this environment without manual repo guessing
    • PR merges squash-only after green CI

Progress

2026-04-04

Update Checker Simplification (DONE)

  • Removed LEGACY_PKG, INSTALLED_PACKAGE_ORDER constants — only PKG = '@mosaic/mosaic' remains
  • getInstalledVersion() — removed loop over multiple packages, only checks @mosaic/mosaic
  • getLatestVersion() — removed installedPackage parameter and candidate iteration; single query for @mosaic/mosaic
  • checkForUpdate() — removed currentPackage-based cache key comparison; cache is now package-agnostic
  • RegistryCache — removed currentPackage and targetPackage fields
  • formatUpdateNotice() — removed targetChanged branch (package migration notice no longer relevant)
  • All legacy fallback/compatibility logic removed

Test Updates (DONE)

  • Removed legacy @mosaic/cli fallback test
  • Removed cache cross-contamination test (was testing legacy→modern package transition)
  • Added does not query legacy @mosaic/cli package test — asserts no @mosaic/cli npm commands are issued
  • Added returns empty result when package is not installed test
  • All 8 tests pass

Gitea Wrapper Fixes (DONE)

  • pr-merge.sh:
    • Added OWNER=$(get_repo_owner) / REPO=$(get_repo_name) before case block
    • tea merge command now includes --repo $OWNER/$REPO --login ${GITEA_LOGIN:-mosaicstack}
  • issue-close.sh:
    • Added OWNER=$(get_repo_owner) / REPO=$(get_repo_name) after detect_platform
    • Both tea issue comment and tea issue close now include --repo "$OWNER/$REPO" --login "${GITEA_LOGIN:-mosaicstack}"
  • pr-ci-wait.sh: No changes needed — uses curl API calls (not tea), already passes owner/repo correctly
  • detect-platform.sh: No changes needed — provides the get_repo_owner/get_repo_name functions used by wrappers

Verification

  • vitest run — 8/8 tests pass
  • tsc --noEmit — no errors in update-checker.ts (pre-existing workspace dep errors unrelated)
  • eslint — clean, no warnings