Skip to content

fix(desktop): BK T3 Code finds updates again - #273

Merged
bk-agent-01 merged 1 commit into
bkmainfrom
fix/bk-desktop-fixed-update-feed
Oct 5, 2026
Merged

bk-agent-01 merged 1 commit into
bkmainfrom
fix/bk-desktop-fixed-update-feed

Conversation

@bk-agent-01

Copy link
Copy Markdown
Collaborator

Problem

Installed BK T3 Code apps stopped finding updates. The app used electron-updater's GitHubProvider. That provider reads releases.atom, and this feed lists only the 10 newest releases. Stage and mobile builds share this repository (last week: 41 stage, 10 mobile, 5 production). So the feed showed no production build, and the app found no update. Today https://github.com/beknown-work/bkt3code/releases.atom lists 10 stage releases and 0 production releases. The repository rename is not the cause, because GitHub redirects the old name.

Fix

  • Each BK app reads its update from its own fixed release, bk-desktop-production or bk-desktop-staging, through the generic provider (scripts/build-desktop-artifact.ts, scripts/lib/bk-desktop-brand.ts).
  • After the dated release is public, publish-bk-desktop-dmg.ts uploads that build's manifest to the fixed release. The payload URLs in this copy are absolute, so they point into the dated release. The fixed release holds only this one small file.
  • useMultipleRangeRequest: false: GitHub answers multi-range requests with 501. Without this flag, each differential download falls back to the full 140 MB ZIP.
  • "Re-run failed jobs" after a failed feed step only repoints the feed. The feed never moves to an older version, because the apps allow downgrades. A feed upload error never tells the operator to delete the feed release.
  • The release repository constant is now iamtushar324/bkt3code.

Rollout

  • Apps that are already installed still use GitHubProvider. They update to the first build with this change while that build is among the 10 newest releases. After that, they read the fixed release.
  • An app that misses this window needs one manual install. A teammate prompt for this already exists.
  • stage has its own copies of these files and needs the same change in a separate PR.

Known gaps

  • In-app release notes are empty for generic-provider updates, because electron-builder writes no releaseNotes into the manifest.
  • An update check that runs during the manifest swap gets a 404 for a few seconds and tries again later.

Verification

  • vp test run passed for scripts/lib/bk-desktop-release.test.ts, scripts/bk-desktop-brand-overrides.test.ts, scripts/publish-bk-desktop-dmg.test.ts and scripts/lib/bk-desktop-brand.test.ts.
  • scripts typecheck passed.
  • An independent review checked the logic against the electron-updater 6.8.3 and 6.8.9 source.
  • The 19 build-desktop-artifact.test.ts failures on this Linux arm64 host are Windows sidecar tests that need native binaries. CI must confirm them.
  • Not verified: an update on a real Mac. The first bkmain build after merge is the end-to-end test.

Done by Claude Opus 5.5 in Claude Code (T3 Code).

🤖 Generated with Claude Code

…em feed

electron-updater's GitHubProvider reads releases.atom, which lists only the
ten newest releases. Stage and mobile builds share the repository and publish
many times a day, so production builds fell out of the feed and installed
BK T3 Code apps stopped finding updates.

Each BK app now uses the generic provider against its own fixed release
(bk-desktop-production / bk-desktop-staging). After each dated release is
public, the publisher uploads that build's manifest to the fixed release with
payload URLs made absolute into the dated release. Multi-range requests are
off, because GitHub answers them with 501. A re-run repoints the feed for an
already-published build, and the feed never moves to an older version.

Also moves the release repository constant to iamtushar324/bkt3code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Oct 5, 2026
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 13.6 KiB — 15.1 KiB ✅
Codex Thread snapshot wire — 7.2 KiB — 7.8 KiB ✅
Codex Live turn WebSocket wire — 6.5 KiB — 7.8 KiB ✅
Codex Live turn WebSocket decoded — 56.3 KiB — 66.4 KiB ✅
Codex Live turn messages — 9 — 21 ✅
Claude Total thread wire — 13.7 KiB — 15.1 KiB ✅
Claude Thread snapshot wire — 7.2 KiB — 7.8 KiB ✅
Claude Live turn WebSocket wire — 6.5 KiB — 7.8 KiB ✅
Claude Live turn WebSocket decoded — 57.1 KiB — 66.4 KiB ✅
Claude Live turn messages — 9 — 21 ✅

Baseline: unavailable · PR result: bd53e1d · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 114.6 KiB
  • Claude decoded thread snapshot: 115.3 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@bk-agent-01
bk-agent-01 merged commit b9c84f6 into bkmain Oct 5, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant