Follow upstream to BootAgent v0.6.0 - #30
Merged
Merged
Conversation
Upstream renamed itself and shipped v0.6.0, which unblocked every group the
rename plan was holding. Landing them together because they are coupled by
that release: switching the feed without the asset fix below would publish a
download page offering Windows an OTA update payload.
Release feed and asset matching
- Point the feed at MaimoryLab/BootAgent. The slug now exists, so this is
no longer a link to nothing.
- Exclude `ota-*` assets. They are update payloads, and they satisfied every
other rule here — platform, arch, `.zip` — so they were being offered as
first-install downloads. On v0.6.0 that made Windows advertise an OTA
package, because the real installers are `-installer.exe` and never
matched at all.
- Match a trailing word after the arch, so `-installer.exe` is seen.
- Choose among several formats for one platform-arch by a stated preference
(native installer first, archive last) rather than by feed order. macOS was
picking `.dmg` over `.zip` on alphabetical luck; renaming an asset so the
archive sorted first would have silently switched every macOS visitor to a
zip. Emit one target per platform-arch, since callers resolve with `.find()`.
- Add linux-arm64, which upstream now builds. Without it the asset was
matched and then dropped, hiding a build that exists.
Closes #28.
Home directory
- `~/.oneagent/` becomes `~/.bootagent/` in all ten places. The released
binary creates the new path, so the docs are no longer describing a
directory that will not be there.
- 06-upgrade.md gains what the migration actually does, in both locales. It
is not a one-line reassurance: the copy excludes `runtimes/`, so managed
Node, uv and installed Agents have to be reinstalled, and the old tree is
retained as `.oneagent-migrated-<timestamp>` for the user to delete. Read
from upstream's internal/app/migration.go rather than assumed.
Vendored catalog, re-copied from v0.6.0 rather than hand-edited
- `oneagent_version` is now `bootagent_version`, and aider's config_path
moved, both arriving from the copy as the refresh procedure intends.
- Brings kimi-code, and DeepSeek and Moonshot as providers: 47 pages to 50.
- Moonshot introduced two protocol statuses the site had never seen.
`not-supported` had no label. `route-present-unverified` had none either,
and worse, fell through to the unsupported verdict — printing 不支持
against a provider that publishes the route, which is a stronger claim
than the data. It now reads as the same kind of gate as
release-candidate-required.
- The provider page's status note was a ternary whose else branch asserted
the protocol was implemented. True for the two statuses that existed when
it was written; false the moment `not-supported` arrived. Keyed by status
now.
The e2e assertion for "this platform is not published yet" is removed rather
than repointed. It decayed twice the same way — first windows-x64, then
linux-x64 — by asserting that a platform upstream had not reached yet had no
download. Every target now has an asset, so the state is unreachable from the
live feed; release-channel.test.ts covers it against a stubbed one.
Verified: 100 unit tests, 50 pages through astro check and validate-build,
213 e2e with an authenticated feed. Four visual baselines regenerated for the
migrated path on the review screen — checked per-pixel: 239 pixels of text at
y=438-448 and 9 at the window corner, no layout shift.
Every group is done, so a document organised around what is blocked no longer describes anything. Rewritten as what happened, what was deliberately left alone, and what is still open — roughly half the length. Keeps the parts that are not re-derivable from the diff: why MaimoryLab, the changelog history, the screenshot provenance strings and the oneagent-theme storage key were each left as they are, and why the v0.3.0 test fixtures still carry the old asset names. Records the two checks that passed while no longer proving anything, since that is the reusable lesson and the checklist it produced now sits beside this file. Notes the domain as the one thing this repository cannot fix: Pages points at bootagent.ai, whose DNS still resolves to a registrar parking page, so no URL currently serves the site.
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.
Upstream renamed itself and published
v0.6.0, which unblocked everything therename plan was holding. These land together because they are coupled by that
release: switching the feed without the asset fix would publish a download page
offering Windows an OTA update payload.
Closes #28.
The download page was about to get worse
v0.6.0changed the shape of the asset set, not just the prefix. It ships nativeinstallers instead of archives, Linux for the first time, and
ota-*updatepayloads beside the installers. Against the old matcher that produced:
BootAgent-darwin-*.dmgota-BootAgent-windows-*.zipBootAgent-windows-*-installer.exeBootAgent-linux-amd64.AppImagelinux-arm64The Windows column is the problem: the real installers are
-installer.exe, andthe pattern anchored the arch to the extension, so they never matched. The OTA
payload satisfied every other rule — platform, arch,
.zip— so it won bydefault. An update payload is not a first install.
Four changes, each with a test that fails without it:
ota-*by name.-installer.exeis seen.last) rather than by feed order, and emit one target per platform-arch since
callers resolve with
.find(). macOS was picking.dmgover.ziponalphabetical luck; renaming an asset so the archive sorted first would have
silently switched every macOS visitor to a zip. One of the new tests reverses the
feed and asserts the answer does not change — that is the assertion that would
have caught this originally.
linux-arm64, which upstream now builds. Without an entry the asset wasmatched and then discarded, hiding a build that exists.
~/.oneagent/→~/.bootagent/The released binary now creates the new path, so the docs can name it. All ten
sites updated, including the
aider --env-filecommand a reader pastes into ashell.
06-upgrade.mdgains what the migration actually does, in both locales. This isnot a one-line reassurance — read from upstream's
internal/app/migration.go:runtimes/;~/.oneagent-migrated-<timestamp>for the user to delete.So managed Node, uv and installed agents have to be reinstalled. Configuration
survives; executables do not. A reader who is not told that will think the upgrade
was lossless and then find their agents missing.
Catalog refresh surfaced two latent bugs
Re-copied from the
v0.6.0tag perdata/README.mdrather than hand-edited, whichis how
bootagent_versionand aider'sconfig_patharrive correctly instead ofbeing guessed. Brings
kimi-code, plus DeepSeek and Moonshot as providers — 47pages to 50.
Moonshot introduced two protocol statuses the site had never seen, and both broke
something that was correct for the values that existed when it was written:
route-present-unverifiedhad no label and fell through to the unsupportedverdict, which would have printed 不支持 against a provider that publishes the
route — a stronger claim than the data supports, and exactly the distinction
release-candidate-requiredis already carved out to avoid.protocol was implemented. False the moment
not-supportedarrived. Keyed bystatus now.
A decayed e2e assertion, removed rather than repointed
site.spec.tsasserted the "this platform is not published yet" state, firstagainst
windows-x64and then againstlinux-x64. Both decayed the same way:upstream shipped the platform and the test was left checking that a working
download was absent. Every target now has an asset, so the state is unreachable
from the live feed.
release-channel.test.tsalready covers it against a stubbedfeed, which does not depend on what upstream happens to ship.
Verification
100 unit tests, 50 pages through
astro checkandvalidate-build.mjs, 213 e2ewith an authenticated feed.
Four visual baselines regenerated for the migrated path on the review screen.
Checked per-pixel rather than trusting the tolerance: 239 pixels of text at
y=438-448and 9 at the window corner, no layout shift. Worth knowing that thesebaselines do not fail on small text changes — the delta fits under
maxDiffPixels, which is sized for the window edge.Also
export GITHUB_TOKEN="$(gh auth token)"before running e2e locally, or thedownload-page tests skip once the rate limit is spent and the run reports a green
198 instead of 213.
Not in this PR
bootagent.aidoes not serve the site. Pages is configured for it but itsDNS resolves to a registrar parking page rather than GitHub Pages; the old domain
404s because Pages no longer claims it, and the
github.ioURL 301-redirects tothe parking page. There is currently no working URL. Needs DNS access this
repository does not have.
dialogs naming the old product.