Skip to content

new Tempo.versions property#56

Merged
magmacomputing merged 2 commits into
mainfrom
feature/versions
Jul 8, 2026
Merged

new Tempo.versions property#56
magmacomputing merged 2 commits into
mainfrom
feature/versions

Conversation

@magmacomputing

@magmacomputing magmacomputing commented Jul 8, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Added runtime version visibility via Tempo.versions to report loaded core modules and plugins.
    • Plugins and term plugins can now declare a version, and terms get a default version when omitted.
    • Updated documentation for the new 3.7.0 runtime version registry behavior.
  • Bug Fixes
    • Improved version synchronization so a failure in one workspace no longer blocks syncing for the others.
  • Chores
    • Bumped the release version to 3.7.0 across the monorepo.

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3b469dfb-7b89-4771-ae54-99436fbe3973

📥 Commits

Reviewing files that changed from the base of the PR and between 5a4fdfc and b65c12f.

📒 Files selected for processing (3)
  • bin/version-sync.mjs
  • packages/tempo/src/tempo.class.ts
  • packages/tempo/src/tempo.version.ts
✅ Files skipped from review due to trivial changes (1)
  • packages/tempo/src/tempo.version.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • bin/version-sync.mjs
  • packages/tempo/src/tempo.class.ts

📝 Walkthrough

Walkthrough

This PR bumps package versions to 3.7.0, adds a Tempo runtime version registry and versioned plugin/term metadata, migrates Tempo internals to class-private fields, updates term lookup wiring, and reworks version-sync.mjs to handle workspaces individually.

Changes

Version Sync Script

Layer / File(s) Summary
Per-workspace version sync loop
bin/version-sync.mjs
Replaces the combined version command with per-workspace execution, adds per-workspace failure handling, and updates the final error path.

Tempo Version Registry and Private Field Refactor

Layer / File(s) Summary
Version contract and defaults
packages/tempo/src/plugin/plugin.type.ts, packages/tempo/src/plugin/term/term.type.ts, packages/tempo/src/plugin/plugin.util.ts, packages/tempo/src/plugin/term/term.util.ts
Adds optional version fields to plugin contracts, removes the deprecated extension export, imports the build version constant, and defaults interpreter module and term versions when defining them.
Tempo private registries and versions
packages/tempo/src/tempo.class.ts
Moves Tempo internals to class-private storage, adds the runtime versions registry and getter, records plugin and term versions during registration, and updates discovery, term lookup, locale handling, and init/reset paths to use the new private members.
Term plugin resolution
packages/tempo/src/module/module.format.ts
Switches term-localized token resolution to use findTermPlugin with the internal constructor state instead of reading the term map directly.
Version bumps and release notes
package.json, packages/library/package.json, packages/tempo/package.json, packages/tempo/CHANGELOG.md, packages/tempo/doc/releases/v3.x.md, packages/tempo/src/tempo.version.ts
Bumps versions to 3.7.0 and adds 3.7.0 changelog and release documentation entries describing the runtime version registry and private-field refactor.

Estimated code review effort: 4 (Complex) | ~50 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding the new Tempo.versions property.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/versions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
bin/version-sync.mjs (1)

18-20: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Inner catch discards the error object.

The caught error is declared but never used. While stdio: 'inherit' surfaces npm's own stderr, the JS error object (exit status, captured output) is lost. Including it in the warning preserves diagnostics if stdio is ever changed and aids debugging unexpected failures.

♻️ Include error details in the warning
 		} catch (error) {
-			console.warn(`⚠️ Bypassed ${ws} (likely already at ${version} or not found).`);
+			console.warn(`⚠️ Bypassed ${ws} (likely already at ${version} or not found).`, error instanceof Error ? error.message : error);
 		}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bin/version-sync.mjs` around lines 18 - 20, The inner catch in
version-sync.mjs ignores the caught error, so the warning loses useful
diagnostics. Update the catch block in the version-sync flow to include the
error object in the console.warn output, using the caught error from the npm
install/fixup step so exit status and any captured details are preserved. Keep
the existing warning context around ws and version, but make the message
explicitly surface the error from that catch.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@bin/version-sync.mjs`:
- Around line 14-22: The workspace sync loop in version-sync.mjs always reports
success even if every execSync call fails; update the script to track whether
any workspace was actually synced versus bypassed inside the existing workspaces
loop. Use the current try/catch around execSync and the final completion log to
either emit a failure message or exit non-zero when all workspaces are bypassed,
so version-bump.mjs can detect a total sync failure correctly.

In `@packages/tempo/src/tempo.class.ts`:
- Around line 104-109: Update the Tempo public version source so Tempo.version
and Tempo.versions.Tempo return the new release value. The stale value comes
from the TEMPO_VERSION constant referenced by Tempo.#versions in tempo.class.ts,
so bump the exported version in tempo.version.ts to 3.7.0 and ensure the
build-time stamp used by Tempo.version is updated consistently.

---

Nitpick comments:
In `@bin/version-sync.mjs`:
- Around line 18-20: The inner catch in version-sync.mjs ignores the caught
error, so the warning loses useful diagnostics. Update the catch block in the
version-sync flow to include the error object in the console.warn output, using
the caught error from the npm install/fixup step so exit status and any captured
details are preserved. Keep the existing warning context around ws and version,
but make the message explicitly surface the error from that catch.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a1019f52-85af-4a31-8346-cb0fe55e2aa1

📥 Commits

Reviewing files that changed from the base of the PR and between 6906944 and 5a4fdfc.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • bin/version-sync.mjs
  • package.json
  • packages/library/package.json
  • packages/tempo/CHANGELOG.md
  • packages/tempo/doc/releases/v3.x.md
  • packages/tempo/package.json
  • packages/tempo/src/module/module.format.ts
  • packages/tempo/src/plugin/plugin.type.ts
  • packages/tempo/src/plugin/plugin.util.ts
  • packages/tempo/src/plugin/term/term.type.ts
  • packages/tempo/src/plugin/term/term.util.ts
  • packages/tempo/src/tempo.class.ts

Comment thread bin/version-sync.mjs
Comment thread packages/tempo/src/tempo.class.ts
@magmacomputing magmacomputing merged commit 083aef8 into main Jul 8, 2026
2 checks passed
@magmacomputing magmacomputing deleted the feature/versions branch July 8, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant