Skip to content

Releases: Delta4AI/GraphLensLite

v1.16.1

Choose a tag to compare

@github-actions github-actions released this 22 Jul 14:00
8dbf43f

Fixes

  • Disconnected nodes stay hidden across filter changes. With "hide disconnected nodes" on, changing a filter could resurface a node that should have stayed hidden, and nodes that became disconnected by the change were never re-hidden. The dangling set is now recomputed against the current filtered view on every change.

Features

  • Checkmark badge for single-value numeric filters. Numeric properties with only one value (min === max) have no range to narrow, so they now show a read-only checkmark + value badge instead of an inert slider. The row's include/exclude checkbox still works.

Also includes manuscript revisions (docs only, no app changes).

v1.16.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 12:06
c2b9bbe

Saved graph files load unchanged. Stored bubble-set knob values keep applying, with two semantic shifts: padding and corridor width now scale with your configured node size (a value of 1 ≈ one node radius of margin) instead of absolute pixels, and any saved avoidance value above 0 now simply means "on".

Features

  • Merge-import Excel files into the loaded graph. A new ⤒ Import button in the data editor header loads a workbook into the current graph instead of replacing it. A preview modal shows what the merge will do before anything is applied — new/updated node and edge counts, new property columns, unchanged and skipped rows. Existing workspaces, positions, filters and styles are preserved; a single nodes or edges sheet suffices, and new edges can attach to nodes already in the graph. X/Y coordinates in the file seed positions for new nodes only.
  • Choose how an import joins the graph. The import preview offers two modes: Extend & add (default) updates matching nodes/edges and adds new ones from the file, while Extend existing only updates matches and ignores file rows without a match — including edges onto skipped new nodes, so no dangling edges. The preview counts update live as you switch.
  • Bubble-set geometry controls. The Bubble Sets styling card gains Padding (how far the body extends past its members) and Corridor Width (thickness of the arms reaching outlying members) sliders, range 0.01–3, plus an Avoid Other Nodes switch that steers the hull around non-members and carves holes for fully enclosed ones. Defaults: padding 0.1, corridor 0.25, avoidance on.
  • Smooth, organic bubble outlines at every zoom. Hulls render as continuous curves instead of polylines — no more faceted or jagged outlines when zooming in — and the PNG and SVG exports paint the exact same curves as the live canvas.
  • Node-size-aware hulls. The influence field scales with the group's mean member radius, so bubbles look proportional whatever node size you configure. At minimum padding the hull hugs each node at a fixed fraction of its own radius, and minimum-width corridors render as thin, gently arced tubes.
  • A member is never lost. Every member circle is guaranteed inside its group's outline (measured against the curve actually painted); groups whose members drift beyond the field's reach stay connected as one shape via corridor links.

Fixes

  • Bubble hulls no longer clip their own members. Avoid-node pressure could squeeze the outline through a member's body while its center stayed inside; grazed members now get repaired with proper clearance.
  • Enclosed non-members are no longer silently swallowed. With avoidance on, a non-member inside the hull gets a visible carve whenever one is geometrically possible — and one impossible hole no longer discards all the others.
  • Bubble outlines no longer wobble around dense non-member fields, and corridors no longer reroute into phantom lobes when widening them.
  • Re-saved Excel workbooks import cleanly. Rich cell values (formatted text, hyperlinks, formulas) are normalized to plain values on import, so matched rows no longer all report as "updated" and the filter panel no longer crashes after such an import.

v1.15.5

Choose a tag to compare

@github-actions github-actions released this 10 Jul 08:13
0df6972

Saved graph files load unchanged; older files (and files saved by earlier versions) default the new opacity to fully opaque, so their appearance is identical.

Features

  • Node and edge opacity. The styling panel (under 🎨) now has an Opacity slider for both nodes and edges (1 = opaque, 0 = invisible). It folds into the element's color alpha, so it composes with a color that already carries transparency, and — like the other numeric style knobs — it can be mapped by data via the ∿ button to scale opacity from a numeric property. Opacity round-trips through both JSON and the Excel Opacity column (documented in the template's readme tab). Being an alpha effect, low opacity composites toward the background: light colors (e.g. the default slate edges) approach white sooner than saturated ones.

Fixes

  • Exported images now match the on-screen bubble-group z-order. PNG and SVG exports painted bubble-set hulls underneath the nodes and edges, but the live view draws them on top (since 1.15.1). On dense graphs the edge mesh buried the hulls, which also made edges read as more opaque than on screen. Both exporters now composite hulls above nodes/edges and below labels, matching the live layer. Sparse graphs were unaffected, so this was only visible on large graphs.

v1.15.4

Choose a tag to compare

@github-actions github-actions released this 01 Jul 12:42
2180cc7

Saved graph files load unchanged; older files default the two new per-view settings to the previous behavior (OR, non-strict).

Features

  • OR / AND filter combination. The filter panel (under ⚙ Details) can now combine active filters with AND as well as the default OR. AND counts only the filters you have actually narrowed, so switching modes while everything is at its default leaves the graph unchanged instead of emptying it. A Complete cases only option additionally hides elements that are missing any of those filters (evaluated per element type). The join mode and complete-cases flag are saved per workspace view in exported JSON.
  • Added an IS MISSING query-DSL operator — true when a property is absent/empty or belongs to the other element type — used to express the non-strict AND join. The query-editor help, guided tour, and API grammar reference now document it.

v1.15.3

Choose a tag to compare

@github-actions github-actions released this 19 Jun 14:16
c4f75a9
v1.15.3

v1.15.2

Choose a tag to compare

@github-actions github-actions released this 18 Jun 11:04
066164a
v1.15.2

v1.15.1

Choose a tag to compare

@github-actions github-actions released this 17 Jun 14:59
28ee065

Saved graph files load unchanged — this release is bug fixes only.

Fixes

  • Arrange Selection tools now work. All six tools (shrink/expand/circle/force/grid/random) were silent no-ops: positions were persisted before being pushed to the graph, and the persist path re-synced node state from graphology — clobbering the freshly computed coordinates before they reached the renderer. Positions are now pushed to the graph first, then persisted. The circle/force/random geometry is also rebuilt on graphology layouts (circular/forceAtlas2/random) run over a subgraph of the selection and recentered on the selection centroid, replacing the hand-rolled force sim that drifted toward world-origin.
  • Bubble and heatmap overlays stay aligned across DPR changes. Moving the window to a monitor with a different device-pixel-ratio left bubble groups and the heatmap field misaligned until a sidebar toggle forced a resize. A DPR watcher now forces a full sigma resize and re-render on every ratio change, and the overlay canvases own their CSS display size so they stay 1:1 with the WebGL layers regardless of resize timing.

v1.15.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 13:11
dab8dcb

Existing graph files (including version-less JSON saved by 1.14.x) load unchanged — this release adds and replaces functionality without breaking the saved-file format.

Features

Renderer migration: AntV G6 → Sigma.js (WebGL)

The entire rendering stack moved from AntV G6 5.x (canvas) to Sigma.js v3 (WebGL nodes/edges, canvas labels) on a graphology data model. Measured on the 6000-node / 9000-edge benchmark (see MIGRATION.md for the full record):

Metric G6 (1.14.x) Sigma (1.15.0)
Load (data → rendered) 1.6 s 0.79 s
Wheel-zoom FPS ~4 ~60
First-interaction stall ~11 s 64 ms
500-node select 140 ms 46 ms
  • All six node shapes ported (circle and square as native WebGL programs; hexagon, diamond, triangle, star as crisp SVG textures)
  • Selection, hover-highlight and dim states reimplemented as sigma reducers; lasso select is a custom canvas overlay; click/shift-select, node drag with position persistence, and tooltips preserved
  • Bubble groups drawn natively on a canvas layer under the nodes via bubblesets-js; member sync, styling UI and filter/manual membership unchanged
  • Minimap and PNG export (with the bubble-set layer composited) reimplemented on sigma
  • Distribution is ≈0.9 MB smaller (the 1.1 MB vendored g6.min.js is gone; sigma + graphology + headless layouts add ≈0.2 MB)
  • Documented degradations: dashed edges render solid and polyline edges render curved (no off-the-shelf WebGL programs for either)

Layouts

  • Live-animating ForceAtlas2 driven by a web-worker supervisor, so force layouts settle visibly without blocking the UI.
  • Dagre layered layout, circlepack, and random added to the layout options.
  • Full-workspace re-layout control to re-run a layout across the entire workspace, with animated transitions between layouts.
  • Optional noverlap overlap-removal post-pass.
  • Headless layouts: circular/grid (geometric), radial/concentric/mds (@antv/layout v2).

Communities & metrics

  • Louvain community detection (weighted, with a tunable resolution) that populates manual bubble groups directly.
  • Network centralities now come from graphology-metrics instead of the hand-rolled implementations.

Edges & flow

  • Animated directional edge flow on both straight and curved edges, with dash, pulse, comet and chevron styles plus speed, colour, opacity and density controls.
  • Edge arrow markers and halos, with arrow fill, border-colour and border-size controls.

Nodes & styling

  • Pie-chart nodes that render proportional slices from data.
  • GLSL circle borders via @sigma/node-border.
  • Node badges with a size control and a scale-with-node option.
  • Dark-mode toggle.

Heatmap

  • Density heatmap overlay — an atmospheric node-density layer beneath the graph, off by default and toggled from the workspace toolbar, with opacity, intensity, gamma/contrast, threshold, bandwidth/radius and colour-ramp controls (default / viridis / magma / accent / grayscale) plus an optional dim-graph mode. Replaces the former selection glow.
  • Bubble-group label placement, close-to-path and auto-rotate knobs are now honoured by the renderer (previously no-ops).

UI

  • Reworked selection grouping and selection-driven styling cards.
  • Compact, density-aware filter panel redesign; redesigned selection, styling and toolbar surfaces for clarity.
  • Selection HUD now defaults to the top-right corner and snaps to a grid; tooltips are suppressed during shift+click multi-select.
  • Subtle top-centre loading indicator card; compact header.

Export & IO

  • SVG vector export alongside JSON and PNG; high-resolution PNG export.
  • JSON saves now carry a top-level version stamp; loading a file saved by a newer app surfaces a soft notice (older and version-less files load as before).
  • The density-heatmap overlay (enabled state + appearance settings) is saved into the JSON export and restored on load.

Performance

  • Network metrics are computed lazily, only while the metrics panel is open.
  • Removed the automatic disabling of hover effects on large graphs (no longer needed on the WebGL renderer).

Fixes

  • Fixed slow deselection when clicking empty canvas on large graphs (antvis/G6#7195) — removed from Known Issues.
  • PNG export: corrected dark-mode background, hi-res scaling and label z-order; dropped the unreliable 8× scale and added a GPU framebuffer ceiling margin so high-res exports no longer come out blurry or blank.
  • Anchored popovers are clamped to the viewport so the right edge never truncates.
  • Float filter sliders use a continuous step so a column's maximum value stays selectable.
  • Heavy layouts keep the UI blocked on large graphs until the layout completes.
  • The reset-style button no longer claims to reset node positions.
  • Graceful guard when WebGL2 is unavailable, plus a redraw after container resize.

v1.14.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 08:52

Features

HTTP Ingest Service (new)

Standalone HTTP service (npm run serve:api) that lets other applications push graphs and watch them render live in a browser. Independent of the Electron desktop app — the desktop build never starts a server.

  • POST /api/graph ingest endpoint protected by a bearer token; replaces the current graph and pushes it to connected viewers
  • Live viewer over Server-Sent Events (GET /api/events) — pushes render immediately and replace the current graph without a reload
  • GET /api/graph (latest graph, 204 until first ingest) and GET /health (liveness with version) endpoints
  • Environment-based configuration: GLL_API_TOKEN, GLL_API_PORT, GLL_API_HOST, GLL_MAX_BODY_BYTES, GLL_STATIC_DIR (see SERVICE.md and .env.example)
  • Payload reference for external apps and agents documented in API.md

Security

  • Cross-origin browser POSTs rejected (403 on any Origin header) as a CSRF defence
  • Incoming JSON sanitized against prototype pollution — __proto__, constructor, and prototype keys stripped at every level

Fixes

  • Fixed pushed graphs not rendering reliably in the live viewer

v1.13.1

Choose a tag to compare

@github-actions github-actions released this 28 May 13:25
1.13.1