Repository navigation
Write the 1.0.0 changelog from the code - #1066
Draft
jerelvelarde wants to merge 6 commits into
Draft
jerelvelarde wants to merge 6 commits into
jerelvelarde wants to merge 6 commits into
Conversation
The Pro pixel kite picked for OpenBot 1.0, drawn by kite-draw.ts to the mascot spec's numbers (Filled, pixel eyes, a face only at contact): a pure function of time and a per-Bot seed, put on canvas by Kite, BotKite and OpenBotKite. Every kite that animates shares one frame loop; a resting kite draws once. It honours reduced motion and dark mode, holds still at 32 px and under (only the status square moves), and shows no face under 22 px. A Bot's state comes from what main already knows: the roster's attention counts (waiting, error, paused as sleeping, a reply to read as done), a turn in flight for the conversation's kite, and a busy conversation in the sidebar. Each Bot keeps its orb's colour slot (the same FNV-1a hash) and gets a sail pattern from the hash's next bits. OpenBot's own mark everywhere is the violet kite, including the skins' frames and the OpenBot for Business icon. Removes AgentOrb, BotOrb, ai-core, orb-palette and the orb logo PNG; renames botLook "orb" to "kite".
…r state A Bot's page drew its kite idle until the attention counts arrived, even when its lifecycle already said paused. The roster and the page now each have a test that reads the state every kite is drawn in.
…ilm use The product's kite is violet quarters on the site, in the film and in the favicon. The app drew it with a plain sail; the sign-in, onboarding, New Bot, skins' frames and the OpenBot for Business icon now match.
…inct Release Notes and Research Desk share the orb's plum, and the bits after the colour gave them the same top sail too. Bits 16 to 18 give all fifteen Bots in the examples a livery of their own, and a test now holds that.
…t's own kite From review of this branch: - A resting kite asks for no frames, so a zoom or a move to another screen left it at the old resolution. It now redraws when devicePixelRatio changes. - One Bot in 64 landed on violet quarters, OpenBot's own kite. That Bot takes the next sail and keeps its colour; none of the examples' Bots change. - Kites draw in a layout effect, so a newly mounted one is never shown as an empty frame. - A kite at 32 px and under draws at most about thirty frames a second while its square moves. - The changelog said every Bot keeps its colour. It keeps its place in the palette; the palette is the brand's, so the teal slot becomes graphite and the sky slot teal.
Rebuilt from each change since v0.3.1 (CopilotKit#1032, CopilotKit#1049, CopilotKit#1050, CopilotKit#1052, CopilotKit#1053, CopilotKit#1047, CopilotKit#1054, CopilotKit#1056, against its diff. Entries are kept where the code proves them, rewritten where they overstated or understated, and added for CopilotKit#1049, CopilotKit#1052, CopilotKit#1053 and CopilotKit#1057, which had none. CopilotKit#1025 changes only the README and has no entry. Before upgrading names what changes for an existing deployment: OpenBot Desktop becoming the personal edition, the personal package's tenant id moving from personal to openbot (a personal edition on examples/personal stops at start until its package row is renamed), every Bot getting every skill once in the personal edition, the bundled Intelligence's PostgreSQL restart and Learning queue Job deadline, the Learning model moving to config.learning.model, and the analytics context the new CopilotKit runtime forwards. No migration lands: the database stays at 0077_channel_opening.
jerelvelarde
force-pushed
the
jerel/changelog-1.0.0
branch
from
November 6, 2026 23:27
6083d7d to
14c200f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The problem
## Unreleasedis the release notes, anddocs/releasing.mdtrusts none of it as written: before a cut, every change since the last tag is checked against its diff and the section is rewritten from what the code shows. 1.0.0 is cut by running Create release PR withmajor, which promotes## Unreleasedto## 1.0.0exactly as it stands. Since v0.3.1, fifteen PRs have landed, and #1065 (the kite) is about to.As written, four of those fifteen had no entry. Several over- or understated what changes for an existing deployment. And one, #1055, renames a tenant id in a way that stops an existing personal edition from starting, with nothing in the notes to say so.
The approach
This rebuilds
## Unreleasedthe way #1045 did for 0.3.1. Every change sincev0.3.1(47cc61d and before), plus #1065, is checked against its diff. An entry stays only where the code proves it, gets rewritten where it misstates the change, and is added where nothing mentioned one. #1049, #1052, #1053 and #1057 gain entries. #1025 changes only the README, so it has none. #1061 and #1062 become one section. #1047 splits into the Intelligence rc.7 changes and the CopilotKit runtime changes.Before upgrading comes first, as in 0.3.1. There are no migrations: the newest file in
server/drizzle/is still0077_channel_opening, and #1056's Learning queue Job runs in the bundled Intelligence's own PostgreSQL, which the notes now say. Six things change for an existing deployment. OpenBot Desktop becomes the personal edition on its next Start, with what that turns off, and the tenant id moves (both #1055). Every Bot gets every skill once in the personal edition (#1032). A Helm upgrade replaces the bundled Intelligence's PostgreSQL pod, and the Learning queue Job's longer deadline is lost under--reuse-values(#1047, #1056). The Learning model moves toconfig.learning.model(#1051). With telemetry on, the new CopilotKit runtime forwards each run's analytics context (#1047).The tenant id is the one to read before cutting. #1055 changed
examples/personal/brand.yaml's tenant id frompersonaltoopenbot, so a Desktop install keeps its Bots when it switches packages. A personal edition already running onexamples/personalstill has the Personal Assistant owned by the package under the old id. On this release the package sync refuses to adopt it, and the server stops at start withTenant package agent "personal-assistant" collides with a user-created agent. This was reproduced on a scratch Postgres by syncing v0.3.1's package and then this one. The notes give the one-lineUPDATEthat renames the package row; it was tested. Desktop, moving from fintech to personal, syncs fine. Fixing this in code before the cut is the better outcome, and if that happens, that bullet should go.Only
CHANGELOG.mdchanges.package.json, the chart and the Cargo files are left alone: the release action writes them, and it refuses to run whenpackage.jsonnames a version that was never tagged.What is not covered
openbotand apersonalpackage row would hit the unique constraint on the rename. The notes don't cover that case.release-policy.jsonisn't here. As 8d0ea17 did for 0.3.1, it's a commit on the release PR the action opens; the draft is under Merge notes.Verification
bun run format:check: clean.bun test scripts/release-prepare.test.ts scripts/release-version.test.ts: 29 pass, 0 fail.bun scripts/release-prepare.ts major stableon a scratch copy of the release files printedversion=1.0.0andbase=main. It promoted Unreleased to## 1.0.0under a fresh empty Unreleased, and movedpackage.json, the chart's appVersion and both Cargo files to 1.0.0.VERSION=v1.0.0 bun scripts/release-manifest.ts --validate-policydescribes v1.0.0, andtests/release-policy.test.tspasses 18 of 18.Merge notes
This is stacked on #1065. Its own change is the last commit: compare. Merge #1065 first. Anything else that lands on
mainbefore the cut needs its entry checked the same way.After this merges, run Create release PR from
mainwithbump: majorandkind: stable. Then add thisrelease-policy.jsonto the PR the action opens. It lists both v0.3.0 and v0.3.1, because Desktop refuses to move an install whose release isn't listed, and a Mac app still on 0.3.0 goes straight to Latest. Both releases end at0077_channel_opening.{ "$schema": "./shared/release-policy.schema.json", "version": "v1.0.0", "compatibility": { "launcherApi": 1, "configSchema": 1, "extensionApi": 1, "database": { "from": ["0077_channel_opening"], "to": "0077_channel_opening", "rollbackCompatible": false }, "intelligenceCapabilities": [] }, "upgrade": { "fromVersions": ["v0.3.0", "v0.3.1"], "requiresDowntime": true, "recovery": "restore-backup" } }Changelog