Skip to content

Release the Python package's vendored client, two minors behind - #53

Merged
mgoldsborough merged 1 commit into
mainfrom
chore/python-0.4.0
Jul 28, 2026
Merged

Release the Python package's vendored client, two minors behind#53
mgoldsborough merged 1 commit into
mainfrom
chore/python-0.4.0

Conversation

@mgoldsborough

Copy link
Copy Markdown
Contributor

The gap

PyPI nimblebrain-synapse 0.3.0 ships _assets/synapse-ui.iife.js built at @nimblebrain/synapse 0.12.0. The vendored asset in this repo has moved with every npm release since — main currently carries the 0.14.0 build — but python/pyproject.toml never moved, so nothing published it. A Python consumer has been on a 0.12.0 client across four npm releases (0.12.1, 0.12.2, 0.13.0, 0.14.0).

Why nothing caught it

ci.yml has two relevant gates and both pass on a tree with a stale Python version:

  • the vendored IIFE is diffed against the current build (freshness), and
  • __client_version__ is gated against package.json.

Neither compares the released PyPI artifact to the released npm one. The packages version independently and tag independently (nimblebrain-synapse-v* vs v*), so tagging v0.14.0 does not carry Python along — by design, but with no signal when the two drift.

Worth considering as a follow-up: a gate that fails when main's __client_version__ differs from the client version in the latest nimblebrain-synapse-v* tag, i.e. "the Python package owes a release."

Why 0.4.0, not 0.3.1

The Python API is untouched. But the client this package exists to ship changes observable behaviour:

  • SDK color defaults move from inline properties on documentElement into @layer synapse-defaults, so a component's own :root rule now wins where it previously needed !important or could not win at all.
  • Host @font-face descriptors arrive over synapse/fontFaces.

A consumer whose component CSS declares one of the backed tokens sees a different result after this bump. That is a minor.

Verification

pytest green — 18 passed. No source change beyond the version and the changelog entry; the vendored asset is already current on main and gated by CI's freshness diff.

Release after merge with a nimblebrain-synapse-v0.4.0 tag.

`nimblebrain-synapse` 0.3.0 ships `_assets/synapse-ui.iife.js` built at
`@nimblebrain/synapse` 0.12.0. The vendored asset in this repo has moved with
every npm release since, but `pyproject.toml` never did — and the PyPI
artifact is what a Python consumer actually gets, so they have been on a
0.12.0 client through 0.12.1, 0.12.2, 0.13.0 and 0.14.0.

Nothing caught it. CI gates `__client_version__` against `package.json` and
diffs the vendored IIFE against the current build, both of which pass on a
tree whose Python version is stale; what is ungated is the *released* PyPI
artifact against the released npm one. The two packages version
independently and are tagged independently (`nimblebrain-synapse-v*` vs
`v*`), so an npm release simply does not carry the Python one along.

0.4.0 rather than 0.3.1: the Python API is untouched, but the client this
package exists to ship changes cascade behaviour for any component CSS that
declares one of the backed color tokens, and adds host font faces.
@mgoldsborough
mgoldsborough merged commit 5c085c8 into main Jul 28, 2026
7 checks passed
mgoldsborough added a commit that referenced this pull request Jul 28, 2026
Three releases landed on main after this branch's last push: the cascade
layer (#50) and its framing (#52), cut as npm v0.14.0, and the Python
package's catch-up release (#53), cut as nimblebrain-synapse-v0.4.0.

npm 0.14.0 is published, so the warm removal stays under `[Unreleased]`
and releases as 0.15.0. The migration note's unaffected range widens to
`^0.11.0`-`^0.14.0` to match what consumers can now be pinned to.

The vendored Python IIFE is rebuilt from the merged source rather than
resolved to either side, since #50 changed the build output. Both
nimblebrain-synapse-v0.4.0 and v0.14.0 are tagged at commits that
predate this merge, so both shipped artifacts still carry the warm
channel their changelogs describe.

theme-defaults.ts auto-merged: #50's cascade-layer docblock and this
branch's correction to the neutrality claim are different hunks.
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