Lian Wu is built on Pi, an open-source AI agent toolkit. Pi is what lets one conversation move between models from different providers, and new models usually reach Lian Wu through a Pi update.
Pi 1.5.1 reached npm just before midnight UTC on November 9. Lian Wu 0.3.3, with that update and nothing else, was on What's new on November 10, within one working day. Here's why that was a small job.
1. Pi's version lives in one place
The exact Pi version is pinned once, in the root package.json. Every other package follows that pin, and a check fails the build if anything resolves a different version or a second copy of Pi.
2. Branch from the release, not from development
The development branch had unreleased work. I branched from the released 0.3.2 instead, so 0.3.3 is 0.3.2 plus the Pi update. Nothing else could slip in.
3. Read the changelog for what reaches people
Pi 1.5.1 brought Claude Fable 5.2 into the Anthropic catalog, so it's available with an Anthropic API key. It also keeps eligible prompt caches warm between runs, and Anthropic sessions now send only new messages. That's what What's new needs to say. Internal changes don't belong there.
It also added one dependency, lovely-mermaid, for Mermaid diagrams. Lian Wu is closed source, so every new dependency gets a license check. This one is Apache-2.0, which is fine.
4. Contract tests, then the packaged app
All of Lian Wu's code reaches Pi through one gateway. Contract tests check what that gateway relies on against the installed Pi. When something changes, the failing test names the module that has to absorb it. One small patch for Pi's sign-in page is pinned to a Pi version, so it only needed its expected version moved. The checklist then builds, tests and checks the packaged app.
5. Sign, notarize, publish
The release goes out signed and notarized, and its What's new entry is published through the site's release API. Then the release branch merges back into development.
What I learned
Upgrading a runtime is boring when you make it boring on purpose: one pin, one gateway, tests that name the breakage, and a release cut from the last release. Then a new model ships as a hotfix within a day instead of waiting for the next feature release.