Skip to content

feat: beta channel -- per-merge dogfood with pre-swap data safety (goal 0100) - #222

Merged
alicoding merged 1 commit into
mainfrom
beta-channel
Aug 18, 2026
Merged

feat: beta channel -- per-merge dogfood with pre-swap data safety (goal 0100)#222
alicoding merged 1 commit into
mainfrom
beta-channel

Conversation

@alicoding

Copy link
Copy Markdown
Owner

Every green merge to main now publishes a rolling beta pre-release (SemVer prerelease tags — the vendored updater's semver comparison makes a bare rolling tag structurally unrankable, caught by reading its source; one active beta at a time). Beta-stamped installs see Update now via the same digest-verified path as release.

Data safety (owner-mandated — the beta install runs on real data):

  • Pre-swap snapshot through an injected backup seam — the update ABORTS if the backup fails; nothing swaps without a restore point.
  • Version-change launch backup (covers the pull+rebuild path; upgrade or downgrade) with a live-sqlite-proven guard.
  • One shared asset-naming/SHA256SUMS contract script used by BOTH release and beta jobs — a channel is a feed pointer, never a format variant.
  • No schema changes: rollback = reinstall previous bundle, data still opens.

One-time first install (after this merges and the first beta publishes): download the zip → drag mill.app to Applications → first launch: System Settings → Privacy & Security → Open Anyway (ad-hoc signed, not notarized; or xattr -dr com.apple.quarantine /Applications/mill.app). Every merge after that is Settings → Updates → Update now.

Real end-to-end swap is the registered manual check (0082's class) — verify on the first published beta.

Goal: docs/goals/0100-beta-channel.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd

…nge backup guards (goal 0100)

Extends 0082's channel-aware updater with a third channel: a
beta-stamped build targets a rolling GitHub prerelease (SemVer-tagged
per build, since wails3/pkg/updater's TagName comparison ranks any
non-SemVer or non-increasing tag as never-newer) instead of the
release channel's /releases/latest. Owner-mandated data-safety
addendum: DownloadAndInstallUpdate now takes a backup through an
injected seam before every swap and aborts on failure, and a
launch-time version-stamp guard (backupsvc.SnapshotOnVersionChange)
covers the source-channel pull+rebuild path where no updater ever
runs. Release and beta assets now share one naming/checksum script
(scripts/package-macos-zip.sh) so the two channels can never drift.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
@alicoding
alicoding enabled auto-merge (squash) August 18, 2026 03:48
@alicoding
alicoding merged commit 0ff99a3 into main Aug 18, 2026
26 checks passed
@alicoding
alicoding deleted the beta-channel branch August 18, 2026 03:56
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