Skip to content

Releases: DROOdotFOO/raxol

v2.3.1

29 Mar 09:43

Choose a tag to compare

Mostly a bugfix release -- the Fly.io deploy was crash-looping because the termbox2 NIF compiled on macOS was sneaking into the Linux Docker image. Fixed that, and made NIF loading graceful so the web/SSH playground doesn't need the terminal driver at all.

Also squeezed in some rendering groundwork: a TextMeasure module that handles Unicode display widths properly, a two-phase Preparer that caches text measurements so resizes only redo layout math, and a ScrollContent behaviour with lazy adapters for Viewport.

Fixes

  • NIF cross-platform build (.dockerignore + correct MIX_APP_PATH)
  • Graceful NIF fallback -- web deploys no longer crash if the NIF isn't present
  • Duplicate PubSub supervisor in playground app
  • ScreenBuffer display width calculations now use proper Unicode widths
  • Landing page test count updated

New

  • Raxol.UI.TextMeasure -- single source of truth for display width
  • Raxol.UI.Layout.Preparer -- two-phase prepare/layout (Pretext-inspired)
  • Raxol.UI.Layout.ScrollContent behaviour + ListScrollContent / StreamScrollContent adapters
  • Viewport accepts optional :content_source for lazy scrolling

6,520 tests across 5 packages, 0 failures.

v2.3.0

27 Mar 19:44

Choose a tag to compare

This one's a big deal. 182 commits across one month -- the kind of release where the framework stops being a collection of parts and starts feeling like a real thing.

What happened

We went from a terminal UI library to an AGI-ready terminal framework. That sounds like marketing but here's what it actually means: you can now build AI agents as TEA apps, supervise them with OTP, connect nodes with CRDTs, and debug the whole thing with time-travel. On a terminal. Over SSH if you want.

The highlights

Distributed swarm subsystem

Raxol nodes can now discover each other and share state. libcluster integration with strategy presets for gossip, EPMD, DNS, and a custom Tailscale strategy that reads tailscale status --json for mesh networking. CRDTs (LWW-Register, OR-Set) keep shared state eventually consistent. Node health monitoring, seniority-based leader election, bandwidth-aware message routing. 2,100+ new lines across 11 modules.

AI agent framework

use Raxol.Agent gives you TEA-based AI agents with OTP supervision. Agents discover each other via Registry, communicate through typed messages, and can run headless or with a view. Three command types: async (streaming), shell (Port-based), and inter-agent messaging. Team supervision via Agent.Team. Backend.HTTP provides real SSE streaming across Anthropic, OpenAI, Ollama, Kimi, and Lumo (with full U2L encryption). Tiered backend detection falls through gracefully.

Interactive playground

28 demos across 8 categories (input, display, feedback, navigation, overlay, layout, visualization, effects). Search, filter by category and complexity, help overlay. Charts render as View DSL widgets. Serve the whole thing over SSH with mix raxol.playground --ssh. The playground is the docs now.

Time-travel debugging

Enable with Raxol.start_link(MyApp, time_travel: true). Every update/2 cycle gets snapshotted into a circular buffer -- message, model before, model after. Step back, step forward, jump to any point, restore historical state. Recursive map diffing shows exactly what changed. Zero cost when disabled.

Session recording and replay

Asciinema v2 format. Record terminal sessions with timestamps, play them back with pause/seek/speed controls. Stream replay, not just dump-and-render.

Sandboxed REPL

Code.eval_string wrapped with spawn_monitor timeout, IO capture via group_leader swap, persistent bindings. Three sandbox levels: unrestricted, standard (blocks dangerous ops), strict (whitelist-only, safe for SSH exposure). Available in the playground and as mix raxol.repl.

Nx/Axon adaptive ML

Optional Nx and Axon integration for the adaptive layout system. Vectorized sensor fusion via NxBackend, Axon MLP recommender for layout recommendations, FeedbackLoop training. All gated behind Code.ensure_loaded? -- zero impact if you don't have Nx.

Developer tooling

  • mix raxol.new -- project generator with 4 templates and flags
  • mix raxol.demo -- 4 built-in runnable demos
  • mix raxol.check -- unified quality gate (format, compile, credo, dialyzer, security, test)
  • Benchmark suite comparing against Ratatui, BubbleTea, and Textual

The boring-but-important stuff

  • Deleted ~35K lines of dead code (CQRS, EventSourcing, Pipeline leftovers from early experiments)
  • 746+ new tests across 21 modules (357 for core, 233 for runtime, 156 for plugins)
  • Fixed 6 flaky CI tests (race conditions, ETS cleanup, JIT warmup timing)
  • Found and fixed 3 real bugs through test coverage: converter pipe BadMapError, keyboard CaseClauseError, unreachable ctrl_c/ctrl_q clauses
  • Zero credo warnings, zero dialyzer regressions
  • Phoenix is now an optional dependency
  • All examples modernized to TEA pattern
  • Windows CI support (GPG path separators, IOTerminal backend)

Numbers

182 commits | 1,030 files changed
89,793 insertions | 129,283 deletions (net -39K LOC -- less code, more capability)
27,471 new test lines across 292 test files

Install / upgrade

# mix.exs
{:raxol, "~> 2.3"}
mix deps.get

Full docs: https://hexdocs.pm/raxol/2.3.0

Final Minor Release 0.9.0

09 Aug 17:48

Choose a tag to compare

Pre-release

What's New in v0.9.0

Complete Terminal Feature Suite
🖱️ Mouse Handling: Full mouse event system with click, drag, selection, and multiple reporting modes (X10, cell motion, SGR)
⌨️ Tab Completion: Advanced completion system with cycling, callbacks, and built-in Elixir keyword support
📋 Bracketed Paste: Secure paste mode that distinguishes typed vs pasted text (ESC[200~/ESC[201~)
📐 Column Width: Dynamic 80/132 column switching with proper VT100 behavior (ESC[?3h/ESC[?3l)
🖼️ Sixel Graphics: Complete implementation with parser, renderer, and graphics management
📚 Command History: Multi-layer history system with persistence, navigation, and search
Quality Assurance
✅ 100% Test Pass Rate: 1751/1751 tests passing
🏭 Production Ready: Feature-complete terminal framework
📋 VT100/ANSI Compliant: Comprehensive escape sequence support
🔧 Zero Technical Debt: All compilation warnings documented, all features implemented

Warning clean

09 Jun 03:55

Choose a tag to compare

Warning clean Pre-release
Pre-release

Checkpoint for Loading termbox2 NIFs, usinf termbox2_nif