Skip to content

spytial-core 3.2.3: draw endpoints accept unary groups; textStyle large#129

Merged
sidprasad merged 2 commits into
mainfrom
spytial-core-3.2.2
Jul 16, 2026
Merged

spytial-core 3.2.3: draw endpoints accept unary groups; textStyle large#129
sidprasad merged 2 commits into
mainfrom
spytial-core-3.2.2

Conversation

@sidprasad

@sidprasad sidprasad commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Bumps the pinned spytial-core from 3.2.1 to 3.2.3 and corrects the inferredEdge docs that 3.2.2 makes wrong. Two upstream releases landed while this was open, so the PR now tracks both.

What changed

./update-spytial-core.sh handled the mechanical part of each bump: the CDN pin in core_assets.py, the vendor README pin, and the IJsonDataInstance test docstring. Both releases changed only the browser bundles, so the re-vendored tier-2 evaluator came back byte-identical each time and _vendor/spytial-core-evaluator.js is not in this diff. Patch bump to 1.8.1 covers the PR as a whole.

3.2.2 — core#501, and why the docstrings changed

#501 extends the inferredEdge draw feature we shipped in 3.2.1:

  • a draw endpoint may now name a unary group constraint — it attaches to that single group directly, and the end's atom plays no part. Previously this parsed fine but silently dropped every edge at layout time.
  • an edge whose ends land on the same group is kept and drawn as a self-loop on the hull, rather than dropped.
  • a name meaning both a keyed group and a single group is now a layout-time error (with no key in play, there's no way to pick).

Our docstring stated the opposite as a rule — that a draw endpoint's group "must be keyed", and that a unary group's edge "is dropped without drawing". That's the one kind of stale doc worth catching in a version bump: not vague, but a confident instruction pointing users away from something that now works. Both the inferredEdge decorator doc and the InferredEdge class doc are rewritten to cover keyed vs. unary endpoints, the self-loop, and the new ambiguity error.

_validate_draw needs no change — it checks only the '<end> -> <end>' shape, which #501 leaves alone. The existing shape tests in test_decorator_docs.py still cover it.

3.2.3 — core#502

Makes textStyle: { size: large } render perceptibly larger than the node label (tier constant 16px → 20px; edge labels no longer have the authored tier overwritten by the zoom handler's hardcoded 12px base each layout tick).

No doc change needed on this side: our TextStyle docs in annotations.py and docs/operations.md only enumerate 'small' | 'normal' | 'large', never pixel values or relative sizes, so nothing here described the behavior #502 corrected.

Reviewer notes

  • No behavior change in this package; the semantics live in core. The only judgment call is the draw doc rewrite — worth a read against #501's description.
  • Verified: 444 tests pass. I also ran the four opt-in real-browser e2e tests (SPYTIAL_BROWSER_TESTS=1 pytest test/test_edit_browser.py), the ones that actually load the pinned bundle from the CDN — all pass against 3.2.3, and the three jsdelivr asset URLs return 200.
  • One flake worth knowing about: the first browser run right after the 3.2.3 bump failed (test_done_round_trips), then passed on the next three full-file runs. The failing run took 39s against ~6s for the clean ones — it raced a cold jsdelivr cache for the newly published 3.5MB bundle, since the reachability check at test_edit_browser.py:49 reads only 1 byte and doesn't warm it. That's a pre-existing first-run-after-bump fragility rather than anything about 3.2.3, but I'm flagging it rather than burying it.

🤖 Generated with Claude Code

sidprasad and others added 2 commits July 16, 2026 13:11
Bump the pinned spytial-core to 3.2.2 via ./update-spytial-core.sh: the
CDN pin in core_assets.py, the vendor README pin, and the IJsonDataInstance
test docstring. The re-vendored evaluator bundle is byte-identical to
3.2.1's — 3.2.2 only changed the browser bundles — so _vendor/ is untouched.

3.2.2 is sidprasad/spytial-core#501, which extends the inferredEdge `draw`
feature added in 3.2.1: a `draw` endpoint may now name a unary group
constraint (the end attaches to that single group directly, with the atom
playing no part), and an edge whose ends land on the same group is kept and
rendered as a self-loop on the hull.

That makes the inferredEdge docstrings wrong in the direction users would
act on: they stated a `draw` endpoint's group "must be keyed" and that a
unary group's edge "is dropped without drawing" — exactly the case #501
fixed. Rewrite both the decorator and the InferredEdge class doc to cover
keyed vs. unary endpoints, the same-group self-loop, and the new
render-time error when a name means both a keyed and a single group.

_validate_draw needs no change; it checks only the '<end> -> <end>' shape,
which #501 leaves alone.

Verified: 444 tests pass, plus the four opt-in real-browser e2e tests
(SPYTIAL_BROWSER_TESTS=1) that load the 3.2.2 bundle from the CDN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump the pin 3.2.2 -> 3.2.3 via ./update-spytial-core.sh. As with 3.2.2,
the re-vendored evaluator is byte-identical: 3.2.3 changes only browser
rendering.

3.2.3 is sidprasad/spytial-core#502, which makes `textStyle: { size: large }`
render perceptibly larger than the node label — the tier constant went
16px -> 20px, and edge labels no longer have the authored tier overwritten
by the zoom handler's hardcoded 12px base on every layout tick.

No doc change on this side. Our TextStyle docs (annotations.py, docs/
operations.md) only enumerate 'small' | 'normal' | 'large' and never
state pixel values or relative sizes, so nothing here describes the
behavior #502 corrected.

Verified: 444 tests pass, plus the four opt-in real-browser e2e tests
against the 3.2.3 CDN bundle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sidprasad sidprasad changed the title spytial-core 3.2.2: draw endpoints accept unary groups spytial-core 3.2.3: draw endpoints accept unary groups; textStyle large Jul 16, 2026
@sidprasad
sidprasad merged commit 8184a76 into main Jul 16, 2026
2 checks passed
sidprasad added a commit that referenced this pull request Jul 20, 2026
#130 merged with the version still reading 1.8.1, which #129 had already
published to PyPI, so the publish workflow found nothing new and skipped.
Bump so the reify work in #130 actually ships.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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