Commit Graph

2 Commits

Author SHA1 Message Date
Shaun Arman
9e3e3766e7 fix(build): resolve Windows MinGW memset_explicit linking error
Some checks failed
Test / frontend-tests (pull_request) Failing after 1m15s
Test / frontend-typecheck (pull_request) Successful in 1m57s
PR Review Automation / review (pull_request) Successful in 4m17s
Test / rust-fmt-check (pull_request) Successful in 13m32s
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
libsodium-sys requires memset_explicit which is not available in older
MinGW toolchains. Added a C shim that provides a fallback implementation
using volatile pointers to prevent compiler optimization.

Changes:
- Added memset_s_shim.c with fallback memset_explicit implementation
- Updated build.rs to compile shim for Windows GNU targets
- Added cc crate as build dependency
- Set CFLAGS in CI to target Windows 8+ (_WIN32_WINNT=0x0602)
- Set SODIUM_STATIC=yes to force static libsodium build

Fixes linking error: undefined reference to memset_explicit

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-13 23:36:54 -05:00
Shaun Arman
c5cacfd57d feat(ci): add beta release channel with two-track pipeline
Some checks failed
PR Review Automation / review (pull_request) Successful in 3m57s
Test / rust-tests (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
- Add release-beta.yml: triggers on push to beta, creates
  v{CARGO}-beta.N pre-release tags with prerelease: true, builds all
  four platforms; tag counter resets when Cargo.toml version bumps
- Add beta to test.yml push triggers so CI runs on direct pushes to
  beta (pull_request already covers PRs targeting beta)
- Implement update_channel in AppSettings (state.rs) with serde
  default "stable"; wire get/set_update_channel commands to AppState
  instead of returning hardcoded stubs
- Implement channel-aware check_app_updates: queries /releases?limit=20
  and picks first non-draft release matching the active channel
  (stable = !prerelease, beta = prerelease), skipping drafts
- Document two-channel strategy in docs/wiki/CICD-Pipeline.md

Manual steps still required in Gitea UI:
  1. Create beta branch from master
  2. Apply same branch protection rules as master to beta
  3. Set repo default PR target branch to beta
2026-06-13 17:59:36 -05:00