Skip to main content

CHANGELOG.md

# Changelog

All notable changes to the Terminalwire Elixir server are documented here.
The format follows [Keep a Changelog](https://keepachangelog.com/); this project
adheres to [Semantic Versioning](https://semver.org/).

## [Unreleased]

## [0.1.0] — Unreleased

First public release: a complete Elixir server implementation of the Terminalwire
v2 protocol, validated against the same language-neutral conformance corpus as the
Go client and the Ruby server.

### Added
- **Sans-IO protocol core** — `Terminalwire.Protocol`, `Codec`, `Negotiator`,
  `Frames`, `Window` (MessagePack wire, capability negotiation, flow control).
- **Server runtime** — `Terminalwire.Server.Connection` (sans-IO state machine),
  `Server.Session` (the process that drives it), `Server.Context` (the CLI-facing
  API), `Server.IO` (a group-leader IO device so `IO.puts`/`Owl`/`IO.ANSI` stream
  to the client with no wiring), and the `Terminalwire.WebSock` adapter.
- **Full v2 feature set** — streaming stdio with flow control, live window resize,
  `Ctrl-C` → server-side interrupt (exit 130), stdin piping (`Context.read`/
  `read_chunk`), raw input / single-key for REPL/TUI, terminal query, and
  files / dirs / env / browser behind the client-enforced entitlement policy.
- **`Terminalwire.CLI`** — a Thor-style command router: public functions become
  commands, their parameters become arguments, and `@desc` becomes generated help,
  with terminal helpers (`puts`/`gets`/`warn`/`env`/…) bound to the session. Sugar
  over a plain `run/1` handler, which you can still use directly with any parser.
- **Build-your-CLI docs** — `Terminalwire.CLI` plus the lower-level handler with
  three parsing styles (raw/`OptionParser`, Optimus, Owl) and the two output rules.
- **Runnable examples** — `examples/self_describing.exs` and `examples/owl_cli.exs`.
- **Coverage floor** — `mix test --cover` gates the build at 85%.

[Unreleased]: https://github.com/terminalwire/elixir/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/terminalwire/elixir/releases/tag/v0.1.0