Skip to content

Pending Releases - #65

Merged
k0d13 merged 1 commit into
mainfrom
changeset-release/main
Jul 30, 2026
Merged

Pending Releases#65
k0d13 merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@saykit/config@0.6.0

Minor Changes

  • 30917de: Add say-tag to name JSX placeholders, extract childless elements as self-closing tags, and compile message values behind an underscore so no name is reserved
  • 06bee33: Reject two different values sharing a placeholder name, and allow a repeat when they are identical

saykit@0.6.0

Minor Changes

  • 90296f6: Compile message values behind an underscore so a value named id no longer displaces the message id
  • 90296f6: Name a placeholder by interpolating a single-key object, ${{ cartTotal: getTotal() }}

@saykit/react@0.6.0

Minor Changes

  • 90296f6: Compile message values behind an underscore so a value named id no longer displaces the message id
  • 30917de: Add say-tag to name JSX placeholders, extract childless elements as self-closing tags, and compile message values behind an underscore so no name is reserved

Patch Changes

  • 6948695: Rebuild the SayProvider instance when the locale or messages change so locale switches reach descendants

@saykit/transform-js@0.6.0

Minor Changes

  • 90296f6: Compile message values behind an underscore so a value named id no longer displaces the message id
  • 90296f6: Name a placeholder by interpolating a single-key object, ${{ cartTotal: getTotal() }}
  • 06bee33: Reject two different values sharing a placeholder name, and allow a repeat when they are identical

Patch Changes

  • Updated dependencies [30917de]
  • Updated dependencies [06bee33]
    • @saykit/config@0.6.0

@saykit/transform-jsx@0.6.0

Minor Changes

  • 30917de: Add say-tag to name JSX placeholders, extract childless elements as self-closing tags, and compile message values behind an underscore so no name is reserved
  • 90296f6: Name a placeholder by interpolating a single-key object, ${{ cartTotal: getTotal() }}
  • 06bee33: Reject two different values sharing a placeholder name, and allow a repeat when they are identical

Patch Changes

  • c6b374e: Add JSX message source references to parser
  • Updated dependencies [90296f6]
  • Updated dependencies [30917de]
  • Updated dependencies [90296f6]
  • Updated dependencies [06bee33]
    • @saykit/transform-js@0.6.0
    • @saykit/config@0.6.0

babel-plugin-saykit@0.6.0

Patch Changes

  • Updated dependencies [30917de]
  • Updated dependencies [06bee33]
    • @saykit/config@0.6.0

unplugin-saykit@0.6.0

Patch Changes

  • Updated dependencies [30917de]
  • Updated dependencies [06bee33]
    • @saykit/config@0.6.0

@saykit/format-json@0.6.0

@saykit/format-po@0.6.0

@saykit/carbon@0.6.0

@github-actions
github-actions Bot requested a review from k0d13 as a code owner July 28, 2026 00:22
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
saykit Canceled Canceled Jul 29, 2026 1:12pm

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 9427348 to 892fe47 Compare July 29, 2026 11:21
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 892fe47 to 4254917 Compare July 29, 2026 11:31
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 4254917 to 1bb7b54 Compare July 29, 2026 13:12
@k0d13

k0d13 commented Jul 29, 2026

Copy link
Copy Markdown
Owner

@claude any breaking changes to note?
one is the self closing tag fix, <0></0> to <0/>
anything else worth noting?

@claude

claude Bot commented Jul 29, 2026

Copy link
Copy Markdown

Claude finished @k0d13's task in 1m 21s —— View job


Tasks

  • Gather context (read changesets, changelogs)
  • Analyze source code to confirm breaking vs. additive changes
  • Post summary

Breaking changes in this 0.6.0 release

1. Self-closing childless tags — <0></0><0/> (yes, this one's real, but scoped)

  • packages/config/src/features/messages/convert.ts:19-27: an element with zero children now compiles to <0/> instead of <0></0>. Elements that have children still emit the paired form — only genuinely-empty elements (e.g. <img />, <br /> inside <Say>) change shape.
  • Impact: any already-translated catalog entry (PO/JSON) for a message containing a childless tag won't match the new source string anymore — those specific entries re-extract as new/untranslated and need to be redone by translators. Not a runtime crash, but a catalog-content break worth flagging in release notes.

2. Duplicate placeholder names now throw at build time (new)

  • packages/config/src/features/messages/identifier.ts:60-105. Previously, two different values sharing a placeholder name were never checked and silently coexisted (JS's last-key-wins). Now any two non-identical values sharing a name throw Duplicate placeholder name '...' during compilation.
  • Impact: code that previously built successfully (while silently dropping one of the colliding values) will now fail the build. This is the other change worth calling out — it can break existing CI builds, not just runtime behavior.

Not breaking (additive / internal-only)

  • say-tag attribute (transform-jsx/src/parser.ts:180-209) — new opt-in JSX attribute to name placeholders; untagged elements keep the old auto-incrementing numeric ids, so default behavior is unchanged.
  • Values compiled behind an underscore (transform-js/src/generator.ts:24-26, transform-jsx/src/generator.ts:32-34) — only changes the internal compiled .call()/<Say> prop names (_name instead of name); the runtime (integration/src/runtime.ts:15-22) strips the underscore back off, and the ICU placeholder in the catalog string is still {name}. Existing catalogs and hand-written calls are unaffected.
  • Single-key-object placeholder naming ${{ cartTotal: getTotal() }} (transform-js/src/parser.ts:145-169) — purely additive; only matches object literals with exactly one key, so existing expressions like ${getTotal()} compile exactly as before.
  • SayProvider rebuild on locale/messages change (integration-react/src/runtime/client.ts:9,24-31) — bugfix (useStateuseMemo), same props/signature.
  • JSX message source references — additive #: file:line metadata in PO output only.

Summary

Two things worth a release note: the self-closing tag shape change (may drop some existing translations back to untranslated) and the new duplicate-placeholder-name build error (may break builds that previously compiled despite a name collision). Everything else this release is additive or internal.

@k0d13
k0d13 merged commit 7d3e37f into main Jul 30, 2026
1 check passed
@k0d13
k0d13 deleted the changeset-release/main branch July 30, 2026 22:21
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