From 249c89b9c1b56c12a2e7fabb47c23163d7d29d54 Mon Sep 17 00:00:00 2001 From: Nick <40026523+Nick-CHI@users.noreply.github.com> Date: Fri, 18 Sep 2026 11:50:15 +0800 Subject: [PATCH] Add a changelog, and say where it is MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Five releases went out in a day with release notes that were install instructions and checksums. Useful for installing; useless for deciding whether to. Nothing said what changed between v0.1.0 and v0.1.4, and nothing said what has landed since. CHANGELOG.md covers every release newest first, grouped by what it would mean to someone running Colonizer rather than by commit order, with the pull request behind each line. Anything that could cost work — a colony, a worktree, a setting — is under "Take care" rather than left to be discovered. v0.1.0 is written as what the first release could do, not as its 62 commits. The Unreleased section is what is on main and not yet tagged, which is how a person finds out whether the thing they are waiting for has shipped. Note for whoever cuts the next release: the five existing tags point into the history from before it was rewritten, so none of them is an ancestor of main and `git describe --tags main` finds nothing. The trees are identical — the rewrite only changed commit messages — so re-pointing them at their twins on main would be exact, and would also let a build stamp the tag it came from instead of falling back to the crate version. --- CHANGELOG.md | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 6 ++ 2 files changed, 175 insertions(+) create mode 100644 CHANGELOG.md 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 |