Releases: norah1499/solidity-flow-navigator
Release list
v0.25.1
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
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
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
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
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 unresolvedline, 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/Unresolvedfacet pills;visited(wasreviewed);Interface Bindingscard heading. - Flow-page node rings: a warm ring on the entry/root node, a dashed blue ring on the active (viewport-centre) node.
solFlowheader 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
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
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
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
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/ckeyboard 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
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).