docs: introduce Beta/Stable two-channel branching workflow (#327)
把分支模型从「dev/main」改造为「Beta/正式版」双渠道,渠道语义直接由分支名承载: - `beta` — Beta 渠道(开发版),默认分支、集成缓冲区,所有 PR 一律打到这里。 Beta 包不推送给普通用户,只面向主动加入 Beta 渠道的用户。 - `main` — 正式版渠道(Stable),始终可发布。仅由维护者在双端冒烟测试通过后从 beta 合入;普通用户默认拿到的就是这条线。 文档与 CI 改动: - README.md / README.zh.md:把「Contributing workflow / 贡献流程」章节 改写为 Beta/正式版双渠道,含分支流向 ASCII 图、6 条核心规则, 以及「Beta 不溢出正式版」的隔离要求。 - CLAUDE.md:把 `### Branch & contribution workflow` 改名为 `### Branch & release-channel workflow`,明确「分支名=渠道名」。 - ci.yml:触发分支从 [main, dev] 改为 [main, beta]。 仓库侧已同步: - 远端 dev 分支已重命名为 beta(git push origin dev:beta + 删除旧 dev) - GitHub 仓库默认分支已切到 beta - release-tauri.yml 用 v*-tauri tag 触发,跟分支无关,发版机制不受影响 Beta 包的 opt-in 分发机制(per-channel updater endpoint + 设置页开关) 将在独立 PR 中接入。在它落地之前,所有 v*-tauri tag 都按正式版对待, 不要从 beta 分支直接打 tag。 Co-authored-by: baiqing <lbx12309@icloud.com>
This commit is contained in:
1 parent
0b8c7b4529
commit
2fe5f2e0d4
4 files changed
+86
-2
No files matched your search
@@ -208,6 +208,37 @@ Logs: `~/Library/Logs/OpenLess/openless.log` (macOS) / `%LOCALAPPDATA%\OpenLess\
|
||||
|
||||
**Windows build** — see [`openless-all/README.md`](openless-all/README.md) for MSVC vs GNU/MinGW routes.
|
||||
|
||||
## Contributing workflow
|
||||
|
||||
OpenLess uses a two-channel branching model.
|
||||
|
||||
- **`beta`** — the **Beta channel**. Default branch and integration buffer; all in-progress development lands here. Beta builds may exist but are **not pushed to regular users** — they only reach people who explicitly opt into the Beta channel.
|
||||
- **`main`** — the **Stable channel (正式版)**. Always-releasable. The build everyone gets by default.
|
||||
|
||||
```text
|
||||
your fork / topic branch
|
||||
│ (test locally on your target platform first)
|
||||
▼
|
||||
PR → beta ← AI review (one pass, advisory only)
|
||||
│ ← maintainer lightweight glance (scope, cross-module impact)
|
||||
▼
|
||||
merged into beta
|
||||
│ (periodically, after a two-platform smoke build)
|
||||
▼
|
||||
merged into main → tag `v<version>-tauri` → release CI → Stable users
|
||||
```
|
||||
|
||||
Rules of thumb:
|
||||
|
||||
- **Open PRs against `beta`, never against `main`.** GitHub already defaults the base branch to `beta` for new PRs.
|
||||
- **Verify the change on your target platform before opening the PR** — build green is necessary, manual verification is required.
|
||||
- **AI review runs once per PR and is advisory.** Don't loop on it. Apply your judgment.
|
||||
- **Keep AI rework rounds tight (1–2).** If a fix resists, ask a human or restart with fresh context — multi-round AI back-and-forth tends to do more harm than good here.
|
||||
- **Beta work must not leak to Stable.** `main` only receives merges from `beta`, performed by maintainers after a successful two-platform smoke build. No direct pushes to `main`.
|
||||
- **Stable releases are cut from `main`** by pushing a `v<version>-tauri` tag — see the maintainer release checklist below.
|
||||
|
||||
Beta release distribution (opt-in, not yet wired): Beta builds are intended for users who consciously join the Beta channel; the in-app updater currently treats every release as Stable, and a follow-up change will introduce per-channel updater endpoints + a Settings toggle.
|
||||
|
||||
## Credentials
|
||||
|
||||
Credentials live in the OS credential vault (service = `com.openless.app`): macOS Keychain, Windows Credential Manager, or Linux keyring. A legacy plaintext JSON file is read only as a migration source and removed after a successful vault write:
|
||||
|
||||
Reference in new issue
Block a user