You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
init_terminal NIF now cleans up raw mode and alternate screen on partial initialization failure
All I/O-bound NIFs (init_terminal, restore_terminal, draw_frame, terminal_size) now run on the DirtyIo scheduler to avoid blocking normal BEAM schedulers
App.render/2 callback typespec narrowed from term() to ExRatatui.widget() for proper Dialyzer coverage
Constraint::Ratio with denominator zero now returns an error instead of panicking
Gauge ratio now validates the value is finite, preventing a panic on NaN input
App.mount/1 callback typespec now includes {:error, reason} return
ExRatatui.run/1after block no longer masks the original exception if terminal restore also fails
Server render errors now log the full stacktrace for easier debugging
Added missing @impl true on fallback terminate/2 clause in the server
ExRatatui.Frame struct defaults to width: 0, height: 0 instead of nil (typespec now matches actual usage)
Deduplicated encode_constraint/1 — ExRatatui.Layout is now the single source of truth
Fixed flaky poll_event tests that failed when terminal events arrived during the test run
Event.Mouse typespec fields are now non-nullable to match actual NIF output
Fixed system_monitor.exs to cache hostname between refreshes with Map.get_lazy/3
Removed unnecessary Elixir. prefix from List calls in task_manager.exs example
Added server tests for {:stop, state} from handle_info/2 and terminate/2 callback
Docs
HexDocs "View Source" links now point to the correct version tag
Expanded ExRatatui moduledoc with quick start, core API overview, and cross-references
README demo GIF now uses an absolute URL so it renders on Hex.pm
README modifiers list now shows all six supported modifiers
Documented :test_mode option in ExRatatui.App for headless testing
Clarified system_monitor.exs is Linux/Nerves only in README