Releases: pondpilot/flowscope
Releases · pondpilot/flowscope
v0.3.1
v0.3.0
Highlights
- dbt/Jinja templating: Analyze dbt models with
ref(),source(),config(),var()macros - CLI serve mode: Run FlowScope as a local HTTP server with embedded web UI (
--serve) - Type inference: Detect type mismatches in SQL expressions with dialect-aware rules
- Extended lineage: COPY, ALTER TABLE RENAME, and UNLOAD statement support
Added
Core Engine (flowscope-core)
- Jinja/dbt templating support: MiniJinja-based preprocessing for dbt projects
- Built-in dbt macros:
ref(),source(),config(),var(),is_incremental() - RelationEmulator for dbt Relation object attribute access (
.schema,.identifier) thisglobal variable andexecuteflag for templates- Custom macro passthrough stubs for graceful handling
- Built-in dbt macros:
- COPY statement lineage: Track source/target tables in COPY/COPY INTO (PostgreSQL, Snowflake)
- ALTER TABLE RENAME lineage: Track table renames as dataflow edges
- UNLOAD statement lineage: Track source tables from Redshift UNLOAD statements
- Lateral column alias support: Resolve aliases in same SELECT list (BigQuery, Snowflake, DuckDB, etc.)
- Backward column inference: Infer columns for SELECT * without schema from downstream usage
- Type inference for SQL expressions with comprehensive type checking
- New
TYPE_MISMATCHwarning code for detecting incompatible type comparisons and operations - Schema-aware column type lookup - column references now resolve types from provided schema metadata
- CTE column type propagation to outer queries
- Dialect-aware type compatibility rules (e.g., Boolean/Integer comparison allowed in MySQL but not PostgreSQL)
- NULL comparison anti-pattern detection (
= NULLwarns to useIS NULLinstead)
Completion API
- Smart function completions with signature metadata (params, return types, categories)
- Context-aware scoring: boost aggregates in GROUP BY, window functions in OVER clauses
- Lateral column alias extraction with proper scope isolation
- Type-aware column scoring in comparison contexts
- Dialect-aware keyword parsing using sqlparser tokenizer
- CASE expression type inference from THEN/ELSE branches
CLI (flowscope-cli)
--template jinja|dbtflag for templated SQL preprocessing--template-var KEY=VALUEfor template variable injection--metadata-urlfor live database schema introspection (PostgreSQL, MySQL, SQLite)--metadata-schemafor schema filtering during introspection- Serve mode: Run FlowScope as a local HTTP server with embedded web UI
--serveflag to start HTTP server with embedded React app--port <PORT>to specify server port (default: 3000)--watch <DIR>for directories to watch for SQL files (repeatable)--opento auto-open browser on startup- REST API endpoints:
/api/analyze,/api/completion,/api/files,/api/export/:format - File watcher with 100ms debounce for automatic reload on changes
- Assets embedded at compile time via rust-embed for single-binary deployment
React Package (@pondpilot/flowscope-react)
- Web workers for graph/matrix/layout computations (improved UI responsiveness)
- LayoutProgressIndicator component for visual layout feedback
- Debug flags (GRAPH_DEBUG, LAYOUT_DEBUG) for performance diagnostics
Web App
- Template mode selector for dbt/Jinja SQL preprocessing in the toolbar
- Issue-to-editor navigation: click issues to jump to source location
- Issues tab filtering: filter by severity, error code, and file
- Stats popover: complexity dots trigger dropdown with table/column/join counts
- Clear analysis cache option in project menu
- Bundled "dbt Jaffle Shop" demo project showcasing ref/source/config/var
- Backend adapter pattern for REST/WASM detection (supports serve mode)
- Read-only mode for files loaded from CLI serve backend
- Schema display from database introspection in serve mode
Changed
Core Engine (flowscope-core)
- Unified type system:
CanonicalTypereplaces internalSqlTypeenum with broader coverage (Time, Binary, Json, Array) OutputColumn.data_typenow populated with inferred types for SELECT expressions- Type checking now accepts dialect parameter for dialect-specific rules
Fixed
Core Engine (flowscope-core)
- dbt model cross-statement linking with proper case normalization for Snowflake
- DDL-seeded schema preservation (schemas no longer overwritten by later queries)
- UTF-8 safety in
should_show_for_cursorwhen cursor offset is mid-character
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Highlights
- First public release of the FlowScope Rust + WASM + TypeScript stack.
- Multi-dialect SQL parsing with table/column lineage, schema validation, and editor-friendly spans.
- Export tooling for Mermaid, JSON, HTML, CSV bundles, and XLSX across Rust and WASM.
- React components + CLI for lineage visualization and data export workflows.
- CTE and derived table definitions now include spans for editor navigation.
- Export downloads in React normalize byte buffers for reliable Blob creation.
Changed
- Breaking: Changed error code from
REQUEST_PARSE_ERRORtoINVALID_REQUESTfor JSON parse/validation errors inanalyze_sql_json().
Fixed
- Fixed potential panic in
extract_qualifierwhen cursor offset lands on invalid UTF-8 boundary. - Fixed completion logic that suppressed completions when schema metadata lacked columns but query context had valid columns.
- Fixed potential integer overflow in completion item scoring by using saturating arithmetic.
- Added spans for CTE and derived table definition nodes to support editor navigation.
- Bundle reserved keyword list inside the exporter crate for publish-time builds.
- Fixed ZIP/XLSX downloads by normalizing export byte buffers for Blob creation.
Improved
- Added named constants for completion scoring values to improve code maintainability.
- Added
Debugderive toQualifierResolutionfor easier debugging. - Added comprehensive unit tests for string helper functions and qualifier resolution logic.