diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..cb41e084 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,169 @@ +# Changelog + +What changed in each release of Colonizer, in the order it would matter to +someone running it. + +Releases are `vX.Y.Z` tags on `main`, installed with +`curl -fsSL https://colonizer.dev/install.sh | sh`. Each entry links the pull +request, so the reasoning behind a line is one click away. Dates are the day the +release was published. + +Colonizer is `0.x`: the shape of things still moves, and a minor version can +change behaviour. Anything that would cost work — a colony, a worktree, a +setting — is called out under **Take care** rather than left for you to find. + +## Unreleased + +### Added + +- Colonizer now knows which version it is. A build records the tag it came from, + its commit and when it was built, and Settings shows them. ([#110]) +- It checks whether a newer release is out, every few hours, **on by default**, + with a switch in Settings and `COLONIZER_UPDATE_CHECK=0` to keep it off from + the environment. Switched off it makes no request at all. ([#110]) +- **Update in place.** Settings offers the newer release, installs it with the + same verified installer you would run by hand, and restarts into it. Colonies + keep their microVMs and reconnect, and the pane says what happened to each + one. ([#112]) +- Shared memory can live in [mem0] instead of files on disk. ([#97]) +- `scripts/colony-report.mjs` prints how colonies went, out of what they already + log. ([#99]) +- Settings names the Claude account that is connected, or says plainly that it + cannot be named. ([#83]) + +### Changed + +- The colony list is ordered by what it wants from you, shows the queue, and + keeps following a pull request after it opens. ([#82]) +- An install now lives behind a symlink, so an install interrupted half-way + leaves either the whole old app or the whole new one — never neither. ([#104]) +- A colony that cannot be resumed says why, instead of quoting `gh` at you. + ([#111]) + +### Take care + +- An update applied from Settings keeps the previous app directory until no + running colony still mounts plugins from it, and sweeps it at the next start. + An installer run by hand still replaces it immediately, which is safe when + nothing is running and not when something is. ([#112]) + +## [v0.1.4] — 2026-09-17 + +### Changed + +- The colony chat streams smoothly: even text, fade-ins and eased scrolling, + instead of arriving in jerks. ([#80]) + +## [v0.1.3] — 2026-09-17 + +### Added + +- A live map at [colonizer.dev/live](https://colonizer.dev/live): a dot for a + mothership's area, lit while colonies run. **Off until you switch it on.** + ([#79]) + +### Changed + +- "Settler" now means what it does today, subagents included, and the README + stops claiming nothing is downloaded at runtime — the Claude Agent SDK and, + on a Mac, the Linux build of Claude Code, are fetched at install time from + Anthropic's own channels. ([#78]) + +## [v0.1.2] — 2026-09-17 + +### Changed + +- The published crates carry a banner and a README of their own. ([#77]) + +## [v0.1.1] — 2026-09-17 + +### Added + +- `colonizer-harness` and `colonizer-agentd` are published to crates.io on + release, as source to build from rather than as a way to install. ([#76]) +- The one-command install is documented now that there is a release to install. + ([#75]) + +## [v0.1.0] — 2026-09-17 + +The first release: prebuilt for Linux x86_64 with KVM, and for Apple Silicon +Macs. ([#74]) + +### Colonies + +- A GitHub issue becomes a pull request. The agent works in a disposable KVM + microVM on a fresh git worktree, and the **host** — never the VM — commits, + pushes and opens the pull request, automatically when the agent finishes. +- Questions arrive as multiple-choice cards with an "Other…" answer, never a + wall of text, and every step is described in plain language with the exact + command one click away. +- A colony whose microVM stops keeps its worktree and can be resumed where it + left off. +- Colonies past the parallel limit queue instead of being refused, and several + issues can be launched in one go. +- A chat and a terminal per colony, with each subagent shown as its own speaker. + +### Credentials and the mesh + +- Credentials never enter a colony. Tokens stay on the mothership; the guest + sees a placeholder and microsandbox's TLS proxy substitutes the real value at + the network edge. +- A private mesh of bundled Headscale and Tailscale links each colony to the + mothership, separate from any tailnet you already use, and starts without + internet access. + +### Models + +- A provider gateway on the mothership holds the keys, queues providers that + take one request at a time, and falls back to Claude when one is down. + Orchestrator, subagent and background models are set separately. +- A searchable catalogue of Anthropic-compatible endpoints, with presets + including Z.AI and Alibaba Qwen, and OpenAI reachable by translating Anthropic + Messages in the gateway. +- Two switches that save tokens: terse replies and compact command output. + +### The machine + +- Sandbox presets — Node, Python, Rust, Go — instead of typing an image tag, and + the colony image downloads when the stack is chosen rather than during your + first colony. +- Where a launch spends its time is recorded per phase. +- Claude Code plugin directories mount read-only into colonies, with ECC's + skills and agents vendored (its hooks removed, not merely switched off), plus + Google's skills on demand and Headroom. +- An optional pre-flight scan of the workspace, inside the colony, advisory + rather than a boundary. + +### Beyond one colony + +- Org workspaces, shared memory that agents propose and you approve, and a + watchdog that nudges colonies which stop making progress. + +### Take care + +- Linux x86_64 with KVM, or an Apple Silicon Mac. On a Mac the private mesh has + no build yet and colonies fall back to a loopback port. +- Colony images must be glibc-based: the Claude Code binary a colony runs is + mounted into it. + +[mem0]: https://mem0.ai +[#74]: https://github.com/Colonizer-dev/harness/pull/74 +[#75]: https://github.com/Colonizer-dev/harness/pull/75 +[#76]: https://github.com/Colonizer-dev/harness/pull/76 +[#77]: https://github.com/Colonizer-dev/harness/pull/77 +[#78]: https://github.com/Colonizer-dev/harness/pull/78 +[#79]: https://github.com/Colonizer-dev/harness/pull/79 +[#80]: https://github.com/Colonizer-dev/harness/pull/80 +[#82]: https://github.com/Colonizer-dev/harness/pull/82 +[#83]: https://github.com/Colonizer-dev/harness/pull/83 +[#97]: https://github.com/Colonizer-dev/harness/pull/97 +[#99]: https://github.com/Colonizer-dev/harness/pull/99 +[#104]: https://github.com/Colonizer-dev/harness/pull/104 +[#110]: https://github.com/Colonizer-dev/harness/pull/110 +[#111]: https://github.com/Colonizer-dev/harness/pull/111 +[#112]: https://github.com/Colonizer-dev/harness/pull/112 +[v0.1.4]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.4 +[v0.1.3]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.3 +[v0.1.2]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.2 +[v0.1.1]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.1 +[v0.1.0]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.0 diff --git a/README.md b/README.md index 7794236a..78716586 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,12 @@ protocol on stdio, so an agent module can be written in anything. --- +## What changed + +[CHANGELOG.md](CHANGELOG.md) covers every release, newest first, with the pull +request behind each line and anything that could cost work called out. The +mothership also tells you when a newer release is out, and can install it. + ## What's in the repository | Path | What it is | Status |