Added
- feat(cli): the compiled binary answers its version without a manifest
- feat(conformance): two adapters, one contract, in a package that ships nothing
- feat(cli): eva runs from the command line, and the verbs are commands
- feat(plugins): the surface fleet supplies commands, config, keys, and themes
- feat(plugins): the provider fleet answers, retries, and counts the cost
- feat(plugins): the trace fleet writes the record to its sinks
- feat(tui): OpenTUI draws the terminal, and Renderer is the seam
- feat(tui-core): the terminal contracts, the bindings, and the theme
- feat(testkit): a plugin's tests boot it the way a run does
- feat(boot): the composition root assembles the kernel from its dependencies
- feat(sdk): the plugin author's surface, and the grammar its commands use
- feat(kernel): the plugin runtime, the extension points, and the config layers
- feat(core): the pure domain, the Session API, and the sink it writes to
- feat(acp): the protocol is pinned to a named release, and every update maps
- feat(schema): the event record is canonical, and the version is a fact of the wire
- feat(api): the session API, and the transports that carry it
- feat(harness): the layer that owns answering a prompt
- feat(core): a Run closes once, and the Recorder says whether it has
- feat(config): a run says what answers it
- feat(install): the install draws in Eva's own hand
- feat(install): a download draws its own progress
- feat(install): an install skips the version it already has
- feat(tui): the console owns the pane it scrolls, and every rule behind it is a module
- feat(cli): the process surface owns being asked to stop
Changed
- refactor(cli): the frontend drives the session API and assembles nothing
- perf(install): the small files ride with the archive
- refactor(install): a channel resolves one release document
- refactor(openai): a size limit carries its own name
- refactor(tui): the console names what a key press does
- refactor(theme): a background is a named type and not a boolean
- refactor: a comment carries a decision or it goes
- refactor(cli): a failure travels as an error, and a command declares what it needs
Verify what you downloaded
sha256sum --check --ignore-missing checksums.txtThe checksums are signed, and each archive carries a provenance attestation:
gh attestation verify <archive> --repo missingstudio/eva.