Skip to content

standalone format#19

Merged
magmacomputing merged 7 commits intomainfrom
release/format-engine
Apr 22, 2026
Merged

standalone format#19
magmacomputing merged 7 commits intomainfrom
release/format-engine

Conversation

@magmacomputing
Copy link
Copy Markdown
Owner

@magmacomputing magmacomputing commented Apr 22, 2026

Standalone format() functionality

Summary by CodeRabbit

  • New Features

    • Standalone parse() and format() utilities for direct use.
    • New public "discrete" module exposing parsing and formatting.
    • Proxy-based format discovery for dynamic property access.
  • Documentation

    • Full formatting reference and token guide.
    • Migration notes for v2.4.0 and updated examples.
  • Refactor

    • Reorganized parse/format implementation and export surface.
  • Tests

    • Added standalone parsing/formatting test suite.
  • Chores

    • Version bumped to 2.4.0.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

Warning

Rate limit exceeded

@magmacomputing has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 21 minutes and 0 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 21 minutes and 0 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 403093af-a135-41db-8ce6-e19b0182c0b3

📥 Commits

Reviewing files that changed from the base of the PR and between ce5fe07 and 604cd2c.

📒 Files selected for processing (6)
  • packages/library/test/common/pledge.class.test.ts
  • packages/tempo/doc/tempo.format.md
  • packages/tempo/src/discrete/discrete.format.ts
  • packages/tempo/src/support/tempo.init.ts
  • packages/tempo/src/support/tempo.util.ts
  • packages/tempo/test/standalone.test.ts
📝 Walkthrough

Walkthrough

Refactors Tempo by extracting parse/format into standalone discrete modules, updates exports/imports/path aliases and package versions to 2.4.0, adds documentation and tests, and adjusts build/test config and VitePress settings to expose the new discrete entry points.

Changes

Cohort / File(s) Summary
Version Bumps
package.json, packages/library/package.json, packages/tempo/package.json
Bumped versions from 2.3.0 → 2.4.0; updated sideEffects and devDependency @magmacomputing/library to 2.4.0; added markdown-it-mathjax3.
Discrete Parse/Format Implementation
packages/tempo/src/discrete/discrete.parse.ts, packages/tempo/src/discrete/discrete.format.ts, packages/tempo/src/discrete/discrete.index.ts
Added standalone parse() and format() implementations and index re-exports. parse initializes/clones runtime state, compiles patterns, normalizes Temporal inputs; format normalizes inputs, supports templates/proxy, meridiem injection, token substitution, and numeric coercion.
Removed Legacy Implementations
packages/tempo/src/plugin/module/module.format.ts, packages/tempo/src/tempo.parse.ts
Deleted legacy plugin/module formatter and previous standalone parse entry; functionality migrated into discrete modules.
Exports / Import Maps
packages/tempo/package.json, packages/tempo/importmap.json, packages/tempo/src/tempo.index.ts, packages/tempo/src/core.index.ts
Repointed ./parse and ./format exports to dist/discrete/*; added ./discrete export; updated import map entries and TS index exports/order to surface discrete APIs.
TypeScript & Test Paths
packages/tempo/src/tsconfig.json, packages/tempo/bin/tsconfig.json, packages/tempo/test/tsconfig.json, packages/tempo/test/standalone.test.ts
Added #tempo/parse, #tempo/format, #tempo/discrete path mappings; reformatted bin tsconfig; added standalone tests exercising parse/format behavior and Temporal handling.
Build / Dev Tooling Aliases
packages/tempo/.vitepress/config.ts, packages/tempo/vitest.config.ts, vitest.config.ts
Updated Vite/VitePress/Vitest alias mappings to resolve parse/format to discrete implementations; added #tempo/discrete alias; enabled markdown math in VitePress and added sidebar entry.
Docs & Guides
packages/tempo/README.md, packages/tempo/doc/migration-guide.md, packages/tempo/doc/tempo.format.md, packages/tempo/doc/tempo.parse.md, other docs
Added tempo.format documentation, migration guide for v2.4.0 (new subpaths), clarified standalone parse limitations, and updated README examples and minor docs edits.
Support Layer & Utilities
packages/tempo/src/support/tempo.runtime.ts, packages/tempo/src/support/tempo.util.ts, packages/tempo/src/library.index.ts
Minor comment/format changes in runtime fallback; changed regex replace usage and cloned parse maps/snippets earlier to isolate mutable state; updated library JSDoc.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant DiscreteModule as Discrete parse/format
  participant Runtime as Runtime/State
  participant Engine as ParseEngine/Formatter
  participant Temporal as Temporal API

  Client->>DiscreteModule: call parse(value, options) / format(value?, fmt?)
  DiscreteModule->>Runtime: init()/markConfig(), extendState(), setPatterns()
  DiscreteModule->>Engine: ParseEngine.parse(state, value) / render(template, zdt, state)
  Engine->>Temporal: normalize Instant → ZonedDateTime, apply timezone/calendar
  Engine-->>DiscreteModule: parsed ZonedDateTime / rendered string/number
  DiscreteModule-->>Client: return result
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • Release/parse engine #18 — Related refactor exposing standalone parse entrypoints and moving parse internals to discrete implementations.
  • Maintenance v2.0.2 #9 — Similar changes to parse/format export/import surface and moduleization across Tempo packages.
  • Feature/modular parse #16 — Overlapping work around standalone parse API and repointing package exports/import maps.

Poem

🐰 I hopped through code, so neat and spry,
Split parse and format to stand alone high,
Discrete functions now dance in the light,
Docs, tests, and maps aligned just right,
Version 2.4 — a carrot-fresh delight! 🥕✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'standalone format' is vague and does not clearly convey the scope of changes, which include significant refactoring of parse/format modules, version bumps, new exports, and comprehensive documentation updates beyond just exposing format functionality. Consider a more specific title that captures the main architectural change, such as 'Refactor parse/format into discrete modules with v2.4.0 release' or 'Extract standalone parse and format utilities into new discrete module'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/format-engine

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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/tempo/package.json (1)

25-32: ⚠️ Potential issue | 🟡 Minor

Remove stale sideEffects entry for tempo.parse.js and add discrete entry points.

The parse function has moved from tempo.parse.js to #tempo/parse (which maps to ./dist/discrete/discrete.parse.js). Since tempo.parse.js is no longer emitted, this glob is dead. Additionally, discrete.parse.js and discrete.format.js invoke init() and getRuntime(), making them side-effectful and requiring an entry in sideEffects.

Suggested update
   "sideEffects": [
     "**/temporal.polyfill.js",
     "**/*-polyfill.ts",
     "**/module.*.js",
     "**/module.*.ts",
     "**/tempo.index.js",
-    "**/tempo.parse.js"
+    "**/discrete.*.js"
   ],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/tempo/package.json` around lines 25 - 32, Update package.json's
"sideEffects" array by removing the stale glob entry that matches
"tempo.parse.js" (since the parse export moved to the "#tempo/parse" discrete
entry) and instead add explicit entries for the discrete side-effectful bundles:
include "./dist/discrete/discrete.parse.js" and
"./dist/discrete/discrete.format.js" (or their package-relative equivalents)
because these files call init() and getRuntime() and must be treated as having
side effects; ensure the new entries replace the removed tempo.parse.js pattern
so bundlers consider those modules side-effectful while the dead glob is
removed.
🧹 Nitpick comments (3)
packages/tempo/src/discrete/discrete.parse.ts (1)

48-49: Timezone/calendar extraction logic is duplicated verbatim at Lines 136–138.

The same ID-unwrapping snippet (isString(x) ? x : (x as any).id ?? (x as any).timeZoneId) appears at least three times in this file (Lines 48–49, 137–138). Consider extracting a small helper to keep the normalization consistent (and to make future changes to Temporal.TimeZone/Temporal.Calendar object shapes one-line edits):

♻️ Suggested helper
const tzId  = (v: any): string => isString(v) ? v : v?.id ?? v?.timeZoneId;
const calId = (v: any): string => isString(v) ? v : v?.id ?? v?.calendarId;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/tempo/src/discrete/discrete.parse.ts` around lines 48 - 49, Extract
the repeated ID-unwrapping logic into small helper functions (e.g., tzId(v) and
calId(v)) placed near the top of the module and replace the duplicated
expressions that set tz and cal (the const tz = ... and const cal = ... lines)
and the other duplicated spots in this file with calls to those helpers; ensure
the helpers accept any value and return a string by doing the same normalization
(isString check then .id ?? .timeZoneId/.calendarId) so all temporal
TimeZone/Calendar normalization uses the single helper.
packages/tempo/package.json (1)

127-134: Dual public paths for parse/format (./parse and ./module/parse).

Both ./parse (Line 175) and ./module/parse (Line 127), and similarly ./format and ./module/format, resolve to the same ./dist/discrete/discrete.*.js. Having two canonical specifiers for the same module makes it harder for consumers (and bundlers) to dedupe, and risks divergent import conventions in downstream code. If ./module/parse/./module/format are only kept for migration compatibility, consider adding a deprecation note in the migration guide or removing them in favor of the shorter ./parse/./format.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/tempo/package.json` around lines 127 - 134, The package.json
currently exposes duplicate export paths "./module/parse" and "./parse" (and
"./module/format" and "./format") that both resolve to
"./dist/discrete/discrete.*.js"; remove the redundant "./module/parse" and
"./module/format" export entries from package.json so consumers have a single
canonical specifier ("./parse" and "./format"), or alternatively keep them but
document them as deprecated in the migration guide/README; update any mentions
of "./module/parse" and "./module/format" (search for those exact strings) and
ensure package.json only exports "./parse" and "./format" as the primary paths.
packages/tempo/doc/tempo.format.md (1)

13-13: {day} token used in example but absent from the token table.

Line 13 uses {day} (unpadded day), which is supported in discrete.format.ts (case 'day': return zdt.day.toString();), but the "Supported Tokens" table (Lines 80–99) only documents {dd}. Please add a row for {day} (and consider {dow}, {yw}, {yyww}, {hhmiss}, {nano} which are also implemented but undocumented) for consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/tempo/doc/tempo.format.md` at line 13, The docs example uses the
undocumented {day} token; update the "Supported Tokens" table in tempo.format.md
to add a row for {day} (unpadded day) matching the implementation in
discrete.format.ts (case 'day': return zdt.day.toString()); also audit
discrete.format.ts for other implemented-but-undocumented tokens (e.g., case
'dow', 'yw', 'yyww', 'hhmiss', 'nano') and add corresponding entries to the
table describing their output format so the docs match the formatter
implementation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/tempo/doc/tempo.format.md`:
- Around line 90-105: Docs and implementation disagree: the `{HH}` token is
padded in discrete.format.ts using pad(zdt.hour > 12 ? zdt.hour % 12 : zdt.hour
|| 12), so examples showing unpadded values ("3" / "3:30pm") are incorrect;
either update the docs examples to "03" / "03:30pm" to match the current padded
behavior or change the implementation to output unpadded 12-hour values by
removing the pad call (or altering that expression) so `{HH}` yields "3" and
"3:30pm". Use the `{HH}` token, the pad(...) expression, and discrete.format.ts
to locate and apply the change.

In `@packages/tempo/README.md`:
- Around line 47-51: The examples showing diff.iso and event.format are
non-deterministic because event is created from a runtime-relative date; update
the README to use a fixed, reproducible event (or explicitly state the reference
date) so the outputs (e.g., the value returned by event.until('xmas') and the
string from event.format('{mon} {day}, {yyyy}')) match the examples; locate
usages of event, diff and the calls event.until and event.format in the Quick
Start snippet and replace them with a deterministic date or annotate the
examples with the reference date used to generate the shown outputs.

In `@packages/tempo/src/discrete/discrete.format.ts`:
- Around line 72-74: The lookup assumes formats.has exists and will throw for
plain objects; update the condition around template initialization to only call
formats.has when it's a function (e.g., Map) and fallback to an object key check
otherwise. Specifically, in the template assignment that references
isString(fmt), formats and formats.has, replace the plain formats.has check with
a guarded check (typeof (formats as any).has === 'function' ? (formats as
any).has(fmt as string) : Object.prototype.hasOwnProperty.call(formats, fmt as
string)) and then index into formats accordingly when selecting the template.
- Around line 32-44: The module is missing the Temporal polyfill import so
calling Temporal.Now.zonedDateTimeISO(...) in the formatter can throw when no
earlier entrypoint installed the polyfill; add the same polyfill import used
elsewhere (importing the Temporal polyfill at the top of
packages/tempo/src/discrete/discrete.format.ts) so Temporal is defined before
the code that computes zdt (the block using isTempo, isZonedDateTime, isInstant
and Temporal.Now.zonedDateTimeISO).
- Line 85: The code calls replaceAll(new RegExp(Match.braces)) which drops the
original RegExp flags and throws a TypeError; update both sites that call
replaceAll(new RegExp(Match.braces)) (the one assigning result in
discrete.format.ts and the similar call in tempo.util.ts) to either use
String.prototype.replace with an explicit global RegExp (e.g.
template.replace(new RegExp(Match.braces, 'g'), ...) ) or recreate the RegExp
preserving/adding the 'g' flag before calling replaceAll, ensuring Match.braces
is used with the 'g' flag so the replacement does not fail at runtime.

In `@packages/tempo/src/discrete/discrete.parse.ts`:
- Around line 538-560: The local shadow state created in parse() only sets
config and parse via Object.create, which leaves required fields like
state.OPTION and state.ZONED_DATE_TIME undefined (breaking
conform()/isZonedDateTimeLike()) and shares nested objects (e.g.,
state.parse.snippet) with globalState allowing mutations; fix by fully
populating the Internal.State shape when constructing state (copy/assign all
required properties from globalState or init() so state.OPTION and
state.ZONED_DATE_TIME exist) and stop using Object.create for shared
containers—use shallow clones instead (e.g., state.config = markConfig({
...globalState.config }), state.parse = markConfig({ ...globalState.parse }) )
and then shallow-clone any nested mutable maps/objects before mutations in
setPatterns (e.g., state.parse.snippet = { ...state.parse.snippet } and clone
any pattern maps) so parse(), extendState, setPatterns, conform(), and
isZonedDateTimeLike() operate on an isolated state instance.

In `@packages/tempo/src/library.index.ts`:
- Around line 2-4: The docblock header and description are inconsistent: the
title uses "Magma Library" but the sentence still references "Tempo"; update the
docblock so the terminology is unified by replacing the phrase "Tempo" with
"Magma" in the description (look for the header "Magma Library" and the line
containing "Tempo" in the top comment) so the entry-point docs consistently
reference "Magma".

In `@packages/tempo/test/standalone.test.ts`:
- Around line 8-12: The test calls init({ timeZone: 'UTC' }) in beforeAll which
mutates shared runtime.state and can leak into other tests; to fix, capture the
previous state (e.g., const prevState = runtime.state or at least prevTimeZone =
runtime.state.timeZone) before calling init in beforeAll, and restore it in
afterAll (call init(prevState) or set runtime.state.timeZone = prevTimeZone) so
the global runtime.state is returned to its original value; update the test to
use beforeAll/afterAll paired restoration around the init call referencing init,
beforeAll, afterAll, and runtime.state.

---

Outside diff comments:
In `@packages/tempo/package.json`:
- Around line 25-32: Update package.json's "sideEffects" array by removing the
stale glob entry that matches "tempo.parse.js" (since the parse export moved to
the "#tempo/parse" discrete entry) and instead add explicit entries for the
discrete side-effectful bundles: include "./dist/discrete/discrete.parse.js" and
"./dist/discrete/discrete.format.js" (or their package-relative equivalents)
because these files call init() and getRuntime() and must be treated as having
side effects; ensure the new entries replace the removed tempo.parse.js pattern
so bundlers consider those modules side-effectful while the dead glob is
removed.

---

Nitpick comments:
In `@packages/tempo/doc/tempo.format.md`:
- Line 13: The docs example uses the undocumented {day} token; update the
"Supported Tokens" table in tempo.format.md to add a row for {day} (unpadded
day) matching the implementation in discrete.format.ts (case 'day': return
zdt.day.toString()); also audit discrete.format.ts for other
implemented-but-undocumented tokens (e.g., case 'dow', 'yw', 'yyww', 'hhmiss',
'nano') and add corresponding entries to the table describing their output
format so the docs match the formatter implementation.

In `@packages/tempo/package.json`:
- Around line 127-134: The package.json currently exposes duplicate export paths
"./module/parse" and "./parse" (and "./module/format" and "./format") that both
resolve to "./dist/discrete/discrete.*.js"; remove the redundant
"./module/parse" and "./module/format" export entries from package.json so
consumers have a single canonical specifier ("./parse" and "./format"), or
alternatively keep them but document them as deprecated in the migration
guide/README; update any mentions of "./module/parse" and "./module/format"
(search for those exact strings) and ensure package.json only exports "./parse"
and "./format" as the primary paths.

In `@packages/tempo/src/discrete/discrete.parse.ts`:
- Around line 48-49: Extract the repeated ID-unwrapping logic into small helper
functions (e.g., tzId(v) and calId(v)) placed near the top of the module and
replace the duplicated expressions that set tz and cal (the const tz = ... and
const cal = ... lines) and the other duplicated spots in this file with calls to
those helpers; ensure the helpers accept any value and return a string by doing
the same normalization (isString check then .id ?? .timeZoneId/.calendarId) so
all temporal TimeZone/Calendar normalization uses the single helper.
🪄 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: c8f25d92-4350-4229-a39e-d4656a02ccf1

📥 Commits

Reviewing files that changed from the base of the PR and between 51ab4c5 and 48ab812.

📒 Files selected for processing (24)
  • package.json
  • packages/library/package.json
  • packages/tempo/.vitepress/config.ts
  • packages/tempo/README.md
  • packages/tempo/bin/tsconfig.json
  • packages/tempo/doc/migration-guide.md
  • packages/tempo/doc/tempo.format.md
  • packages/tempo/doc/tempo.parse.md
  • packages/tempo/importmap.json
  • packages/tempo/package.json
  • packages/tempo/src/core.index.ts
  • packages/tempo/src/discrete/discrete.format.ts
  • packages/tempo/src/discrete/discrete.index.ts
  • packages/tempo/src/discrete/discrete.parse.ts
  • packages/tempo/src/library.index.ts
  • packages/tempo/src/plugin/module/module.format.ts
  • packages/tempo/src/support/tempo.runtime.ts
  • packages/tempo/src/tempo.index.ts
  • packages/tempo/src/tempo.parse.ts
  • packages/tempo/src/tsconfig.json
  • packages/tempo/test/standalone.test.ts
  • packages/tempo/test/tsconfig.json
  • packages/tempo/vitest.config.ts
  • vitest.config.ts
💤 Files with no reviewable changes (2)
  • packages/tempo/src/tempo.parse.ts
  • packages/tempo/src/plugin/module/module.format.ts

Comment thread packages/tempo/doc/tempo.format.md
Comment thread packages/tempo/doc/tempo.format.md
Comment thread packages/tempo/README.md Outdated
Comment thread packages/tempo/src/discrete/discrete.format.ts Outdated
Comment thread packages/tempo/src/discrete/discrete.format.ts Outdated
Comment thread packages/tempo/src/discrete/discrete.format.ts Outdated
Comment thread packages/tempo/src/discrete/discrete.parse.ts
Comment thread packages/tempo/src/library.index.ts Outdated
Comment thread packages/tempo/test/standalone.test.ts
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/tempo/src/discrete/discrete.format.ts`:
- Around line 37-45: The format() normalization currently only handles Tempo,
Temporal.ZonedDateTime, Temporal.Instant and undefined (see isTempo,
isZonedDateTime, isInstant branches) but the docs claim it also accepts ISO
strings, PlainDate and PlainDateTime; either implement normalization for those
types by extending the zdt resolution to detect string inputs (parse with
Temporal.ZonedDateTime.from or Temporal.PlainDate/PlainDateTime.from and then
convert to a ZonedDateTime with the provided tz), and add tests for
string/PlainDate/PlainDateTime paths, or update the documentation to remove ISO
string/PlainDate/PlainDateTime from supported inputs; ensure changes reference
the format() function and the zdt resolution logic so behavior matches docs and
tests.
🪄 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: f4247519-9ede-41b2-ab26-cb4fbe38d34a

📥 Commits

Reviewing files that changed from the base of the PR and between 48ab812 and ce5fe07.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (13)
  • packages/tempo/.vitepress/config.ts
  • packages/tempo/README.md
  • packages/tempo/doc/lazy-evaluation-pattern.md
  • packages/tempo/doc/migration-guide.md
  • packages/tempo/doc/tempo.benchmarks.md
  • packages/tempo/doc/tempo.config.md
  • packages/tempo/doc/tempo.format.md
  • packages/tempo/package.json
  • packages/tempo/src/discrete/discrete.format.ts
  • packages/tempo/src/discrete/discrete.parse.ts
  • packages/tempo/src/library.index.ts
  • packages/tempo/src/support/tempo.util.ts
  • packages/tempo/test/standalone.test.ts
💤 Files with no reviewable changes (1)
  • packages/tempo/doc/lazy-evaluation-pattern.md
✅ Files skipped from review due to trivial changes (6)
  • packages/tempo/doc/tempo.benchmarks.md
  • packages/tempo/doc/tempo.config.md
  • packages/tempo/doc/migration-guide.md
  • packages/tempo/src/library.index.ts
  • packages/tempo/README.md
  • packages/tempo/test/standalone.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/tempo/.vitepress/config.ts

Comment thread packages/tempo/src/discrete/discrete.format.ts Outdated
@magmacomputing
Copy link
Copy Markdown
Owner Author

@coderabbitai please review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

@magmacomputing Sure! I'll start reviewing the PR right away.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@magmacomputing magmacomputing merged commit 066f5a1 into main Apr 22, 2026
1 check passed
@magmacomputing
Copy link
Copy Markdown
Owner Author

standalone format

@magmacomputing magmacomputing deleted the release/format-engine branch April 22, 2026 09:40
This was referenced Apr 25, 2026
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