Skip to content

Releases: norah1499/solidity-flow-navigator

v0.25.1

Choose a tag to compare

@norah1499 norah1499 released this 22 Jun 15:19

Quality-of-life follow-up to v0.25.0: collapse the contract-name-collision diagnostic.

The v0.25.0 collision guard logged one line per colliding function, which on a repo that vendors the same interface twice produced a wall of near-identical warnings. solflow now emits one line per colliding contract-pair (naming both source files and the count) instead of one per shared method. Detection and keep-first resolution are unchanged.

v0.25.0

Choose a tag to compare

@norah1499 norah1499 released this 22 Jun 14:53

Correctness fix: resolve contracts by stable uid, not bare name.

Solidity does not require contract names to be globally unique within a repo. Foundry projects routinely declare two distinct contracts with the same name in different files (e.g. two Pausable contracts where only one declares a given modifier; OpenZeppelin vendored twice). solflow previously keyed contracts by bare name, so a collision silently bound the wrong contract: a KeyError during modifier/inheritance resolution at best, a silently incorrect Flow at worst.

Contract references (declaring contracts and linearization links) now resolve by a stable uid (filename_relative, name). Bare name remains the display identifier, so titles and the index are unchanged. The residual call-target/binding name-resolution paths keep the first registrant and log on a real collision rather than silently overwriting.

Verified across the test suite and several large repos: Solmate unchanged; repos that previously crashed or were at risk of silent misresolution now build complete, correct flows.

v0.24.2

Choose a tag to compare

@norah1499 norah1499 released this 20 Jun 06:38

Docs-only release. Compacted the README: folded "Why" into the intro, merged Prerequisites and the update/first-run notes into Installation, trimmed feature descriptions, and removed em dashes throughout. No code or behavior changes since v0.24.1.

v0.24.1 — docs & packaging refresh

Choose a tag to compare

@norah1499 norah1499 released this 19 Jun 14:21

Republishes on PyPI with the refreshed README (Uniswap V4 / PoolManager.swap demo) and tidies the repository for public use. No changes to SolFlow's analysis or output behavior since v0.24.0.

  • README demo refreshed on Uniswap V4 (PoolManager.swap)
  • Added CONTRIBUTING.md and a Homepage project URL
  • Internal working notes kept out of the public repository

v0.24.0 — index sidebar: accessibility, design tokens, sticky Contracts header

Choose a tag to compare

@norah1499 norah1499 released this 18 Jun 04:12

A Layer-3 refinement pass (driven by a design audit). This release also rolls up the v0.23.0 changes, which were committed but never published to PyPI.

New in v0.24.0

  • Accessibility: the faint tertiary text (contract source paths, the navigator's R/N visited · U unresolved line, scope and legend text) is darkened to clear WCAG AA contrast in both light and dark themes.
  • Design tokens: added --text-*, --space-* (4px base), and --radius-* scales next to the colour tokens; removed every blurry half-pixel font size.
  • Contracts navigator: promoted from a small eyebrow label to a sticky section header (list icon + right-aligned count) that anchors the scrolling sidebar; contract names now claim the full row width before ellipsising, with a hover tooltip for long names.
  • Markup / a11y fix: the per-contract collapse toggle is now a dedicated <button> (the chevron) sitting beside the pin link, instead of a heading that wrapped the pin (valid HTML; the pin is independently focusable).
  • Interface Bindings: the card title stays on one line in the fixed-width sidebar.

Rolled up from v0.23.0 (not previously on PyPI)

  • Index terminology refresh: No modifiers / With modifiers / Unresolved facet pills; visited (was reviewed); Interface Bindings card heading.
  • Flow-page node rings: a warm ring on the entry/root node, a dashed blue ring on the active (viewport-centre) node.
  • solFlow header wordmark.

Pure Layer 3 — no analysis, backend, or dependency changes. Update with `pipx upgrade solflow`.

v0.22.0 — Flow call-tree sidebar & Mini Map, index attack-surface redesign, type definitions

Choose a tag to compare

@norah1499 norah1499 released this 17 Jun 10:50

Highlights

This release rolls up four milestones of Flow-page and index work.

  • Flow call-tree sidebar. A collapsible left sidebar listing the currently-opened nodes as an indented outline in call order — every opened node's direct children shown beneath it, so opening one child never hides its siblings. The chevron opens or collapses a node in the graph; clicking anywhere else on a row centres that node in the canvas (a pan plus zoom-in-if-needed, the same move as the Mini Map aim). An active-path rail highlights the chain down to the node nearest the viewport centre and tracks it as you pan and zoom, and a filter box narrows the outline by function name, contract, or signature. Toggle with t, focus the filter with /.

  • Flow Mini Map. A collapsible overview navigator pinned to the lower-right of the graph. On large or fully-expanded trees it works as a navigation launcher: aim the reticle at a cluster and it dives in — recentring there and zooming to a readable level (it only ever zooms in). A faint extent outline keeps your orientation. Toggle with m.

  • Index "attack-surface map" redesign. The index is now a two-pane layout — a contracts navigator beside the entry-point list — with an overview, a control bar with scope and sorting, and recently-viewed marking, so the largest call surface is easy to find and work through.

  • Type definitions in function nodes. Struct, enum, and custom value-type parameters in a function signature can be expanded inline to show their definitions, without leaving the Flow.

As always, the index works with JavaScript disabled; the Flow graph and its navigation aids are JavaScript-rendered. Nothing leaves your machine, and SolFlow makes no network calls.

Upgrade: `pipx upgrade solflow`

v0.18.0 — Index bindings panel + Save to solflow.toml

Choose a tag to compare

@norah1499 norah1499 released this 16 Jun 07:25

Highlights

  • Index Bindings panel. Resolve interface calls to concrete contracts straight from the index, without opening a Flow first. Each bindable interface gets a dropdown; selecting a contract resolves it at every call site across every Flow. Rows are sorted by call-site count, with a Show all toggle for large protocols.
  • Save bindings to solflow.toml. A one-click Save bindings writes the current set to the [bindings] table so they persist across sessions. The write is surgical (only [bindings]; your [scope] table and comments are preserved), validated, and atomic. This is the only place SolFlow writes to your working directory — it still never touches source or contract files, and nothing leaves your machine.
  • Index ordered by call-tree weight. Contracts, and the entry points within each, are now ordered by total Flow node count (heaviest first), so the largest call surface — the most for an auditor to work through — leads.

Everything degrades gracefully with JavaScript disabled.

v0.16.1

Choose a tag to compare

@norah1499 norah1499 released this 14 Jun 17:17

UI polish pass (CSS-only): keyboard focus rings, color-scheme-aware native UI, tabular figures, balanced headings, scrollbar-gutter (no filter jump), themed text selection, and hover parity across the header controls. Back-link label capitalized to Index.

v0.16.0

Choose a tag to compare

@norah1499 norah1499 released this 14 Jun 14:40

v0.16.0

Three frontend conveniences for navigating large flows (Layer 3 only):

  • Index filter. A filter box on the index narrows entry points by signature or contract name as you type, for protocols with hundreds of entries.
  • Expand all / Collapse all. Whole-tree controls in the Flow header (with e / c keyboard shortcuts), grouped with the relocated Reset view at the right of the header.
  • Persisted expansion. Expanded call sites are remembered per Flow in localStorage, so returning to a Flow restores what you had open.

Update with pipx upgrade solflow.

v0.15.0

Choose a tag to compare

@norah1499 norah1499 released this 14 Jun 12:27

Bookmarks & recently-viewed

  • Bookmarks — bookmark the entry points and contracts you keep returning to; they collect in a Bookmarked section at the top of the index, reachable from any scroll position via a floating shortcut. Toggling happens in place, so the page keeps your scroll position, and it works with JavaScript disabled. State is a first-party localhost cookie — nothing leaves your machine.
  • Recently-viewed — entry points you've already opened are tinted on the index so you can see your progress at a glance.
  • Smoother back navigation — the in-app "← index" link restores your scroll position, like the browser's Back button.

Update: pipx upgrade solflow (or pip install -U solflow).