All notable changes to Issho are documented in this file.
The format follows Keep a Changelog, and Issho follows Semantic Versioning.
[0.1.0] - 2026-10-21
The first release: the server core, Issho.Live, agents from Elixir,
and the browser client's core. The cursor overlay, following, the
bindings of Kotoba and Masu, MCP and the installer come next.
Added
- The contracts:
Issho.Actor,Issho.Identity,Issho.Policy,Issho.Engine,Issho.Place,Issho.BindingandIssho.Store. Issho.Authority: one process per document across a cluster that orders transactions, applies each once (receipts), saves with the store's compare-and-swap before it confirms and broadcasts, keeps a journal, and reads any revision of the epoch.Issho.Engine.Map, the engine of shared maps and of the tests.Issho.Store.Memory, for development and tests.Issho.ChannelandIssho.Token: rooms joined with signed tokens, the policy asked on join, on every message and before each change goes out, read-only tokens, nested documents of a room, andIssho.revoke/3.Issho.PresenceandIssho.Awareness: who is in a room, and where, in batched frames per room and node.Issho.join_as/4andIssho.Participant: agents and jobs in a room from Elixir.Issho.Test: an isolated instance per test, andreplays?/2.- The browser client (
assets/, bundled bymix issho.build):Roomover a pluggable transport (phoenixTransport, with sockets shared by the rooms of a page and tokens renewed),Presence,Awareness(sent latest-wins, received per node), andSharedDocument(local changes at once, one transaction in flight, others' changes replayed under pending ones, refusals, gaps, reconnects that resend only what the server lacks). - The map engine's TypeScript twin, and
test/corpus, cases both engines must pass. - An end-to-end test: two clients over WebSockets on a real endpoint.
- Drafts: pending transactions kept per tab session across reloads, in IndexedDB or memory, sent when the document opens again; a draft of another epoch is reported and kept aside.
- Document specs from server code (
Issho.Documents.open/4), documents with no store (Issho.Store.None), and:on_transactionhooks, run once per accepted transaction before it is saved, able to refuse it. Issho.Live: a LiveView in a room, the same session as a channel's, with the room's events sent to its components or to the LiveView.