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.
Unreleased
0.3.1 - 2026-04-30
Changed
- Visual refresh on top of
ex_ratatui ~> 0.8's rich-text primitives. The header, footer, tab block title, navigation block title, and help overlay now build%ExRatatui.Text.Line{}/%Span{}trees instead of plain strings, so every label can carry its own foreground/background/modifier. Concrete changes:- Header is now a branded line โ
๐ฅ Ashin Ash orange +TUIin gold +Explorerin white, with the breadcrumb in cornflower-bold separated by a dimโ. Replaces the previous single-color title. - Footer renders key pills (cyan-bg / black-fg for navigation keys, red-bg for
q) followed by dim descriptions, matching the style used byphoenix_ex_ratatui_exampleandnerves_ex_ratatui_exampleso the family looks consistent. Also fixes a long-standing inconsistency:/(search) andEsc(back) work in any focus, so both are now always visible โ previously the footer hid one or the other depending onstate.focus, even though the keys still worked. - Detail block title splits the resource module: the domain prefix (e.g.
AshDemo.Accounts.) renders dim, the bare resource name (User) bold gold. You read "what" before "where it lives." - Navigation block title now ends with a live
Nd ยท Mrcount (domains / resources) in bold gold over a dim separator, so an empty or filtered state is visible at a glance. - Help overlay rebuilt as a
%Line{}list with cornflower-bold section headers (โโ Navigation โโ,โโ Tabs โโ, โฆ) and the same key-pill vocabulary as the footer, on top of the dark overlay background.
- Header is now a branded line โ
- New rich-text helpers in
AshTui.Theme:brand_title/1,resource_title/1,key_pill/2,dim_span/1,footer_line/1โ all with doctests. Existing color and style accessors are unchanged.
0.3.0 - 2026-04-13
Added
- SSH transport โ serve the explorer over SSH via
mix ash.tui --sshorAshTui.explore(:app, transport: :ssh). Multiple clients can connect simultaneously, each with an isolated session. Defaults to port 2222 with password auth (ash/tui). Custom port, credentials, and all:ssh.daemon/2options are supported - Erlang distribution transport โ start a listener via
mix ash.tui --distributedorAshTui.explore(:app, transport: :distributed). Remote BEAM nodes attach withExRatatui.Distributed.attach(node, AshTui.App)โ useful for headless servers and Nerves devices --ssh,--distributed, and--portflags onmix ash.tui- Transport banner messages printed to the console when starting SSH or distributed mode
examples/ash_demonow includes anAshDemo.Applicationmodule demonstrating how to embed the SSH daemon or distribution listener in a supervision tree (setTRANSPORT=sshorTRANSPORT=distributed)credodependency andmix credo --strictCI step for code linting- CI enforces 95% test coverage threshold
- Missing doctests and field documentation for introspection structs,
State,Theme, and all view modules - Added coverage requirement note to CONTRIBUTING.md
- CONTRIBUTING.md now documents branching/commit conventions, credo in PR checklist, and documentation expectations
Changed
- Bump
ex_ratatuidependency from~> 0.5.0to~> 0.7 - Extended Elixir support to 1.17 and added CI matrix entry
Fixed
AshTui.explore/2opts now default to[]โ previously the second argument was required
Docs
- README now documents SSH and Erlang distribution transports with usage examples
- README installation section updated to cover non-dev usage for production transports
- Added cross-references to ExRatatui's SSH and distribution transport guides
- Expanded moduledoc prose for
AshTui,AshTui.App, introspection structs,State,Theme, and view modules
Tests
- Bumped test coverage to 100% โ added introspection, state, view, and app tests
0.2.0 - 2026-03-22
Changed
- Bump
ex_ratatuidependency from~> 0.4.2to~> 0.5.0 - Replace hand-rolled Paragraph tab bar with the proper
Tabswidget - Boolean fields in attribute detail overlay (Primary Key, Generated, Allow Nil) now render with checkbox-style indicators (
[โ]/[ ]) instead of key-value text
Added
- Search/filter for the navigation panel โ press
/to activate, type to filter resources,Enterto confirm,Escto clear Scrollbaron the navigation list and all three detail tables when content overflows the viewport
0.1.1 - 2026-03-09
Fixed
- Removed some unnecessary emojis
- Update links on docs
0.1.0 - 2026-03-06
Added
- Two-panel terminal explorer for Ash Framework domains and resources
AshTui.Introspectionmodule for loading domain/resource metadata via Ash's compile-time introspection APIAshTui.Statemodule with pure navigation logic, tab switching, and nav stack- Navigation panel with domain/resource list and focus-aware borders
- Attributes tab showing name, type, and required status
- Actions tab showing name, type, primary?, and arguments
- Relationships tab with navigable links to destination resources
- Relationship navigation with breadcrumb trail and Esc to go back
- Vim keybindings (
j/k/h/l/Enter/Esc) and arrow key support - Tab switching with
Tabor1/2/3keys - Help overlay (
?to toggle) mix ash.tuitask with--otp-appoption- Example Ash app (
examples/ash_demo) with Accounts and Blog domains - Test suite for introspection, state transitions, and navigation
- Attribute detail overlay โ press
Enteron any attribute to see full details (type, constraints, primary key, generated, etc.) in a centered modal AshTui.Views.AttributeDetailview module for rendering the overlay- Footer keybinding hints now show
j/k/h/lalongside arrow keys - Removed Constraints column from the attributes table to avoid truncation โ constraints are now shown in the attribute detail overlay instead