Skip to content

fix(updater): remove the Developer channel; document source installs for devs#84

Merged
dustenhubbard merged 1 commit into
mainfrom
fix/remove-developer-channel
Jul 21, 2026
Merged

fix(updater): remove the Developer channel; document source installs for devs#84
dustenhubbard merged 1 commit into
mainfrom
fix/remove-developer-channel

Conversation

@dustenhubbard

Copy link
Copy Markdown
Owner

Field incident: beta testers on pre-#66 builds (v1.21.0-beta-2 and earlier) were offered rolling dev builds, because their updaters rely on release ordering and the rolling release's recreate-on-push made it newest. Rolling release + tag already deleted (mitigation). This removes the channel:

  • UI back to two channels (Stable / Beta); stored developer configs remap gracefully to Beta (dialog opens on Beta, self-heals on save; no index shifts for other options).
  • release-prerelease CI job removed entirely; on: push: branches: [main] dropped (the build matrix on main existed only to feed the rolling release; tests still runs on every push, full installer coverage still runs on tags + manual dispatch).
  • ROLLING_TAG exclusion KEPT in the Beta branch as defense in depth, with the incident documented in a comment.
  • Docs: README/USER_GUIDE/CHANGELOG back to two channels + a proper 'from source (developers)' section: editable install + git pull, the in-app source-update path, and the --update/--switch CLI flags (verified against cli.py). This replaces the Developer channel's purpose.

Suite: 1232 passed, 5 pre-existing xfails.

🤖 Generated with Claude Code

…for devs

The "Developer" update channel selected a rolling latest-main build that CI
republished on every push under the fixed `prerelease` tag. Because that release
was recreated (delete+recreate) on every push, it defeated GitHub's release
ordering: beta testers on builds predating the Beta channel's ROLLING_TAG
exclusion (v1.21.0-beta-2 and earlier) were offered dev builds. The maintainer's
decision is to remove the channel; developers track main via a source install
instead of a per-commit installer rebuild.

Changes:
- updater.py: drop `developer` from UPDATE_CHANNELS (back to release/prerelease);
  remove the developer branch from pick_release. Add `developer`->`prerelease`
  to the channel remap map so any stored `developer` option (the maintainer's,
  at minimum) degrades gracefully to Beta -- it never errors and never lands on
  index 0 by accident. KEEP the ROLLING_TAG constant and the Beta branch's
  explicit rolling-tag exclusion as defense in depth (documented): it protects
  current clients if a rolling-style release ever reappears.
- all_options.py: remove the third "Developer" radio (two radios now); the
  positional radio<->channel contract stays in lockstep with UPDATE_CHANNELS.
- CI: remove the release-prerelease job, its concurrency group, and the
  rolling-release design comment block. Installers now build only for tags
  (dropped the `on: push: branches: [main]` trigger) -- building installers per
  main commit served only the removed rolling release, so it was pure waste; the
  pytest `tests` workflow still covers every main push, and tag/dispatch builds
  keep the frozen self-test coverage.
- Docs: README/USER_GUIDE/CHANGELOG/WHATS_NEW back to two channels; add a
  developer source-install section (clone + `pip install -e .` + `git pull`, and
  the `PyReconstruct --update`/`--switch` CLI path) that replaces the channel.
- Tests: update channel tests to the two-channel reality; keep/extend the
  legacy-remap (now incl. `developer`->prerelease) and rolling-tag-exclusion
  tests; add graceful-degradation coverage for a stored `developer` config.

Full suite: 1232 passed, 5 xfailed (QT_QPA_PLATFORM=offscreen).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dustenhubbard
dustenhubbard enabled auto-merge (squash) July 21, 2026 18:53
@dustenhubbard
dustenhubbard merged commit b11c352 into main Jul 21, 2026
1 check passed
@dustenhubbard
dustenhubbard deleted the fix/remove-developer-channel branch July 21, 2026 18:54
dustenhubbard added a commit that referenced this pull request Jul 23, 2026
…for devs (#84)

The "Developer" update channel selected a rolling latest-main build that CI
republished on every push under the fixed `prerelease` tag. Because that release
was recreated (delete+recreate) on every push, it defeated GitHub's release
ordering: beta testers on builds predating the Beta channel's ROLLING_TAG
exclusion (v1.21.0-beta-2 and earlier) were offered dev builds. The maintainer's
decision is to remove the channel; developers track main via a source install
instead of a per-commit installer rebuild.

Changes:
- updater.py: drop `developer` from UPDATE_CHANNELS (back to release/prerelease);
  remove the developer branch from pick_release. Add `developer`->`prerelease`
  to the channel remap map so any stored `developer` option (the maintainer's,
  at minimum) degrades gracefully to Beta -- it never errors and never lands on
  index 0 by accident. KEEP the ROLLING_TAG constant and the Beta branch's
  explicit rolling-tag exclusion as defense in depth (documented): it protects
  current clients if a rolling-style release ever reappears.
- all_options.py: remove the third "Developer" radio (two radios now); the
  positional radio<->channel contract stays in lockstep with UPDATE_CHANNELS.
- CI: remove the release-prerelease job, its concurrency group, and the
  rolling-release design comment block. Installers now build only for tags
  (dropped the `on: push: branches: [main]` trigger) -- building installers per
  main commit served only the removed rolling release, so it was pure waste; the
  pytest `tests` workflow still covers every main push, and tag/dispatch builds
  keep the frozen self-test coverage.
- Docs: README/USER_GUIDE/CHANGELOG/WHATS_NEW back to two channels; add a
  developer source-install section (clone + `pip install -e .` + `git pull`, and
  the `PyReconstruct --update`/`--switch` CLI path) that replaces the channel.
- Tests: update channel tests to the two-channel reality; keep/extend the
  legacy-remap (now incl. `developer`->prerelease) and rolling-tag-exclusion
  tests; add graceful-degradation coverage for a stored `developer` config.

Full suite: 1232 passed, 5 xfailed (QT_QPA_PLATFORM=offscreen).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant