spytial-core 3.2.3: draw endpoints accept unary groups; textStyle large#129
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps the pinned spytial-core from 3.2.1 to 3.2.3 and corrects the
inferredEdgedocs 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.shhandled the mechanical part of each bump: the CDN pin incore_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.jsis 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 drawfeature we shipped in 3.2.1:drawendpoint 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.Our docstring stated the opposite as a rule — that a
drawendpoint'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 theinferredEdgedecorator doc and theInferredEdgeclass doc are rewritten to cover keyed vs. unary endpoints, the self-loop, and the new ambiguity error._validate_drawneeds no change — it checks only the'<end> -> <end>'shape, which #501 leaves alone. The existing shape tests intest_decorator_docs.pystill 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
TextStyledocs inannotations.pyanddocs/operations.mdonly enumerate'small' | 'normal' | 'large', never pixel values or relative sizes, so nothing here described the behavior #502 corrected.Reviewer notes
drawdoc rewrite — worth a read against #501's description.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.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 attest_edit_browser.py:49reads 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