Packages

Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.

Current section

Files

Jump to
raxol CHANGELOG.md
Raw

CHANGELOG.md

## [Unreleased]
## [2.6.0] - 2026-07-11
### Added
- **LiveView accessibility: ARIA roles + announcement live region (#431)**. The LiveView terminal surface now emits ARIA roles and an `aria-live` region so screen readers announce state changes.
- **Accessibility projection + MCP a11y fields (#428)**. The model exposes an accessibility projection; MCP screenshots carry a11y fields describing focus, roles, and announcements.
- **OpenRouter backend harness with app attribution (#414)**. `Backend.Selector`'s `:openrouter` harness targets OpenRouter (OpenAI-compatible) and attaches app-attribution headers (HTTP-Referer, X-OpenRouter-Title, X-OpenRouter-Categories) so Raxol appears on openrouter.ai/rankings.
- **`raxol_payments`: `recipient_address` on the Xochi `QuoteRequest` (#416)**, and stealth fields surfaced in the ACP Xochi deliverable so buyers can settle to a stealth meta-address.
- **Property tests for the money-adjacent paths (#392/#393)**: `router_property_test` (trust-score totality / monotonicity / clamp / tier_override bounds), `ledger_release_property_test` (`Ledger.release/4` refund netting), `jsonrpc_nonce_test` (concurrent-send nonce distinctness), `job_session/telemetry_test` (pins the `[:raxol, :acp, :job_session, :transition]` cross-package contract with `raxol_symphony`), and an exhaustive `JobSession.Status.validate/2` matrix.
### Changed
- **Toolchain: Elixir 1.20 / OTP 29, zero warnings (#398)**.
- **`raxol_payments`: MPP amounts pinned to atomic integer units (#413)**; Xochi Tron deposit-route quotes verified.
- **Web surface hardening (#427/#418/#426)**: web deploy gained a CI gate, health check, SSH, and warnings-as-errors; the raxol.io agent surface was tightened; the landing demo is interactive (forwards keydown).
### Fixed
- **`raxol_acp`: EOA nonce race in `ProviderAdapter.JSONRPC` (#392)**. `send_calls/3` fetched the pending nonce inline, so two concurrent sends for one EOA signed the same nonce and the RPC silently dropped one (fund loss on retry). Nonce assignment now routes through the mailbox-serialized `Raxol.ACP.Wallet.NonceServer`; a failed send resyncs to re-fetch and re-fill the gap. The SCA/UserOp path is unaffected.
- **`raxol_payments`: negative trust score crashed the router (#393)**. `Raxol.Payments.Router` clamped only the upper trust-score bound, so a negative `:trust_score` hit `PrivacyTier.from_trust_score/2` (no negative clause) and raised `FunctionClauseError` on the settlement path. Now clamped to `[0,100]` at the boundary.
- **`raxol_payments`: x402 auto-pay budget leak and value binding (#403)**; refunded status now handled and the session budget reconciled on refund (#402); `Ledger` reservation tags are bounded with a TTL sweep (#407).
- **`raxol_acp`: write-confirmation correctness**. EOA transactions confirm the receipt before reporting write success (#412); a reverted UserOp is rejected as a failed SCA write (#409); `accept_request` (#408) and seller delivery (#406) are idempotent.
- **Web release stability**: fixed a raxol.io release boot crash (#424), restored web PubSub + SSH for minimal-mode Raxol (#425), set ssh/public_key to `:permanent` (#420), and excluded nested build artifacts from the Docker context (#422).
- **CI: de-flaked two timing-sensitive property tests (#432)** (parser performance budget, process-isolation link race) that failed seed-dependently on the nightly and macOS matrices.
### Security
- **`raxol_payments`: wallet private key guarded from crash-report leak (#404)**. Keys are wrapped so they cannot surface in `Inspect` output or crash reports.
- **Dependencies: pruned orphaned lockfile deps, dropping the Tesla CVEs (#415)**; dropped the earmark dependency (#396).
### Removed
- **`raxol_acp`: v1 memo model retired (seller-stack migration Phases 1-4, #385/#390/#388/#389/#391)**. Deleted `Raxol.ACP.Job.{Server, Supervisor, Registry, Workflow, StateMachine, MemoType, FeeType, Store}`, `Raxol.ACP.ContractClient` (+ `Onchain` + `InMemory`), the memo `Raxol.ACP.Directive`s + their executor, `Raxol.ACP.Onchain.LogDecoder`, and the `acp_version` / `ACP_VERSION` switch. The v2 hook/event model (`Raxol.ACP.JobSession` + `Raxol.ACP.HookClient` -> `AgenticCommerceV3` via `Raxol.ACP.ProviderAdapter`) is now the only runtime. `raxol_acp` graduated `0.2.0-pre.0 -> 0.2.0`. Supersedes ADR-0016/0017. See `packages/raxol_acp/MIGRATION_V2.md`.
## [2.5.0] - 2026-07-07
### Fixed
- **Layout engine: dynamic-children dropped from `column(opts, do: var)`**: when callers wrote the inline keyword-list form `column(style: ..., do: items)` Elixir matched it against `def column/1` instead of `defmacro column/2`, and the `:do` key rode through into the layout function unread. `Flex.column/1` then saw `children: []` and rendered an empty container. Fix: `Raxol.Core.Renderer.View.promote_do_to_children/1` pops `:do` and re-keys it as `:children` (via `List.wrap` so single-child blocks work too); `View.column/1`, `View.row/1`, `View.box/1` all forward through it. Restored rendering for CheckboxDemo, TextAreaDemo, RadioGroupDemo.
- **Layout engine: chart widget types dropped at layout step**: `Components.chart/1` returns a `:box` element whose `:type` is overridden to one of `:line_chart`, `:bar_chart`, `:scatter_chart`, `:heatmap` so MCP's `ToolProvider` can discover them. The layout engine had no clauses for those types; they hit the catch-all warning and the element disappeared. Fix: added one `process_element/3` clause that rewrites the chart types to `:box` and forwards. Restored LineChart, ScatterChart, BarChart, CursorTrail, Heatmap demos.
- **Layout engine: `style: %{position: {x, y}}` offset ignored on `:text` elements**: chart cells emitted by `Raxol.UI.Charts.ViewBridge` carry their own relative position so each row lands at the right column. The `:text` layout clause used `space.x`, `space.y` unconditionally and stacked all cells at the same coordinate. Fix: extract `{dx, dy}` from `style.position` and add to the space origin.
- **Layout engine: `:text_input` constructor shape mismatch**: `Components.text_input/1` builds the element with top-level `:value` / `:placeholder` keys, but the layout clause required them inside `:attrs`. Element fell to the catch-all and dropped. Fix: added a clause that rewrites the new-DSL shape into the `:attrs`-shaped form and forwards.
### Added
- **`test/property/layout_completeness_property_test.exs`**: 3 properties locking down the layout-element-drop bug shape. Generates view trees (text / flex / box / chart) and asserts every `:text` content string in the input appears in the positioned-elements output. Sabotage-verified: comment out the chart-type clause and both relevant properties fail.
- **`test/property/promote_do_to_children_property_test.exs`**: 8 invariants for the helper above. Includes one property documenting that `[do: nil]` is intentionally indistinguishable from `[]` (because `Keyword.pop/2` can't disambiguate).
- **`test/property/demo_update_totality_property_test.exs`**: one property per Catalog demo (30 total). For each demo, folds random sequences of up to 30 mixed key events (chars, special keys, `:tick`, modifier combos) through `update/2` and asserts no exception plus correct `{model, commands_list}` shape. Catches state-machine edge cases that example tests don't reach (negative cursors, list overflows, unhandled tick states).
- **`test/raxol/playground/demo_render_test.exs`**: end-to-end render regression test that mounts every Catalog demo through `Raxol.Headless`, asserts both text-screenshot content lines and buffer cell paint coverage, and drives demos through documented key sequences (`@key_drives`) to reach state where the canonical widget content is visible. Caught the four framework bugs above on its first run.
- **`raxol_symphony` Phases 0-14**: Elixir/OTP port of OpenAI Symphony. Tracker-driven coding-agent orchestrator with two runner backends (`Runners.RaxolAgent` default; `Runners.Codex` Port-based JSON-RPC for parity with upstream Symphony Elixir) and six surfaces (terminal dashboard, LiveView, MCP tools + `symphony://runs` resource, Telegram per-issue session router, Watch push, JSON `/api/v1/*`). Workflow hot-reload via `WorkflowStore`, Linear (GraphQL) + GitHub Issues (state labels) trackers, evidence framework (`Evidence.GitHub` CI/PR comments, `Evidence.Complexity` cloc/SLOC fallback, `Evidence.Recording` cast scan), in-run asciinema capture (`Evidence.Capture` writes `<workspace>/.raxol_symphony/run-<attempt>.cast` per dispatch when `recording.enabled: true`). 399 tests, 0 failures. Pre-alpha, path-dep.
- **`raxol_acp` v0.1 (engineering complete)**: First Elixir/OTP-native Virtuals Agent Commerce Protocol implementation. Job lifecycle (`Job.{Server, StateMachine, Memo, Store, Supervisor, Registry}`), EIP-712 typed-data memos via `Raxol.Payments.EIP712`, on-chain client (`ContractClient.Onchain` over Req JSON-RPC, EIP-1559 typed-tx signing, Yellow-Paper RLP, log decoder for `create_job` job_id extraction), Seller stack (`Backend.InMemory` + `Queue` + `Runtime` + `Supervisor`, opt-in via `:seller_enabled`), `Wallet.NonceServer` for serialized nonce assignment, `mix raxol_acp.bench` sandbox-graduation harness. Optional DETS-backed `Job.Store` durability. 256 tests, 0 failures. Pre-alpha, path-dep. External-blocked: real ACP contract ABIs, `Wallet.SCA`, `Seller.Backend.WebSocket`.
- **`Raxol.Payments.Wallet.sign_hash/1`**: new behaviour callback for EIP-1559 transaction signing (sign-precomputed-digest semantics). `Wallets.Env` and `Wallets.Op` both implement.
- **Workflow Graph (`Raxol.Workflow.*`, ADR-0015)**: LangGraph-style stateful workflow primitive in main raxol: a declarative `Graph` builder with six-step structural validation, synchronous `Compiled.invoke/3` plus `async_invoke/3` and `stream_events/3`, a durable `Checkpoint.Saver` (Ets/Dets/Postgrex adapters), `Workflow.interrupt/1` human-in-the-loop with `Compiled.resume/4`, and `failure_policy: :retry | :compensate` (reverse-order saga rollback).
- **Workflow concurrency (ADR-0019)**: `Graph.add_channel/3` (typed reducers) and `Graph.add_join/4` (barrier); multi-node parallel branches via `Task.async_stream` (`parallelism :: pos_integer | :branches`), per-branch pause/resume, cancellation cascade, per-branch trace spans, and `branch_id` checkpoint/telemetry metadata. Real consumers: an ACP cross-chain settlement example and a Symphony parallel-candidates `GraphAdapter`.
- **Effect system (`Raxol.Agent.Directive`)**: struct-based directives (Async/Shell/SendAgent/Schedule/Spawn/Stop) with an `Executor` protocol replacing the closed Command tuple set; a CloudEvents v1.0 envelope (`Event.to_cloud_event/2`); `TraceContext` `causation_id` correlation.
- **Agent-stack substrate (ADR-0020)**: `Raxol.Agent.Cache`, `ThreadLog` (append-only audit), declarative `Policy.{Retry, Timeout, Cache}` via `PolicyApplier`, and the `Sandbox` protocol with `Sandbox.Chain` gating. Symphony's RaxolAgent runner adopts every primitive (tracker cache, thread-log audit, per-turn policies and sandboxes); a Session-backed sibling runner ships.
- **Operator-flow contract (ADR-0018)**: a first-class paused-run substrate end-to-end (Workflow Saver -> ACP Job -> Symphony Orchestrator -> MCP tools -> TUI/LiveView/Telegram/Watch); `Raxol.Symphony.PauseReason` consolidates reason formatting and is mechanically enforced via a `pause_reasons/0` callback.
- **raxol_acp Workflow migration (ADR-0016)**: `Job.Server`'s GenServer state machine replaced by a Workflow-backed implementation (`Job.Workflow`, a 10-node graph); `:via_workflow` flipped to the default.
- **Self-improving agent loop (`raxol_agent`)**: skills as filesystem procedural memory, an after-turn curation reviewer, and a Curator. `Raxol.Agent.Skill` parses/renders agentskills.io `SKILL.md`; `Raxol.Agent.Skills.Store` is a `BaseManager` disk index with usage telemetry persisted via `Core.Stores.Dets`, a managed root plus read-only `external_dirs` (default `~/.agents/skills`), and archive/state/pin; `skills_list`/`skill_view`/`skill_manage` Actions. `Raxol.Agent.SelfImprove.after_turn/3` spawns an isolated, unlinked reviewer on an auxiliary model that writes durable memory and `created_by: :agent` skills; `Raxol.Agent.Curator` ages `active -> stale -> archived` with interval-plus-idle gating, dry-run, and `tar.gz` backup/rollback. New `use Raxol.Agent` callbacks `skills_provider/0` and `self_improve/0`.
- **Memory provider stack, full-text recall, dialectic user model (`raxol_agent`)**: `Raxol.Agent.Memory.Stack` composes N memory providers (fan-out writes, merge + rerank + dedup reads); `Raxol.Agent.Memory.SessionSearch` is a BM25-lite inverted index over raw conversation items (`session_search` returns messages, not summaries); `Raxol.Agent.UserModel` derives a per-user dialectic block on an auxiliary model, injected into the last user message via the new optional `build_user_context/1` callback. New `memory_providers/0` callback.
- **`Raxol.Agent.Turn`**: the turn driver that assembles memory/skills/user-context/session-search context from an agent module's callbacks, records each turn to a `Conversation.Log`, and fires the after-turn self-improvement effects. Wires the loop end-to-end.
- **`raxol_gateway` package (pre-alpha)**: one daemon connecting many chat platforms through a shared `Gateway.Adapter` contract. `Route` keys sessions `agent:main:{platform}:{chat_type}:{chat_id}`; `SessionRouter` + `Session` run one process per chat under a `DynamicSupervisor` with idle/cooldown/max-session limits; `Pairing` issues DM codes and decides `authorize/2`; `Delivery` resolves four outbound destinations (direct, home, cross-platform, explicit `"platform:chat_id"` target); per-chat history plus `SessionRouter.handoff/3` move a conversation across platforms with its history intact. `Adapter.InMemory` is a reference adapter.
- **Symphony opt-in self-improvement**: `Raxol.Symphony.Runners.RaxolAgent` fires the `Agent.Turn` after-turn hook (skills curation, memory, user-model refresh, session index) on each turn when `agent.module` declares it, in both the workflow and simple run paths, without touching event forwarding, pause detection, policies, or sandboxes.
- **ADRs 0021-0028**: Hermes-extraction Tier 1 (self-improving agents, memory provider stack, unified messaging gateway) and Tier 2 (execution backends + hibernation, cronjob, execute_code, delegate_task, auxiliary-model routing) decision records.
- **Idempotent crash recovery for cross-chain payment Actions (`raxol_payments`)**: `Raxol.Payments.Checkpoint`, a nil-safe behaviour for a durable in-flight-intent store injected via `context[:checkpoint]`, with `derive_key/1` for a stable idempotency key. Three stores: `Checkpoint.ETS` (process-crash-durable), `Checkpoint.ContextStore` (backed by `Raxol.Agent.ContextStore`, so a deployed agent's in-flight intent rides the same store that backs its crash recovery), and nil (disabled, the default). `ExecuteXochiIntent` and `ExecuteRelayTransfer` checkpoint the dispatched intent before submit and resume it on a re-run after a crash (poll-before-re-sign, no second spend authorize) instead of re-quoting and signing twice; the relay rail keys on the logical payment (not the client-minted `transfer_id`) so a resume reuses the same id and an idempotent broadcaster dedupes a retried deposit. Drops the checkpoint on definite failure; protocol-tagged keys (`:xochi`/`:relay`) so a shared store can't collide. The ZERO cockpit crash beat (`examples/agents/zero_system.exs`) models the contract end-to-end. `:live_xochi` and `:live_relay` kill-and-resume gates. 24 new tests + the live variants; 0 failures.
- **Auxiliary-model routing (`raxol_agent`, ADR-0028)**: `Raxol.Agent.Auxiliary` routes background tasks (curation, user-model derivation, future titling/triage) to a cheap model per task kind instead of the frontier model. `resolve/2` maps a task kind to its slot's `ExecutorConfig`; `resolve_chain/2` adds the slot's fallback chain terminating at the primary executor; `select/2` walks the chain through `Backend.Selector` with an injectable availability predicate. Config is an `auxiliary:` slot map keyed by task kind with a `default_aux` catch-all. `SelfImprove` and `UserModel` consult the resolver when no explicit backend/model is set, keeping explicit config as an override; with `auxiliary:` unset every kind resolves to the primary executor.
### Changed
- **`Raxol.Agent.Memory.Store.Ets` DETS**: migrated the hand-rolled `:dets` open/persist/delete/clear/sync/close to the shared `Raxol.Core.Stores.Dets` helper. Behaviour-preserving; the existing store tests pass unchanged.
## [2.4.0] - 2026-04-14
### Added
- **Phase 14B: Xochi Integration**: Xochi as default agent-facing protocol for cross-chain payments. Cash-positive with tier-based fees (0.10-0.40%). Riddler solves intents behind the scenes.
- `Raxol.Payments.Xochi.Client`: HTTP client for Xochi intent API (quote, execute, status, history)
- `Raxol.Payments.Xochi.Schemas`: 5 typed structs (QuoteRequest, QuoteResponse, ExecuteRequest, ExecuteResponse, IntentStatus)
- `Raxol.Payments.Protocols.Xochi`: full intent flow: `get_quote/2` -> `execute/3` (EIP-712 wallet signing) -> `poll_status/3`
- `Raxol.Payments.Riddler.Client`: Commerce API client (B2B/direct solver access, not default)
- `Raxol.Payments.Router`: cross-chain routes to `:xochi`, privacy to `:xochi`, same-chain stays `:x402`
- **Phase 14C: PXE-Bridge Integration**: Aztec Private eXecution Environment as settlement target for high-trust privacy tiers.
- `Raxol.Payments.Pxe.Client`: JSON-RPC 2.0 client (aztec_createNote, aztec_getVersion, /status)
- `Raxol.Payments.Pxe.Schemas`: CreateNoteParams, CreateNoteResult, HealthStatus
- `Raxol.Payments.PrivacyTier`: Glass Cube model (6 tiers: open, public, standard, stealth, private, sovereign), attestation gating, downgrade logic
- Router settlement routing with trust-score-aware privacy depth
- **Phase 14D: Stealth Settlement**: Full ERC-5564/ERC-6538 in `Xochi.Stealth` (~300 LOC).
- ECDH stealth address derivation (secp256k1)
- View tag scanning (256x speedup, 1:256 false positive rate)
- Domain-separated key derivation from EVM signature
- Meta-address encode/decode (st:eth:0x format)
- 44 tests (32 unit + 12 e2e), stress-tested 500 round-trips at 0% failure
- **Phase 14E: ZKSAR + Trust Tiers**: Zero-knowledge attestation verification and trust scoring.
- `Raxol.Payments.Zksar`: 6 ZK proof type verification (type, expiry, issuer, structure), batch verify, JSON parsing
- `Raxol.Payments.Zksar.TrustScore`: diminishing-returns aggregation: `score = sum(weight_i / ln(rank + 1))`, capped at 100
- PrivacyTier attestation requirements per tier, downgrade logic
- Router attestation-aware routing with `trust_score_for/1`
- **AutoPay wiring**: `Backend.HTTP` accepts `:req_plugins` for transparent HTTP 402 handling. `Raxol.Payments.Req.AgentPlugin.auto_pay/1` builds the closure.
- **Riddler solver wiring (ADR-0005)**: Complete on both sides. 9 Xochi endpoints, fee policy (5 tiers + privacy premiums), stealth/ERC-4337 settlement, ZKSAR attestation, EIP-712 typed data. 119 Riddler tests + 347 raxol_payments tests.
- **raxol_liveview package**: TerminalBridge, TEALive, TerminalComponent, 5 themes, CSS asset. 37 tests.
- **raxol_plugin package**: `use Raxol.Plugin` macro, API facade, Manifest, Testing helpers, generator. 50 tests.
- **Hex publishing readiness**: All packages at v2.4.0 with LICENSE.md, README.md, package metadata, version-constrained path deps. Publishing order: raxol_sensor + raxol_core -> raxol_terminal/mcp/plugin/liveview -> raxol -> raxol_agent -> raxol_payments.
### Changed
- Deprecated `Protocols.Riddler`: now delegates to Xochi internally
- All sub-packages bumped to v2.4.0 (raxol_payments stays at 0.1.0)
- Path deps now include version constraints (`~> 2.4`) for Hex compatibility
### Fixed
- **Dashboard demo**: `status_dot/1` used identical character for all scheduler load levels; now uses distinct ASCII indicators per threshold
- **String.to_atom on external input**: Replaced 6 unsafe catch-all `String.to_atom(s)` in schema parsers with explicit clauses + `:unknown`/`nil` fallback
- **Duplicated `maybe_put/3`**: Extracted to `Schemas.put_non_nil/3` shared helper
- **Dialyzer specs**: Tightened `{:error, term()}` to actual error tuple shapes in `metrics.ex`
- **QuoteRequest validation**: Added `validate/1` with eth address format checks
- **Attestation filtering**: PrivacyTier now filters attestations by `valid: true`
## [2.3.2] - 2026-03-30
### Added
- **Headless session manager** (`Raxol.Headless`): GenServer managing non-interactive TEA app instances in `:agent` environment. Start from module or .exs file, take text screenshots, send keystrokes, read model state. Used by MCP tools and future test harness.
- **MCP tools for Claude Code**: 6 tools (`raxol_start`, `raxol_screenshot`, `raxol_send_key`, `raxol_get_model`, `raxol_stop`, `raxol_list`) injected into Tidewave at dev startup. Tidewave MCP proxy script for stdio transport.
- **ADR-0012: MCP as Rendering Target**: Architecture decision formalizing MCP as a first-class rendering target. Automatic tool derivation from widget tree via ToolProvider behaviour, focus lens with mouse tracking, context tree as MCP resources, agent-MCP symmetry, multi-surface cockpit vision (terminal, MCP, Telegram, speech, watch). Category theory foundations for design and property-based test invariants.
- **SPECS.md Phases 8-11**: raxol_mcp package, ToolProvider + tool derivation, context tree + resources, MCP test harness.
- **Playground resize handling**: Fixed resize event propagation in playground demos.
### Changed
- Updated `docs/core/ARCHITECTURE.md` with MCP rendering target section
- Updated `CLAUDE.md` with raxol_mcp package, dependency graph, and consolidated namespace
- Updated `IDEAS.md` with MCP architecture, functor family, multi-surface cockpit, category theory
- Updated `docs/adr/README.md` with ADR-0012 and new "AI & MCP" category
- Dispatcher and Engine refactored under 800 LOC each
- Credo strict: 0 issues (was 373, resolved via function extraction and pattern matching)
## [2.3.0] - 2026-03-27
182 commits, 1,030 files changed, net -39K LOC (89,793 insertions, 129,283 deletions).
### Added
- **Distributed swarm subsystem**: libcluster integration with gossip, EPMD, DNS, and custom Tailscale strategy. CRDTs (LWW-Register, OR-Set) for shared state. Node health monitoring, seniority-based leader election, bandwidth-aware message routing. 11 modules, 2,100+ lines.
- **AI agent framework**: `use Raxol.Agent` for TEA-based agents with OTP supervision. Agent discovery via Registry, typed inter-agent messaging, headless or rendered. Three command types: async (SSE streaming), shell (Port), inter-agent. Team supervision via `Agent.Team`. Backend.HTTP streams across Anthropic, OpenAI, Ollama, Kimi, and Lumo (U2L encryption). Tiered fallback detection.
- **Interactive playground**: 28 demos across 8 categories (input, display, feedback, navigation, overlay, layout, visualization, effects). Search, filter by category/complexity, help overlay. Charts as View DSL widgets. SSH serving with `mix raxol.playground --ssh`.
- **Time-travel debugging**: `Raxol.start_link(MyApp, time_travel: true)` snapshots every `update/2` cycle into a circular buffer. Step back/forward, jump to any point, restore state. Recursive map diffing. Zero cost when disabled.
- **Session recording and replay**: Asciinema v2 format. Capture with timestamps, replay with pause/seek/speed controls. Stream replay.
- **Sandboxed REPL**: `Code.eval_string` with spawn_monitor timeout, IO capture via group_leader swap, persistent bindings. Three sandbox levels: unrestricted, standard, strict (whitelist-only, safe for SSH). Available as `mix raxol.repl`.
- **Nx/Axon adaptive ML**: Optional Nx vectorized fusion, Axon MLP recommender for layout, FeedbackLoop training. Gated behind `Code.ensure_loaded?`.
- **Plugin system**: Phase 1 mission plugin system (4 modules) with lifecycle management
- **AGI Cockpit Console**: Phase 2 cockpit with uptime panel, dependency checker, crash recovery, state machine
- **`mix raxol.new`**: Project generator with 4 templates (basic, phoenix, ssh, agent)
- **`mix raxol.demo`**: 4 built-in runnable demos
- **`mix raxol.check`**: Unified quality gate (format, compile, credo, dialyzer, security, test)
- **Benchmark suite**: Comparative benchmarks against Ratatui, BubbleTea, and Textual
- **746+ new tests** across 21 modules (357 for core, 233 for runtime, 156 for plugins, 84 for converter/keyboard/engine/shutdown/initializer/scheduler)
- Mouse click hit testing for buttons
- Agent semantic view tree
- Unified image facade + View DSL `image/1`
- Event capture phase (W3C-style dispatch), event bubbling, style inheritance through component tree
- HEEx parser for terminal compilation
- Sixel real dithering + image cache
- CODE_OF_CONDUCT.md, SECURITY.md
### Fixed
- 3 real bugs found via test coverage: converter pipe BadMapError, keyboard CaseClauseError on quit/debug, unreachable ctrl_c/ctrl_q clauses
- 6 flaky CI tests (Registry race conditions, ETS cleanup, JIT warmup timing, behavior_tracker race)
- Windows CI (GPG path separators, IOTerminal backend)
- Input parser multi-byte sequences + mouse tracking
- REPL sandbox hardening, capped eval history
### Changed
- Deleted ~35K lines of dead code (CQRS, EventSourcing, Pipeline, stale stubs)
- Phoenix is now an optional dependency
- All examples modernized to TEA pattern
- Zero credo warnings, zero dialyzer regressions
- Refactored large files into focused submodules (CSI handlers, sensor, adaptive, orchestrator)
- 6,484 tests passing, 0 failures, 74 excluded by environment
## [2.2.0] - 2026-03-22
### Added
- Widget examples for Viewport, CodeBlock, MarkdownRenderer, MultiLineInput
- Modal test file (22 tests) and Terminal test file (16 tests) verified
### Changed
- Rewrote `examples/apps/todo_app.ex` from broken LiveView/HEEx to TEA pattern
- Hex package readiness: `mix hex.build` succeeds (1.8MB)
- 14 deps marked optional (Ecto, PostGres, bcrypt, mogrify, contex, HTTPoison, ex_cldr, phoenix_ecto)
- Excluded compiled `.so`/`.o` binaries from hex package
- Moved esbuild/dart_sass to dev-only
- Replaced `Ecto.UUID.generate()` with `UUID.uuid4()` in emulator struct
- Updated package description
## [2.1.0] - 2025-02-27
### Added
- **ScreenBuffer.Scroll Module** - Complete scroll operations for terminal buffer
- Scroll region management (set/get scroll regions)
- Basic scroll operations (scroll_up/down with configurable line counts)
- Region-specific scrolling (scroll within defined regions)
- Scrollback buffer management (save, clear, get with limits)
- Scroll position tracking for viewing history
- VT100 index operations (IND/RI for cursor-triggered scrolling)
- **Core.Performance Module** - ETS-backed performance statistics tracking
- Frame timing and FPS calculation
- Memory usage monitoring
- Sample-based metrics with configurable limits
- Non-blocking initialization (works without GenServer)
### Fixed
- **Dialyzer Errors** - Resolved all dialyzer warnings in plugin modules
- plugin_supervisor: Explicit handling of Task.Supervisor return values
- beam_analyzer: Precise error types for analysis_result
- capability_detector: Tightened policy and capabilities types
- Added documented ignore patterns for safe supertype specs
- **Orphaned Tests Cleanup** - Removed test files for non-existent modules
- Deleted adaptive_framerate_test.exs (module removed in 9f27ae77)
- Deleted monitor_test.exs (module never existed)
- Deleted gpu_renderer_test.exs (module never existed)
- Deleted render_server_test.exs (module never existed)
- Tagged termbox2 NIF loading test with :docker for CI compatibility
### Changed
- **Test Suite** - Improved test stability and reduced flaky failures
- 4669 tests passing with 0 failures
- Removed ~750 lines of orphaned test code
## [2.0.1] - 2025-12-04
### Added
- **Plugin Visualization Integration** - Complete Sixel rendering in UI components
- Implemented `create_sixel_cells_from_buffer/2` to bridge plugin and terminal Sixel rendering
- Integrated with `Raxol.Terminal.ANSI.SixelGraphics.process_sequence/2` for native processing
- Added pixel buffer to Cell grid conversion with palette-to-RGB color mapping
- **CI Root Cause Analysis Documentation** (2025-12-06)
- Documented three distinct root causes affecting nightly builds with ready-to-apply solutions
### Fixed
- **Test Type Warnings** - Removed unreachable pattern matching clauses in DCS handler tests
- **Nightly Build CI/CD Pipeline Stabilization** (2025-12-06)
- Fixed Erlang :cover module crashes on NIF beam files (OTP 27.2/28.2)
- Fixed Hex archive OTP version conflicts
- Fixed macOS performance test timing issues
- Fixed Elixir 1.19.0 LiveComponent lifecycle
- Result: 43% -> 93% CI success rate
### CI/CD Workflow Fixes
Fixed failing GitHub Actions workflows and updated to latest Elixir/OTP versions.
### Documentation
- **Sixel Graphics Rendering** - Documented complete Sixel implementation
- Clarified that full Sixel rendering pipeline is implemented and tested
- Updated integration test with proper assertions for Sixel pixel rendering
- Removed outdated TODO comments suggesting Sixel was incomplete
- Added detailed implementation documentation to TODO.md
- Core rendering complete: Parser, Graphics module, DCS Handler, Buffer operations, Cell support
- All Sixel tests passing (parser, graphics, integration)
- **Sixel Graphics Rendering Verification** - Comprehensive validation of complete implementation
- Verified all 5 core components working correctly (Parser, Graphics, DCS Handler, Buffer Ops, Cell)
- 100% test coverage: 3 parser tests, 11 graphics tests, 2 integration tests, 25+ DCS handler tests
- Confirmed edge case handling: empty sequences, invalid colors, bounds checking, malformed DCS
- Performance validated: ~3-5μs per pattern character, O(1) palette lookups, sparse pixel buffer
- Integration verified: Emulator -> DCS Handler -> SixelGraphics -> Parser -> Pixel Buffer -> Screen Buffer -> Cell
- Documentation updated to reflect production-ready status with known limitations clearly defined
- Known limitations documented: Plugin visualization integration (future), Kitty protocol (future), animations (spec limitation)
### Changed
- **Updated to Elixir 1.19.0 and OTP 28.2** across all CI workflows
- `ci-unified.yml` - Main CI pipeline
- `nightly.yml` - Nightly builds with test matrix (1.17.3/1.18.3/1.19.0 + OTP 27.2/28.2)
- `regression-testing.yml` - Performance and memory regression tests
- `performance-tracking.yml` - Performance benchmarks
- `release.yml` - Release workflow
- Reduced TODO.md from 2000+ lines to ~70 lines (removed completed historical content)
- **TODO.md Restructured** - Reorganized development roadmap with priority-based categorization
- CRITICAL, HIGH, MEDIUM, LOW priority sections
- Added effort estimates for high-priority items
- Separated completed items and known non-issues
- Improved clarity for v2.0.1 release planning
- **TODO.md Final Cleanup** - Removed all completed tasks (2025-12-05)
- All HIGH, MEDIUM, and LOW priority completed items moved to CHANGELOG.md
- Removed: Window Server Tests, Scroll Server Tests, Command History, Theme System, Git Diff, StateManager Delete, CharsetManager Single Shift, Rainbow Theme Plugin
- Remaining items: Hex.pm Publishing checklist, optional future enhancements, known non-issues
- TODO.md now concise and focused on remaining work
### Fixed
- **Audit.LoggerTest** - Confirmed all 28 tests passing (verified 2025-12-05)
- Previous concern about `:events_must_be_list` error was resolved
- Full test coverage for audit logging system at `test/raxol/audit/logger_test.exs`
- **Window Server Tests** - Re-enabled and fixed all 15 tests (verified 2025-12-05)
- Added `update_config` implementation to `window_manager.ex` and `window_manager_server.ex`
- Re-enabled 4 test describe blocks: window splitting, operations, focus, configuration
- Updated test assertions to match actual implementation behavior
- All window management functions verified working (split, resize, move, title, etc.)
- **Scroll Server Tests** - Re-enabled and fixed all 16 tests (verified 2025-12-05)
- Added `scroll_region` field to `Raxol.Terminal.Buffer.Scroll` struct
- Implemented `set_scroll_region/3` and `clear_scroll_region/1` functions
- Re-enabled scroll region test describe blocks
- Full scroll buffer functionality verified
- **Meta-Package Configuration** - Configured root raxol package as meta-package (2025-12-05)
- Added path dependencies to `apps/raxol_core`, `apps/raxol_plugin`, `apps/raxol_liveview`
- Root package now serves as convenient meta-package for users wanting all features
- Individual packages remain independently publishable for modular adoption
- Updated package description to clarify meta-package purpose
- Verified all package READMEs use GitHub links correctly
- Tested independent compilation of all packages
- Ready for Hex.pm publishing with documented workflow
- **Code Duplication Cleanup** - Removed duplicate files between root and apps (2025-12-05)
- Removed 4 duplicate files from root `lib/raxol/core/`: `box.ex`, `buffer.ex`, `renderer.ex`, `style.ex`
- Files now exist only in `apps/raxol_core/lib/raxol/core/` where they belong
- Root package correctly depends on apps packages via path dependencies
- Prevents module naming conflicts when users install meta-package
- All tests passing after cleanup, compilation clean with zero warnings
- **Command History Integration** - Fully integrated command history tracking (2025-12-05)
- Added `history_buffer` field to Emulator struct for tracking command history
- Initialized HistoryBuffer in all emulator constructor functions (basic and full)
- Implemented automatic command tracking in `Emulator.process_input/2`
- Commands accumulate in `current_command_buffer` and are added to history when newline is encountered
- Empty commands are correctly ignored (not added to history)
- Integration test now fully validates history functionality
- History accessible via `Raxol.Terminal.HistoryManager` API
- **Theme System Implementation** - Completed theme loading and accessibility integration (2025-12-05)
- **Terminal Handlers**: Implemented proper theme loading in `lib/raxol/handlers/terminal_handlers.ex`
- Uses `Raxol.Themes.load_theme/1` to load themes from predefined names or JSON files
- Converts basic theme structure to full theme structure with all required fields
- Supports "default", "dark", "light", and "high_contrast" predefined themes
- Proper error handling for theme loading failures
- **High Contrast Accessibility**: Implemented theme system integration in `lib/raxol/ui/accessibility/high_contrast.ex`
- Integrates with `Raxol.UI.Theming.ThemeManager.update_palette/2`
- Applies all theme colors to the UI system (background, foreground, accent, etc.)
- High contrast themes now properly update the system palette
- Includes logging and graceful error handling
- **LOW PRIORITY Enhancements** - Completed stubbed features and tests (2025-12-05)
- **Git Integration Diff Rendering**: Implemented colorized diff view in example plugin
- Executes `git diff` and parses output
- ANSI color formatting: green for additions, red for deletions, cyan for hunks
- Bold file headers, dimmed meta information
- Proper line truncation and padding for terminal width
- Error handling for failed git operations
- **StateManager Delete Function**: Enabled existing delete functionality
- Function was already implemented but test was commented out with TODO
- Enabled test assertions for `delete_state/2`
- Verified support for both simple and nested key deletion
- Works with ETS and process storage strategies
- **CharsetManager Single Shift**: Implemented VT100 single shift character set support
- Added `single_shift` field to CharsetManager struct
- Implemented `apply_single_shift/2` with guard clause for :g2 and :g3
- Implemented `get_single_shift/1` to return current shift state (nil when inactive)
- Added `clear_single_shift/1` helper to clear shift after processing one character
- Updated `reset_state/1` to properly reset single_shift field
- Supports VT100 SS2 (ESC N) and SS3 (ESC O) escape sequences
- **Rainbow Theme Plugin Command System**: Implemented proper command registration
- Added `get_commands/0` callback for plugin framework integration
- Implemented command handlers: rainbow_start, rainbow_stop, rainbow_speed, rainbow_palette, rainbow_next, rainbow_help
- Each handler returns `{:ok, state, message}` or `{:error, message, state}` tuple
- Commands automatically registered/unregistered by plugin framework
- Updated documentation for register_commands/unregister_commands stubs
- **Nightly Build Workflow** (`.github/workflows/nightly.yml`)
- Added test exclusions (`--exclude slow --exclude integration --exclude docker`) to prevent CI timeouts
- Added `timeout-minutes: 20` and `continue-on-error: true` to Dialyzer steps
- Added fallback for integration tests that may not exist
- **Regression Testing Workflow** (`.github/workflows/regression-testing.yml`)
- Fixed benchmark commands that incorrectly used `--json` flag (not supported)
- Changed output capture from JSON to text with `tee`
- Removed invalid `command -v` checks for mix tasks
- Simplified memory benchmark execution
- **Memory Benchmark Scripts** (`bench/memory/*.exs`)
- Removed `Mix.install()` blocks that conflict with project dependencies when run via `mix run`
- Fixed `terminal_memory_benchmark.exs`, `plugin_memory_benchmark.exs`, `load_memory_benchmark.exs`
- Scripts now rely on project dependencies from mix.exs
## [2.0.0] - 2025-10-05
### Major Release - Modular Architecture
Complete v2.0 transformation with modular package architecture for incremental adoption.
All 6 phases implemented: Core modules, LiveView integration, Spotify plugin showcase,
documentation overhaul, package split, and feature additions.
### Package Structure
Four independent packages now available:
- `raxol_core` (v2.0.0): Buffer primitives, zero dependencies, <100KB
- `raxol_liveview` (v2.0.0): Phoenix LiveView integration
- `raxol_plugin` (v2.0.0): Plugin framework with behavior API
- `raxol` (v2.0.0): Meta-package including all packages
### Phase 1: Core Modules
- Raxol.Core.Buffer: Terminal buffer operations (<1ms for 80x24)
- Raxol.Core.Renderer: Pure functional rendering with diff calculation
- Raxol.Core.Box: Box drawing with multiple border styles (single, double, rounded, heavy, dashed)
- Raxol.Core.Style: ANSI color and style management
- Complete test coverage (73/73 tests passing)
- Documentation: BUFFER_API.md, GETTING_STARTED.md, ARCHITECTURE.md
- Examples: hello_buffer, box_drawing
### Phase 2: LiveView Integration
- Raxol.LiveView.TerminalBridge: Buffer to HTML conversion with caching
- Raxol.LiveView.TerminalComponent: LiveComponent for embedding terminals
- Event handling: keyboard, mouse, paste, focus/blur
- Five themes: Nord, Dracula, Solarized Dark/Light, Monokai
- Performance: 1.24ms avg rendering (60fps target achieved)
- CSS grid layout with accessibility features
- Complete test coverage (31/31 tests passing)
### Phase 3: Spotify Plugin Showcase
- Full Spotify Web API integration with OAuth 2.0
- Six operational modes: auth, main, playlists, devices, search, volume
- Complete keyboard controls and modal navigation
- API client with request/oauth2 dependencies
- Authentication flow and token management
- Documentation: SPOTIFY.md with setup guide
- Four working examples with integration patterns
### Phase 4: Documentation Overhaul
- Getting Started: QUICKSTART.md (5/10/15 min tutorials)
- Core Concepts: CORE_CONCEPTS.md, MIGRATION_FROM_DIY.md
- Cookbook: 5 practical guides (LiveView, VIM, Performance, Commands, Theming)
- Feature docs: VIM, Parser, Search, Filesystem, Cursor Effects
- 75% documentation reduction via DRY consolidation (5000+ lines -> 1250 lines)
- Beginner-friendly with clear migration paths
### Phase 5: Modular Package Split
- Independent packages with clear dependency boundaries
- Path-based dependencies for monorepo development
- Each package fully documented with README, LICENSE, CHANGELOG
- All packages compile independently with zero warnings
- Ready for Hex.pm publishing
### Phase 6: Feature Additions
- VIM Navigation: hjkl movement, gg/G jumps, search (/ ?), word movement (w b e), visual mode
- Command Parser: tokenization, tab completion, history navigation, aliases, fuzzy search
- Fuzzy Search: fzf-style matching with scoring, highlighting, case-sensitive/insensitive modes
- Virtual Filesystem: ls, cat, cd, pwd, mkdir, rm with absolute/relative paths
- Cursor Effects: rainbow, comet, minimal presets with smooth interpolation
- Complete test coverage (180/180 feature tests passing)
### Test Results
- Total: 2147 tests (2147 passing, 0 failing, 49 skipped)
- Test pass rate: 100%
- Property tests: 58/58 passing
- Zero compilation warnings with --warnings-as-errors
### Performance
- Parser: 0.17-1.25μs (Phase 0 baseline maintained)
- Core buffer operations: <1ms for 80x24 buffers
- LiveView rendering: 1.24ms avg (60fps achieved)
- VIM navigation: <1μs per movement
- Command parser: ~5μs per parse/execute
- Fuzzy search: ~100μs for 1000-line buffer
- Filesystem operations: ~10μs per command
- Cursor effects: ~7μs per update
### Breaking Changes
- None - v2.0 packages are additive
- Existing v1.x code continues to work with root package
- New modular packages available for incremental adoption
- See MIGRATION_FROM_DIY.md for upgrade strategies
### Migration Path
- Current v1.x users: No changes required, continue using root package
- New v2.0 users: Choose packages based on needs
- Minimal: `{:raxol_core, "~> 2.0"}` (just buffers)
- Web: Add `{:raxol_liveview, "~> 2.0"}` (LiveView integration)
- Full: `{:raxol, "~> 2.0"}` (everything included)
### Documentation Added
- Core: BUFFER_API.md, GETTING_STARTED.md, ARCHITECTURE.md, PHASE1_COMPLETION.md
- Getting Started: QUICKSTART.md, CORE_CONCEPTS.md, MIGRATION_FROM_DIY.md
- Cookbook: LIVEVIEW_INTEGRATION.md, VIM_NAVIGATION.md, PERFORMANCE_OPTIMIZATION.md,
COMMAND_SYSTEM.md, THEMING.md
- Features: VIM_NAVIGATION.md, COMMAND_PARSER.md, FUZZY_SEARCH.md, FILESYSTEM.md,
CURSOR_EFFECTS.md, feature README.md
- Plugins: SPOTIFY.md with OAuth setup guide
### Examples Added
- Core: 01_hello_buffer/, 02_box_drawing/
- LiveView: 01_simple_terminal/ with event handling
- Plugins: counter.exs, 4 Spotify examples with integration patterns
### Benchmarks Added
- Core: buffer, renderer, style, box, comprehensive
- Features: vim, parser, fuzzy, filesystem, cursor, comprehensive
- LiveView: rendering benchmark with 60fps validation
## [1.19.0] - 2025-10-01
### Added
- **Distributed Session Support**: Complete multi-node session management system
- DistributedSessionRegistry with consistent hashing for optimal session distribution
- Session affinity support (cpu_bound, memory_bound, io_bound, network_bound)
- Node discovery and heartbeat monitoring for cluster health
- Load balancing with automatic rebalancing during topology changes
- SessionReplicator with configurable replication strategies (immediate, eventual, quorum, best_effort)
- Vector clock-based conflict-free replicated data types (CRDTs)
- Anti-entropy mechanisms for replica drift correction
- Performance-aware replication with load monitoring
- SessionMigrator with multiple migration strategies (hot, warm, cold, bulk)
- Automatic node evacuation during maintenance or failures
- Intelligent failover with dependency-aware restart ordering
- Migration rollback capabilities for failure recovery
- DistributedSessionStorage with multi-backend support (ETS, DETS, Mnesia)
- Automatic data sharding with configurable shard counts
- Data compression and encryption at rest capabilities
- Write-ahead logging for durability guarantees
- Comprehensive test framework with 50+ test scenarios and fault injection
### Performance
- Session location: < 1ms (consistent hashing)
- Hot migration time: < 500ms for typical sessions
- Replication sync: < 5ms (vector clock-based)
- Storage operations: < 10ms (multi-backend optimized)
- Failover time: < 2s (automatic with replicas)
- Memory overhead: < 5MB for 10,000+ sessions across cluster
### Technical Components
- DistributedSessionRegistry: Session location with consistent hashing
- SessionReplicator: Multi-node replication with vector clocks
- SessionMigrator: Live migration with 99.9% availability preservation
- DistributedSessionStorage: Multi-backend storage with persistence
- DistributedSessionTestHelper: Comprehensive testing framework
## [1.18.0] - 2025-09-29
### Added
- **Enhanced Error Recovery**: Comprehensive self-healing system
- RecoverySupervisor with adaptive restart strategies
- ContextManager with TTL-based state preservation (< 1ms access)
- DependencyGraph with intelligent restart ordering
- EnhancedPatternLearner with ML-based strategy recommendation
- RecoveryWrapper for transparent process enhancement
### Performance
- Context retrieval: < 1ms (ETS-backed)
- Recovery decision time: < 5ms (pattern-based)
- Graceful degradation: < 100ms activation
- Memory overhead: < 2MB for 1000+ contexts
## [1.17.0] - 2025-09-25
### Changed
- **IO.puts/inspect Migration**: Migrated 524+ raw IO calls to structured logging
- 37 files migrated to centralized logging system
- Context-aware replacement strategies by module type
- Smart message-level detection (error, warning, info)
- Zero compilation errors maintained
### Added
- Automated migration tools for systematic conversion
- Log.console for debug/test modules
- Log.log_inspect with label support
## [1.16.0] - 2025-09-20
### Changed
- **Logger Standardization**: Centralized logging across 144 files
- 733 Logger calls standardized with enhanced functionality
- Module-aware logging with automatic context detection
- Performance timing with built-in execution measurement
- Environment-aware console logging
### Added
- Bulk Logger Migrator tool
- Alias Syntax Fixer for import conflicts
- Structured context with metadata enrichment
## [1.15.2] - 2025-09-15
### Changed
- **Module Naming Cleanup**: Removed "unified"/"comprehensive" qualifiers
- 25 files renamed with descriptive, specific names
- Updated all imports, aliases, and references across 170+ files
- Zero breaking changes, all functionality preserved
### Examples
- `unified_registry.ex` -> `global_registry.ex`
- `unified_config_manager.ex` -> `config_server.ex`
- `unified_collector.ex` -> `metrics_collector.ex`
## [1.15.0] - 2025-09-10
### Added
- **BaseManager Migration Complete**: 170 modules migrated (100%)
- SSH Session module (final migration)
- Standardized error handling and supervision
- Consistent functional patterns throughout
- Zero compilation warnings achieved
### Summary
- Wave 1-22 completed across versions v1.7.5 to v1.15.0
- Better OTP supervision tree integration
- Reduced boilerplate significantly
## [1.5.4] - 2025-09-26
### Major Release - Code Consolidation & BaseManager Pattern
### Added
- **BaseManager Pattern**: Unified behavior for GenServer-based modules
- Advanced BaseManager pattern adoption across 22+ modules
- Consistent lifecycle management and error handling
- Standardized init, call, cast, and info handlers
- Enhanced state management and configuration handling
- **TimerManager Integration**: Centralized timer management system
- Unified timer intervals and scheduling across core modules
- Reduced timer pattern duplication throughout codebase
- Improved timer lifecycle and cleanup handling
### Fixed
- **Zero Compilation Warnings**: Achieved strict error checking compliance
- Resolved all @doc and @impl attribute conflicts
- Fixed unused variable warnings across all modules
- Enhanced pattern matching in CSI handlers
- Added proper mock implementations for testing
- **Enhanced Test Coverage**: Improved to 99.8% (1632/1635 tests passing)
- Tagged performance tests appropriately
- Resolved environment-dependent test failures
- Fixed BaseManager conversion issues
### Performance
- **Ultra-fast Operations**: Parser 0.17-1.25μs | Render 265-283μs
- **Maintained Memory Efficiency**: <2.8MB per session
- **Exceeded Frame Rate**: 3,500+ FPS capability
## [1.4.1] - 2025-09-16
### Major Release - Zero Warnings & Enhanced Developer Experience
### Added
- **Automated Type Spec Generator**: `mix raxol.gen.specs` - Tool for automatic type specification generation
- Intelligent type inference based on function/argument naming patterns
- Supports dry-run, interactive, and backup modes
- Handles guard clauses and pattern matching correctly
- Generated 12,000+ type specs across the codebase
- Full integration with Dialyzer for validation
- **Unified TOML Configuration System**: `Raxol.Config` - Centralized configuration management
- TOML-based configuration with environment-specific overrides
- Runtime configuration updates without restarts
- Automatic validation and hot-reload capabilities
- GenServer-based with comprehensive API
- Support for development, test, and production environments
- **Enhanced Debug Mode**: `Raxol.Debug` - Four-level debugging system
- Debug levels: `:off`, `:basic`, `:detailed`, `:verbose`
- Performance profiling with time_debug and inspect_debug
- Process state dumping and debug breakpoints
- Automatic performance monitoring (memory, run queue)
- Export debug sessions to JSON for analysis
- Component-specific debugging capabilities
### Changed
- **Compilation Quality**: Achieved ZERO compilation warnings (reduced from 88)
- Fixed all undefined function warnings (49 -> 0)
- Resolved unused variable warnings (15 -> 0)
- Fixed Logger.warn deprecation warnings
- Created missing modules and corrected all API references
- Full `--warnings-as-errors` compliance
- **Test Suite Excellence**: 2134 tests total, 99.8% pass rate - All critical issues resolved
- Fixed TestBufferManager compilation error
- Fixed plugin system JSON encoding issues (5 failures resolved)
- Fixed character set timeout issue
- Fixed MouseHandler test failures (URXVT button decoding, drag detection)
- Fixed EraseHandler integration with UnifiedCommandHandler
- Fixed cursor save/restore struct field access bugs (position vs x/y)
- Added EmulatorLite support to command executor pattern matching
- Fixed nil handling in history tracking for minimal emulators
- Resolved all test stability issues and parallel execution conflicts
- **Compilation Quality**: ZERO compilation warnings achieved
- Full ElixirLS support restored, clean compilation with `--warnings-as-errors`
- All behaviour callbacks implemented correctly
- Fixed all StateManager, BufferManager, and EventManager references
- **World-Class Benchmarking Infrastructure**: Complete overhaul from 21 to 11 core modules
- **New Benchmark Config Module**: Profile-based configuration with environment awareness
- Statistical significance testing (95% confidence level)
- Dynamic threshold calculation based on historical variance
- Environment-specific adjustments (CI/local)
- Comprehensive metadata tracking (Git SHA, system info, versions)
- **Enhanced `mix raxol.bench`**: Production-ready benchmarking
- Performance regression detection with configurable thresholds
- Interactive HTML dashboard with Chart.js visualization
- Comprehensive suites: parser, terminal, rendering, memory, concurrent
- Baseline metrics storage and comparison
- **Advanced Analytics**: P50-P99.9 percentile tracking, outlier detection, trend analysis
- **Competitor Comparison Suite**: Direct benchmarking against Alacritty, Kitty, iTerm2, WezTerm
- **Benchmark DSL**: Idiomatic Elixir macro-based benchmark definitions
- **Mix Task Consolidation**: Organized task structure
- `mix raxol` - Main command with help
- `mix raxol.check` - All quality checks
- `mix raxol.test` - Enhanced test runner
- `mix raxol.bench` - Production-ready benchmarking with dashboard
- `mix raxol.mutation` - Refactored with functional patterns (no if/else)
- **Technical Debt Resolution**: Major infrastructure improvements completed
- Removed deprecated terminal config backup files
- Consolidated duplicate buffer operations and configuration managers
- Refactored event system to use :telemetry exclusively with TelemetryAdapter
- Updated all dependencies to latest stable versions
- Implemented comprehensive protocol system (5 core protocols)
- Added connection pooling and circuit breakers for external services
- Standardized error handling patterns across modules
- Created DevHints system for real-time performance monitoring
- Added performance profiling tools with `mix raxol.perf`
### Performance & Architecture
- **Performance Metrics**: Parser 3.3μs/op | Memory <2.8MB | Render <1ms
- **Code Reduction**: 722 lines removed, 150+ duplicate patterns eliminated
- **Module Consolidation**: 43+ modules consolidated, state management unified (16->4 managers)
- **Documentation**: Updated README.md and CLAUDE.md with accurate commands
## [1.3.0] - 2025-09-12
### Codebase Consolidation (Phases 1-4) - COMPLETE
- **Test Helper Consolidation**: Unified test infrastructure
- Consolidated 3 test helper modules into single `test/support/unified_test_helper.ex`
- Removed 195 lines of duplicate code while enhancing functionality
- Migrated all tests to use unified helper with zero breaking changes
- Eliminated duplicate test_helper.exs files
- **Hook Implementation Consolidation**: Single comprehensive hook system
- Merged 3 hook implementations into unified `Raxol.UI.Hooks.Functional`
- Reduced codebase by 527 lines while adding functionality
- Enhanced from 6 + 2 stubs to 8 fully implemented hooks
- Implemented task-based execution with timeout controls
- Achieved zero try/catch blocks with pure functional patterns
- Added `use_context` and `use_async` implementations
- **Repository Cleanup**: Improved project organization
- Added .gitignore entries for cache, coverage, and log directories
- Archived 4 obsolete scripts replaced by mix tasks
- Removed duplicate test_helper.exs from platform_specific/
- Cleaned up inconsistent file locations
- **Extended DRY Consolidation**: Major structural improvements
- Moved 21+ test helpers from `lib/raxol/test/` to `test/support/raxol/`
- Created 4 common behaviors (StateManager, EventHandler, Lifecycle, Metrics)
- Flattened excessive directory nesting (reduced from 7+ to max 5 levels)
- Eliminated 150+ duplicate manager/handler/server patterns
- Clarified module responsibilities with enhanced documentation
### Summary
- **Total Lines Reduced**: 900+ lines eliminated through consolidation
- **Code Quality**: All compilation warnings resolved, critical performance issues fixed
- **Test Coverage**: 98.7% maintained with enhanced test infrastructure
- **Architecture**: Cleaner, more maintainable codebase with consistent patterns
## [1.2.1] - 2025-09-11
### Code Quality Sprint (Phase 6-7) - COMPLETE
- **Critical Issues Fixed**: All compilation errors and warnings resolved
- Fixed syntax error in `examples/snippets/advanced/commands.exs`
- Resolved TypeScript import errors across `examples/snippets/typescript/`
- Achieved zero compilation warnings status
- Fixed all high-priority Credo issues
- **Performance Improvements**: 15+ performance optimizations completed
- Replaced inefficient list appending with proper accumulator patterns
- Optimized apply/3 usage across codebase
- Improved memory efficiency in hot paths
- Performance targets met: Parser 3.3μs/op, Render <1ms, Memory 2.8MB baseline
- **Code Duplication Reduction**: Eliminated 5 major duplication patterns
- Created `Raxol.Utils.MapUtils` for shared stringify_keys functionality
- Consolidated duplicate implementations across modules
- Reduced duplication instances from 46 to 41
- Fixed audit module code duplication
- **TypeScript Support**: Created missing core modules
- Added performance, events, and renderer core modules
- Created visualization and dashboard component modules
- Enhanced TypeScript example completeness
- **Linter Analysis Results**:
- Critical Issues: [FIXED] All fixed
- High Priority Performance: [FIXED] 15+ fixed
- Code Duplication: [FIXED] 5 patterns eliminated
- Remaining: 700+ minor optimizations (low impact, deferred)
### Documentation and Project Organization
- **Major Documentation Consolidation**: Significantly improved project organization and reduced duplication
- Consolidated 5 scattered `examples/` directories into single organized structure
- Removed duplicate VS Code extension directory (archived `extensions/vscode/`)
- Streamlined main README from 280 to 128 lines (54% reduction)
- Created comprehensive documentation hub at `docs/README.md`
- Consolidated benchmark documentation and removed redundant example snippet READMEs
- Moved release notes to organized `docs/releases/` directory
- **Script Organization**: Cleaned up scripts directory with new categorical structure
- Organized scripts into `ci/`, `dev/`, `testing/`, `quality/`, `db/`, `visualization/` subdirectories
- Updated `dev.sh` and documentation references to new script locations
- Created comprehensive scripts README with usage examples
- **Package Preparation**: Optimized for Hex.pm release
- Updated package files list in `mix.exs` to include consolidated structure
- Validated package build with `mix hex.build`
- All required files (LICENSE.md, README.md, CHANGELOG.md) present and updated
- **Space Savings**: Removed approximately 15-20KB of redundant documentation
- Eliminated duplicate files and directories
- Improved DRY compliance across all documentation
- Enhanced navigation and discoverability
## [1.2.0] - 2025-09-10
### Sprint 28: Process-Based Test Migration - COMPLETE
- **Test Suite Stabilization**: Fixed remaining process-based test failures
- Fixed `CommandHelper.safe_execute/1` error handling to properly match error tuples
- Updated `Web.SupervisorTest` to handle already-running supervisor processes
- Fixed `KeyboardShortcutsTest` module alias syntax error
- Resolved `performance_optimization_test.exs` compilation error (duplicate ExUnit.run)
- All core tests now passing (excluding keyboard shortcuts needing API updates)
- **Termbox2 NIF Testing**: Enhanced termbox2 NIF test coverage
- Created comprehensive `Termbox2LoadingTest` to verify NIF loading without TTY
- Verified all termbox2 functions are properly exported
- Confirmed NIF compilation and shared library generation
- Added tests for priv directory structure and C source files
- All 9 termbox loading tests passing
- **Dialyzer Integration Fix**: Resolved compilation errors
- Fixed import conflict in `Mix.Tasks.Raxol.Dialyzer` (removed duplicate Mix.Shell.IO import)
- Dialyzer tasks now compile and run successfully
- **Security Scanning Integration**: Added comprehensive security tooling
- Integrated Sobelow for Phoenix security analysis
- Added mix_audit for dependency vulnerability checking
- Created `mix raxol.security` task for unified security scanning
- Checks for hardcoded secrets, insecure configurations, and file permissions
- All dependency vulnerability checks passing
### Sprint 27: Technical Debt Elimination - COMPLETE
- **Process Dictionary Migration**: Complete elimination of Process dictionary usage (20 files)
- Migrated all Process.get/put/delete calls to use `Raxol.Core.Runtime.ProcessStore`
- Updated test files to use ProcessStore for cross-process test synchronization
- Modified animation framework to use ProcessStore for test compatibility
- Updated demo/example files to use ProcessStore patterns
- Enhanced documentation to show ProcessStore as recommended approach
- Made tests async-safe by removing Process dictionary dependencies
- **Configuration System Consolidation**: Unified configuration management
- Confirmed removal of redundant generated config files (dev_generated.exs, test_generated.exs, prod_generated.exs)
- Validated that main environment files (dev.exs, test.exs, prod.exs) contain all necessary configuration
- Eliminated duplication between generated and manual config files
- Maintained standard Elixir configuration patterns
- **Development Scripts Organization**: Streamlined scripts directory
- Archived 20 unused development scripts into organized subdirectories:
- `scripts/archived/deprecated-by-dev-sh/` - 6 scripts replaced by unified dev.sh tool
- `scripts/archived/sprint-refactoring/` - 12 scripts from module refactoring sprints
- `scripts/archived/old-experiments/` - 2 experimental testing scripts
- Updated DEPRECATED.md with comprehensive archival documentation
- Preserved all active development tools while cleaning main scripts directory
### Sprint 25: Final Test Suite Resolution - COMPLETE
- **InputBuffer Module Implementation**: Complete implementation of missing InputBuffer functionality
- Fixed module name conflicts causing compilation errors
- Implemented all 39 required functions (append, prepend, clear, size, etc.)
- Added proper overflow handling for truncate, wrap, and error modes
- Fixed error message formatting to match test expectations
- All 39 InputBuffer tests now passing (was 6 critical failures)
- **Major Test Issues Resolved**: Fixed all remaining Sprint 25 test failures (13/13 complete)
- ColorSystem high contrast accessibility integration
- Mouse input integration tests (click/selection modes)
- UI rendering pipeline parameter validation fixes
- Interlacing mode CSI handler mappings
- InputBuffer module functionality complete
### Sprint 26: Technical Debt & Codebase Cleanup - COMPLETE
- **Repository Organization**: Comprehensive cleanup and maintenance
- Removed crash dump files (6.8MB storage freed)
- Archived Sprint 23 refactoring scripts to `scripts/archived/sprint23-refactoring/`
- Created `bench/archived/` for historical benchmark data
- Cleaned temporary testing artifacts from root directory
- **Documentation & Standards**: Established comprehensive development guidelines
- Created `docs/development/NAMING_CONVENTIONS.md` with complete module naming standards
- Documented Sprint 22-23 refactoring patterns (`<domain>_<function>.ex`)
- Verified no duplicate JSON libraries (Jason as primary)
- Applied consistent code formatting across entire codebase
- **Technical Debt Reduction**: Addressed major backlog items
- Audited Process dictionary usage (20 files, mostly test compatibility)
- Organized 99 development scripts for better maintainability
- Eliminated development clutter and improved repository structure
- Enhanced code consistency and developer experience
### Previous API Fixes (from earlier 1.2.0 work)
- **GenServer Delegation Corrections**: Fixed parameter passing issues in FocusManager and KeyboardShortcuts modules
- Fixed all 16 FocusManager API functions to properly pass server parameter to GenServer calls
- Fixed all 14 KeyboardShortcuts API functions to properly pass server parameter to GenServer calls
- Resolves `GenServer.whereis/1` errors where component IDs were being interpreted as server names
- Restores intended functionality for focus management and keyboard shortcuts in production
- **Duplicate Filename Prevention System**: Comprehensive tooling to detect and prevent duplicate filenames
- Added standalone script (`scripts/quality/check_duplicate_filenames.exs`) with severity classification and rename suggestions
- Added Mix task (`lib/mix/tasks/raxol.check.duplicates.ex`) with configurable options and strict mode
- Added Credo integration (`lib/raxol/credo/duplicate_filename_check.ex`) for existing linting workflow
### Usage
```bash
# Check for duplicate filenames
mix raxol.check.duplicates
# With rename suggestions
mix raxol.check.duplicates --suggest-fixes
# Strict mode (fails on duplicates)
mix raxol.check.duplicates --strict
# Run as part of Credo checks
mix credo
```
### Impact
- **Test Suite Excellence**: 100% of major test issues resolved across all sprints
- **Code Quality**: Comprehensive naming conventions and organization standards
- **Repository Health**: Clean structure with archived historical artifacts
- **Developer Experience**: Clear documentation and development guidelines
- **Technical Debt**: Systematic cleanup of backlog items for maintainability
## [1.0.1] - 2025-08-11
### Changed
- **[SECURE] Security Validation Complete**: Zero vulnerabilities confirmed via Snyk security scanning
- **[DOCS] Documentation Links Fixed**: Updated README with correct paths to generated docs and HexDocs
- **[PERF] Performance Documentation Updated**: Confirmed all targets exceeded with 3.3μs parser operations
- **[PREP] Release Preparation**: Fixed broken links, validated security, documented performance achievements
- Updated package documentation and performance benchmarks
- Added professional release notes for v1.0.0
- Improved test infrastructure stability
- Enhanced NIF loading reliability
### v1.0 Launch Milestones Achieved
- [SECURE] **Zero Security Vulnerabilities**: Comprehensive security scan passed
- [DOCS] **All Documentation Links Working**: README and docs fully functional
- [FAST] **Performance Targets Exceeded**: 30x better than target (3.3μs vs 100μs)
- [ARCH] **Multi-Framework Architecture**: Terminal UI framework supporting React, Svelte, LiveView, HEEx, and raw terminal
## [1.0.0] - 2025-08-11
### Sprint 5 - Critical Architectural Fixes
- **ETS Table Race Conditions - FIXED**
- Created `Raxol.Core.CompilerState` module with thread-safe ETS management
- Replaced all direct `:ets` calls with safe wrappers
- Eliminated "table identifier does not refer to an existing ETS table" errors
- Achieved stable parallel compilation without race conditions
- **Property Test Improvements - MAJOR PROGRESS**
- Fixed Store.update arithmetic errors with proper error handling
- Fixed Button.new API usage and style merging issues
- Fixed TextInput.handle_input to append text correctly
- Fixed tree_size calculation using integer division
- Fixed Store naming conflicts using System.unique_integer
- Reduced property test failures from 10+ to just 1
- Achieved 99.6% overall test pass rate (1406/1411 tests)
- **NIF Build Automation - FIXED**
- Integrated termbox2_nif with elixir_make for automatic compilation
- Fixed NIF loading path resolution to check :raxol priv directory first
- Updated Makefile to copy NIF to main app priv directory
- NIF now builds automatically during `mix compile`
- **CLDR Compilation Optimization - IMPROVED**
- Optimized CLDR configuration for development environment
- Reduced to single locale and provider in dev mode
- Disabled documentation generation for faster builds
- Compilation time reduced from timeout-prone to ~25 seconds
### Multi-Framework Architecture - Complete
- **First Terminal Framework Supporting 5 UI Paradigms**
- React-style components with hooks and state management
- Svelte-inspired reactive system with compile-time optimization
- Phoenix LiveView integration for real-time updates
- HEEx templates for server-side rendering
- Raw terminal control for maximum performance
- **Universal Features Across All Frameworks**
- Actions system works with any framework
- Transitions and animations unified across paradigms
- Context API for cross-framework communication
- Slot system for component composition
- No vendor lock-in - switch frameworks anytime
### Fixed - 2025-08-11
- **Critical NIF Loading Issues**
- Fixed termbox2_nif load failure caused by `:code.priv_dir/1` returning `{:error, :bad_name}`
- Added robust fallback path resolution for NIF library loading
- Resolved Path.join/2 FunctionClauseError preventing terminal functionality
- **UI Component API Completeness**
- Added `Button.handle_click/1` for button interaction handling
- Added `TextInput.handle_input/2` with validation support for controlled input
- Added `TextInput.handle_cursor/2` for cursor position management
- Implemented `Flexbox.new/1`, `render/1`, and `calculate_layout/1` for flexbox layouts
- Implemented `Grid.new/1`, `render/1`, and `calculate_spacing/1` for grid layouts
- Added `Store.update/3` alias for state management consistency
- **Property Test Compatibility**
- Fixed 10+ property test failures in UI component testing suite
- Ensured text input validation filters invalid characters correctly
- Fixed grid spacing calculation to return proper tuple format
- Resolved flexbox child layout calculation issues
### Known Issues - To Be Addressed
- 54 compilation warnings remaining (mostly unused variables in Svelte modules)
- Property tests still showing some failures in component composition
- Some undefined function references in Svelte actions need resolution
## [1.0.0] - 2025-08-10
### Added
- **Svelte-Style Component System**
- Complete Svelte-inspired framework bringing compile-time optimization to terminals
- Actions system with `use:` directive (tooltip, clickOutside, focusTrap, draggable, autoSave, lazyLoad)
- Reactive stores with automatic dependency tracking and derived values
- Reactive declarations using Svelte's `$:` syntax with automatic re-execution
- Transitions and animations (fade, scale, slide, fly, draw) with 60 FPS animation engine
- Context API for component communication without prop drilling (ThemeProvider, AuthProvider)
- Slot system for advanced component composition with named and scoped slots
- Template compiler with AST analysis, static content inlining, and buffer operation optimization
- Built-in components: Modal, Tabs, DataTable with slot customization
- Advanced dashboard demo showcasing all Svelte features
- **Property-Based Testing Suite**
- Parser property tests with 10 comprehensive test properties
- Core system property tests for Buffer and Terminal state
- StreamData integration for generative testing
- Performance scaling verification tests
- **Demo Recording Infrastructure**
- Interactive demo recording script (scripts/visualization/demo_videos.sh)
- 6 demo categories: Tutorial, Playground, VSCode, WASH, Performance, Enterprise
- Asciinema integration with GIF conversion support
- Professional demo showcase documentation
- **Enterprise Audit Logging System**
- Comprehensive event types: authentication, authorization, data access, security, compliance, terminal operations, privacy
- Tamper-proof storage with cryptographic signatures and event encryption
- Real-time threat detection: brute force, privilege escalation, data exfiltration, reconnaissance
- Compliance reporting: SOC2, HIPAA, GDPR, PCI-DSS with automated violation detection
- SIEM integration: Splunk, Elasticsearch, IBM QRadar, Azure Sentinel
- Multiple export formats: JSON, CSV, CEF, LEEF, Syslog (RFC 5424), PDF, XML
- Full-text search with inverted indexing and configurable retention policies
- **Enterprise Encrypted Storage System**
- Master key encryption with PBKDF2 key derivation (100,000 iterations)
- Data encryption keys (DEK) with automatic rotation and versioning
- Key encryption keys (KEK) for secure key wrapping and HSM support
- Multiple algorithms: AES-256-GCM, ChaCha20-Poly1305, AES-256-CBC, AES-256-CTR
- Transparent file and database encryption with streaming support for large files
- Ecto custom types for encrypted database fields with searchable encryption
- Compliance profiles: PCI-DSS, HIPAA, GDPR, SOX with automatic policy enforcement
- Comprehensive audit logging for all encryption operations
- **Developer Experience Revolution**
- Interactive tutorial system with 3 comprehensive guides and GenServer-based runner
- Component playground with 20+ components, live preview, and code generation
- Professional VSCode extension (2,600+ lines) with IntelliSense, syntax highlighting, and live preview
- Sub-5-minute onboarding with comprehensive tooling ecosystem
- **Modern UI Framework**
- CSS-like animation system with transitions, keyframes, and spring physics
- Layout engines: CSS Flexbox, CSS Grid with responsive design and breakpoints
- State management: Context API, Hooks system, Redux store, reactive streams
- Component composition: Higher-Order Components, render props, compound components
- Developer tools: Hot reloading, component preview, props validation, debug inspector
### Changed
- **Performance Milestones Achieved**
- Memory per session: 2.8MB (44% better than 5MB target)
- Created Raxol.Minimal for <10ms startup with 8.8KB footprint
- Memory efficiency score: 125.6/100 (exceeded maximum)
- Rendering: 1.3μs simple components, 0.48ms full screen
- Animation: 971K FPS max, 99.5% smoothness
- **Performance Breakthrough**
- Parser performance: 30x improvement (648μs -> 3.3μs per operation)
- EmulatorLite architecture: GenServer-free parsing path
- SGR processor: 442x speedup using pattern matching optimization
- All tests migrated to optimized architecture
- **Test Suite Excellence**
- Maintained 100% test pass rate (1751/1751 tests passing)
- Added comprehensive test coverage for audit and encryption systems
- Enhanced component lifecycle testing
### Fixed
- **macOS CI Runner Issues**
- Resolved Docker availability issues on macOS runners
- Configured local PostgreSQL for macOS CI
- Added platform-specific CI configuration
- Created DockerHelper for conditional test execution
- **CI/CD System**
- Made termbox2_nif dependency optional for broader compatibility
- Fixed code formatting across all modules
- Improved driver resilience with conditional native dependency loading
- Simplified CI workflow and fixed codecov integration
### Completed (Moved from TODO)
- **Documentation Milestones**
- Comprehensive 660+ line API.md reference with 100% public API coverage
- Professional documentation (removed emojis, reduced verbosity, added YAML frontmatter)
- Created comprehensive CONTRIBUTING.md guide
- Reduced documentation redundancy (40% improvement)
- 9 Architecture Decision Records (ADRs) for key design choices
- WASH-style system documentation for session continuity
- **Development Tools**
- VSCode extension packaged (raxol-1.0.0.vsix, 32KB) ready for marketplace
- Interactive tutorial system with 3 comprehensive guides
- Component playground with 20+ components and live preview
- **Test Suite Excellence**
- 100% test pass rate (2681+ tests all passing)
- Fixed all performance tests with robust expectations
- Implemented GenServer cleanup patterns across test suite
- Fixed CSI Handler, LiveView tests
- **Code Quality**
- Zero compilation warnings (100% reduction from 227)
- Replaced all stub implementations with working code
- Fixed all critical TODO/FIXME items
- Fixed module alias references
### Impact
- **Enterprise Ready**: Production-grade audit logging and encryption for regulated industries
- **World-Class Performance**: Sub-millisecond parser operations suitable for high-throughput applications
- **Developer Experience**: Framework-level tooling matching React/Vue ecosystem expectations
- **Security & Compliance**: Meeting requirements for healthcare, finance, and government deployments
## [0.9.0] - 2025-01-26
### Added
- **Complete Terminal Feature Implementation**
- **Mouse Handling**: Full mouse event system with click, drag, and selection support
- **Tab Completion**: Advanced tab completion with cycling, callback architecture, and Elixir keyword support
- **Bracketed Paste Mode**: Complete implementation with CSI sequence parsing (ESC[200~/ESC[201~)
- **Column Width Changes**: Full DECCOLM support for 80/132 column switching (ESC[?3h/ESC[?3l)
- **Sixel Graphics**: Already comprehensive with parser, renderer, and graphics manager
- **Command History**: Multi-layer history system with persistence and navigation
### Changed
- **Test Suite Improvements**
- Achieved 100% test pass rate (1751/1751 tests passing)
- Fixed terminal mode classification issues
- Improved mode manager test accuracy
- Enhanced test coverage for all new features
### Fixed
- **Technical Debt Resolution**
- Documented 12 compilation warnings as false positives from dynamic apply/3 calls
- Fixed failing test in ModeManager.lookup_standard for correct mode classification
- Resolved terminal mode specification compliance (DEC private vs standard modes)
### Impact
- **Production Ready**: Raxol terminal framework is now feature-complete
- **Full VT100/ANSI Compliance**: Complete terminal emulation with modern features
- **100% Test Coverage**: Comprehensive testing ensures reliability
- **Enterprise Features**: Mouse, history, completion, graphics all fully operational
## [0.8.1] - 2025-08-09
### Added
- **Complete Component Lifecycle Implementation**
- Added mount/unmount hooks to all 23 UI components
- Implemented @impl annotations for proper callback tracking
- Created comprehensive lifecycle documentation
- **API Documentation**
- Added 76+ @doc annotations to Raxol.Terminal.Emulator
- Enhanced documentation for Parser and core modules
- Achieved 100% documentation coverage for public APIs
### Changed
- **Performance Improvements**
- Removed all debug output from parser (27 debug statements eliminated)
- Cleaned up test output for better readability
- Profiled parser performance (identified 648 μs/op baseline)
### Fixed
- **Compilation Warnings**
- Reduced warnings from 52 to 15 (71% reduction)
- Fixed unreachable clause warnings in cursor functions
- Added pattern matching to distinguish struct types
- Removed unused module aliases
- **Test Suite**
- Achieved 99.3% test pass rate (1742 tests passing, 0 failures)
- Fixed test output clarity by removing debug logging
- 13 intentionally skipped tests for unimplemented features
### Technical Debt Reduction
- Standardized component lifecycle across entire UI framework
- Improved code consistency with proper @impl annotations
- Enhanced maintainability with comprehensive documentation
## [0.8.0] - 2025-07-25
### Added
- **Phase 8: Release Process Streamlining (COMPLETED)**
- Simplified `burrito.exs` configuration (127->98 lines, 23% reduction)
- Added standardized mix aliases for release tasks:
- `mix release.dev` - Development builds
- `mix release.prod` - Production builds
- `mix release.all` - All platform builds
- `mix release.clean` - Clean build directories
- `mix release.tag` - Create version tags
- Enhanced release script with build summaries and artifact manifests
- Streamlined version management with safety checks and validation
- Improved error handling and user feedback throughout release process
### Changed
- **Release Configuration Optimization:**
- Extracted common configurations into module attributes (`@base_steps`, `@common_config`, `@package_meta`)
- Eliminated code duplication between dev/prod profiles
- Consolidated platform-specific settings for better maintainability
- Unified package metadata across distribution formats
- **Release Script Enhancements:**
- Added comprehensive build result tracking and reporting
- Implemented JSON manifest generation for build artifacts
- Enhanced git tagging with duplicate detection and clean working directory validation
- Improved cross-platform executable name handling
### Fixed
- **Release Process Reliability:**
- Fixed potential issues with duplicate git tags
- Enhanced error reporting for failed builds
- Improved platform detection and build consistency
- Added proper validation for release prerequisites
### Impact
- 23% reduction in release configuration complexity
- Unified release workflow across all platforms (macOS, Linux, Windows)
- Enhanced artifact tracking and build management
- Safer and more reliable version tagging process
- Improved developer experience with clear, standardized commands
## [0.7.0] - 2025-07-15
### Added
- **Refactored Buffer Server Architecture:**
- Introduced `BufferServerRefactored` with modular, high-performance design
- Added `ConcurrentBuffer`, `MetricsTracker`, `OperationProcessor`, and `OperationQueue` modules
- Improved buffer management, batch operations, and performance metrics
- Comprehensive documentation and type specs for all new modules
- **Comprehensive Test Coverage:**
- Added integration and unit tests for all new buffer modules
- Enhanced test coverage for concurrent operations, metrics, and damage tracking
- Improved test reliability and isolation
### Fixed
- **Event Handler and State Restoration:**
- Fixed event handler to properly pass emulator to handlers
- Corrected terminal state restoration logic and fixed KeyError
- Added cursor-only restoration for DEC mode 1048
- **Debug Output Cleanup:**
- Removed excessive debug output from renderer and tests
- Cleaned up verbose IO/puts statements across terminal modules
### Changed
- **General Code and Documentation Improvements:**
- Updated and harmonized code formatting across all modules
- Improved documentation and roadmap
- Miscellaneous bug fixes and code cleanups
### Removed
- Obsolete debug scripts and legacy code
### Next Focus
1. Continue performance optimization
2. Address any remaining test edge cases
3. Further improve documentation and code quality
## [0.4.2] - 2025-06-11
### Added
- **Terminal Buffer Management Refactoring:**
- Split `manager.ex` into specialized modules:
- `State` - Buffer initialization and state management
- `Cursor` - Cursor position and movement
- `Damage` - Damaged regions tracking
- `Memory` - Memory usage and limits
- `Scrollback` - Scrollback buffer operations
- `Buffer` - Buffer operations and synchronization
- `Manager` - Main facade coordination
- Improved code organization and maintainability
- Enhanced test coverage
- Better error handling
- Clearer interfaces
- **Plugin System Improvements:**
- Implemented Tarjan's algorithm for dependency resolution
- Enhanced version constraint handling
- Added detailed dependency chain reporting
- Improved error handling and diagnostics
- Optimized dependency graph operations
- **Component System Enhancements:**
- Harmonized API for all input components
- Improved theme and style prop support
- Enhanced lifecycle hooks
- Better accessibility integration
- Comprehensive test coverage
- **Performance Infrastructure:**
- New `Raxol.Test.PerformanceHelper` module
- Performance test suite for terminal manager
- Event processing benchmarks
- Screen update benchmarks
- Concurrent operation benchmarks
- **Documentation Improvements:**
- Completed comprehensive guides
- Enhanced API documentation
- Improved architecture documentation
- Added migration guide
- Updated component documentation
### Changed
- **Test Infrastructure:**
- Replaced `Process.sleep` with event-based synchronization
- Enhanced plugin test fixtures
- Improved error handling
- Better resource cleanup
- Clear test boundaries
- **Terminal Command Handling:**
- Standardized error/result tuples
- Improved error propagation
- Enhanced command handler organization
- Better test coverage
- **Component System:**
- Migrated to `Raxol.UI.Components` namespace
- Improved theme handling
- Enhanced style prop support
- Better lifecycle management
### Deprecated
- Old event system
- Legacy rendering approach
- Previous styling methods
- `Raxol.Terminal.CommandHistory` (Replaced with new command system)
### Removed
- Redundant `Raxol.Core.Runtime.Plugins.Commands` GenServer
- Redundant clipboard modules
- `Raxol.UI.Components.ScreenModes` module
- Direct `:meck` usage from test files
### Fixed
- **SelectList Mouse Focus Bug:**
- Fixed focus update on mouse clicks
- Improved test coverage
- Enhanced mouse interaction handling
- **Accessibility Tests:**
- Fixed color suggestion tests
- Improved test reliability
- Enhanced accessibility coverage
- **Test Suite:**
- Resolved compilation errors
- Fixed helper function scoping
- Improved test organization
### Next Focus
1. Address remaining test failures
2. Complete OSC 4 handler implementation
3. Implement robust anchor checking
4. Document test writing guide
5. Continue code quality improvements
## [0.4.0] - 2025-05-10
### Added
- Initial public release
- Core terminal functionality
- Basic component system
- Plugin architecture
- Testing infrastructure
## [0.5.0] - 2025-06-12
### Added
- **Progress Component:**
- New `Raxol.UI.Components.Progress` module with multiple progress indicators:
- Progress bars with customizable styles and labels
- Spinner animations with multiple animation types
- Indeterminate progress bars
- Circular progress indicators
- Comprehensive test coverage for all progress variants
- Full documentation with examples and usage guidelines
- **Documentation Overhaul:**
- Major updates to all component documentation in `docs/components/`
- Improved structure, navigation, and cross-references
- Added mermaid diagrams and comprehensive API references
- Expanded best practices and common pitfalls sections
- **Test Suite Improvements:**
- Enhanced test coverage and organization
- Updated test fixtures and support files
- Improved reliability and maintainability
- **Code Style and Formatting:**
- Applied consistent formatting across all Elixir source files
- Improved code readability and maintainability
- **Utility Scripts:**
- Added scripts for code maintenance and consistency
### Changed
- Updated guides and general documentation for clarity and completeness
- Refined documentation links and fixed broken references
### Removed
- Obsolete migration and test consolidation guides
- **Native Dependency Management:**
- Removed vendored `termbox2` C source from `lib/termbox2_nif/c_src/termbox2`
- Now uses the official [termbox2](https://github.com/termbox/termbox2) as a git submodule
- Developers must run `git submodule update --init --recursive` before building
- Updated build and documentation to reflect this change
## [0.6.0] - 2025-01-27
### Added
- **Comprehensive Documentation Renderer:**
- Markdown to HTML conversion with Earmark integration
- Table of contents generation with anchor links
- Search index creation with metadata extraction
- Code block extraction and processing
- Full documentation rendering with metadata and navigation
- Graceful fallbacks when dependencies aren't available
- **Window Event Handling:**
- Complete window event processing in terminal driver
- Resize event handling with dimension updates
- Title and icon name change processing
- Proper logging and error handling for window events
- **Shared Helper Modules:**
- `Raxol.Core.Runtime.ShutdownHelper` for graceful shutdown logic
- `Raxol.Core.Runtime.GenServerStartupHelper` for startup patterns
- `Raxol.Core.Runtime.ComponentStateHelper` for state management
- `Raxol.Benchmarks.DataGenerator` for benchmark data generation
- `Raxol.Core.StateManager` for shared state patterns
- `Raxol.Terminal.Scroll.PatternAnalyzer` for scroll analysis
- `Raxol.EmulatorPluginTestHelper` for test setup
### Changed
- **Major Code Quality Improvements:**
- Eliminated all duplicate code across the codebase
- Reduced software design suggestions from 44 to 0
- Improved modularity and maintainability
- Enhanced code organization and structure
- **Refactored Components:**
- Removed duplicate character operations in favor of char_editor
- Extracted shared event handling in button component
- Unified scroll region logic into single helper
- Delegated duplicate auth functions to public auth.ex
- Removed embedded CharacterHandler in text_input
- Created shared color parsing delegation
- Unified component state update patterns
- **Test Suite Improvements:**
- Created shared test helper for emulator plugin tests
- Removed duplicate cursor manager tests
- Eliminated duplicate notification plugin test file
- Improved test organization and maintainability
### Removed
- **Legacy and Duplicate Modules:**
- `lib/raxol/terminal/input_manager.ex` (legacy version)
- `lib/raxol/core/cache/unified_cache.ex` (duplicate of system cache)
- `lib/raxol/terminal/buffer/char_operations.ex` (duplicate functionality)
- `test/raxol/plugins/notification_plugin_test.exs` (duplicate of core version)
- `test/raxol/terminal/cache/unified_cache_test.exs` (duplicate tests)
### Fixed
- **All TODO Items:**
- Implemented window resize processing
- Implemented window event handling
- Implemented comprehensive documentation renderer functionality
- No more TODO comments in the codebase
## [0.5.2] - 2025-01-27
### Added
- **Enhanced Demo Runner:**
- **Command Line Interface**: Added comprehensive command line argument support to `scripts/bin/demo.exs`
- `--list`: List all available demos with descriptions
- `--help`: Show detailed usage information and examples
- `--version`: Display version information
- `--info DEMO`: Show detailed information about a specific demo
- `--search TERM`: Search demos by name or description
- Direct demo execution: `mix run bin/demo.exs form`
- **Interactive Menu Improvements**:
- Categorized demo display (Basic Examples, Advanced Features, Showcases, WIP)
- Enhanced navigation with keyboard shortcuts
- Better error handling and user feedback
- Similar demo suggestions for typos
- **Auto-discovery**: Automatic detection of available demo modules in `Raxol.Examples` namespace
- **Error Handling**: Robust validation and error reporting for demo modules
- **Performance Monitoring**: Demo execution timing and monitoring capabilities
- **Configuration Support**: Optional configuration file support for customizing demo behavior
- **Documentation Updates**:
- Updated README with comprehensive demo usage instructions
- Added demo examples to Quick Start guide
- Enhanced documentation with interactive demo capabilities
### Changed
- **Demo Script Architecture**:
- Refactored `scripts/bin/demo.exs` for better maintainability
- Improved code organization with dedicated modules
- Enhanced user experience with better feedback and error handling
### Fixed
- **Demo Discovery**: Resolved issues with demo module loading and validation
- **User Experience**: Improved error messages and help text clarity
### Next Focus
1. Continue enhancing demo system with additional features
2. Add more comprehensive demo examples
3. Implement demo recording and playback capabilities
4. Enhance configuration and customization options
## [0.5.1] - 2025-01-27
### Added
- **Terminal System Major Enhancements:**
- Comprehensive refactoring of terminal buffer, ANSI, plugin, and rendering subsystems
- Enhanced ANSI state machine with improved escape sequence handling
- Better sixel graphics support and parsing
- Improved mouse tracking and window manipulation
- Enhanced buffer management with unified operations
- Better character handling and clipboard integration
- Comprehensive test coverage for all terminal subsystems
- **Core System Improvements:**
- Enhanced metrics aggregation and visualization
- Improved performance monitoring and system utilities
- Better UX refinement with accessibility integration
- Enhanced color system and theme management
- Improved application lifecycle management
- **UI Component Updates:**
- Updated base component lifecycle management
- Enhanced input field components (multi-line, password, select)
- Improved progress spinner and layout engine
- Better rendering pipeline and container management
- Enhanced test coverage for UI components
- **Testing Infrastructure:**
- Expanded test suite with improved coverage
- Enhanced test fixtures and support scripts
- Better plugin test organization and reliability
- Improved mock implementations and test helpers
- Added comprehensive test documentation
- **Documentation and Configuration:**
- Added compilation error plan and critical fixes reference
- Enhanced plugin test backups and documentation
- Updated configuration and application startup
- Improved plugin events and metrics collector
- Better script organization and maintenance
### Changed
- **Code Quality:**
- Applied consistent formatting across all Elixir source files
- Improved code readability and maintainability
- Enhanced error handling and validation
- Better separation of concerns in terminal subsystems
- Standardized API patterns across components
- **Performance:**
- Optimized terminal operations and buffer management
- Improved rendering pipeline efficiency
- Enhanced memory management and resource cleanup
- Better concurrent operation handling
### Fixed
- **Terminal Operations:**
- Fixed ANSI sequence parsing edge cases
- Improved buffer scroll region handling
- Enhanced cursor positioning accuracy
- Better window state management
- Fixed sixel graphics rendering issues
- **Test Reliability:**
- Resolved test compilation errors
- Fixed mock implementation inconsistencies
- Improved test isolation and cleanup
- Enhanced test data management
### Removed
- Obsolete UI component files
- Redundant test fixtures
- Unused configuration options
## [0.5.2] - 2025-01-27
### Added
- **Enhanced Buffer Manager Compression:**
- Implemented comprehensive buffer compression in `Raxol.Terminal.Buffer.EnhancedManager`
- Added multiple compression algorithms:
- Simple compression for empty cell optimization
- Run-length encoding for repeated characters
- LZ4 compression support (framework ready)
- Threshold-based compression activation
- Style attribute minimization to reduce memory usage
- Performance metrics tracking for compression operations
- Automatic compression state updates and optimization
- **Buffer Compression Features:**
- Cell-level compression with empty cell detection
- Style attribute optimization (removes default attributes)
- Run-length encoding for identical consecutive cells
- Configurable compression thresholds and algorithms
- Memory usage estimation and monitoring
- Compression ratio tracking and statistics
### Changed
- **Buffer Management:**
- Enhanced memory efficiency through intelligent compression
- Improved performance monitoring for buffer operations
- Better memory usage optimization strategies
### Fixed
- **Code Quality:**
- Resolved TODO items in buffer compression implementation
- Improved code maintainability and documentation
## [0.5.3] - 2025-01-27
### Fixed
- **Enhanced Buffer Manager:**
- Implemented buffer eviction logic in `Raxol.Terminal.Buffer.EnhancedManager`
- Added automatic pool size management to prevent memory overflow
- Resolved TODO item for buffer eviction implementation
- Improved memory management efficiency