v3.1.0 - #32
Merged
Merged
Conversation
Edge thickness
… limit for multi-channel edges
Fix curved edges
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…add example file Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Feat accept minimal edgelist
fbaltoumas
approved these changes
Aug 10, 2026
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.
Added
Network upload accepts a minimal 2-column edgelist (
SourceNode,TargetNodeonly) — all nodes are spread out in a single default layer namedLayer1. The optionalWeightandChannelcolumns still apply. A downloadable example lives in the Help → Examples tab.Edge weight can now be shown as edge thickness, not only opacity. The Edge Actions panel replaces the "Edge Opacity By Weight" checkbox with a "Show Edge Weight As" radio — Nothing / Opacity / Width / Both — plus intra- and inter-layer width sliders for whichever property weight isn't driving. Sessions carry the choice as the independent
edgeOpacityByWeightandedgeWidthByWeightbooleans; files written before this default to opacity, so they render unchanged. Thickness neededLine2(instanced quads) because WebGL renders every line primitive at exactly 1px regardless oflinewidth.Changed
Fixed
LineMaterial'sworldUnitsmode assumes a perspective camera — its fragment shader traces a view ray from the camera origin and discards anything farther than half a width from the segment, which under this app's orthographic camera discards along the whole segment. Widths are now screen-space, sized against a shared resolution uniform kept on the frustum size (so the numbers still mean world units), retargeted on resize and for the PNG export.OutputPass), and the ambient light was left at the pre-r155 intensity that physical lighting divides by PI.DependenciesBackend dependencies updated to latest via
uv lock --upgrade; transitives moved with them (notably starlette 1.3.1 → 1.6.0 and websockets 16.0 → 17.0.1). No known vulnerabilities on either side.pydantic-corestays at 2.46.4 — pydantic pins it exactly. TypeScript stays on 6.0.3: 7.0.2 typechecks fine but typescript-eslint 8.x refuses to load against the TS 7 API, so linting breaks; revisit once typescript-eslint ships TS >=7.1 support. CI now runsuv sync --frozenso it installs exactly the locked set the Docker image ships.