Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-04-20
Fixed
mix viewno longer crashes withArgumentError: not an atomwhen analyzing projects that use__MODULE__.Child.func()style qualified calls. The PubSub wrapper collector and flow extractor now treat such references as unresolvable rather than attempting to stringify the AST tuple.
0.1.0 - 2026-04-20
Initial public release.
Added
mix viewMix task that analyzes an Elixir project and generates a self-contained interactive HTML visualization.- City view — 3D software city built with Three.js. Modules are buildings (height = lines of code), namespaces are districts, dependencies are arcs between buildings. Isometric camera with pan, zoom, and click-to-focus district detail view.
- ERD view — Entity-Relationship Diagram for Ecto schemas, grouped by Phoenix context. Cross-boundary associations highlighted. Schemas start expanded; click to collapse.
- AST-based analysis — modules and ERD schemas extracted via
Code.string_to_quoted/2. No compilation of the target project required; Ecto does not need to be a dependency of ExCodeView. - Coupling analysis — cross-module dependencies read from the Mix compiler manifest.
- Pluggable views via the
ExCodeView.Viewbehaviour. Third-party packages can register views withconfig :ex_code_view, views: [MyView]. - Pluggable schema extractors via the
ExCodeView.SchemaExtractorbehaviour (bundled: Ecto). - Unified shell — single HTML template with tab navigation between views, browser-history-aware back/forward, and persisted per-view settings.
- CLI parameterization —
--source-dir,--extensions,--exclude,--output,--output-dir,--output-template,--open,--json,--list,--view. - Application config under the
:ex_code_viewkey for setting defaults. usage_rulesintegration — ships main rules plus sub-rules (views,schema-extractors,viewer-js) and pre-built skills (add-visualization,configure-ex-code-view) for LLM-assisted use and extension.- Programmatic API —
ExCodeView.analyze/2returns a%ExCodeView.Schema.Analysis{}struct for custom viewers or tooling.