Files
iboard/README.md
T

3.9 KiB

iBoard

跨平台个人看板 (Tauri + React + Express + MariaDB)。版本方案见下文「版本方案 (V0.2)」。


版本方案 (V0.2) — 整理稿 (2026-10-25, 待评审)

本节是版本管理口径的整理与约定草案;标注 ⚠️ 的条目为待确认问题,确认后据此落地代码。

1. 版本号构成

V MAJOR.MINOR.PATCH  例: V0.2.0
       │      └── PATCH  小版本号 (当前未启用, 见 §4)
       └── MINOR  大版本迭代, 对应一个开发分支 (V0.2 ↔ dev-0.2)
  • 程序版本 (APP_VERSION): 唯一管理点是 package.json 的 version 字段, 手动修改; 前端经 src/version.js 读取。
  • build (构建时间戳): 每次 vite 编译生成 __BUILD_ID__, 格式 YYYYMMDDHHmmss (固定北京时间, 见 vite.config.js#makeBuildId)。展示格式统一为 v0.2.0 · build 20261025204300。
  • 外壳版本 (Android 壳): 独立管理, 管理点在 src-tauri/tauri.conf.json 的 version (当前 0.2.0; 生成 APK 的 versionName)。CI 已有四处版本一致性校验 (scripts/ci/check-version.mjs)。
    • ⚠️ 待确认 A: 外壳与前端版本号当前同为 0.2.0, 但二者生命周期不同 (外壳随 APK 发版, 前端随 OTA 高频发版)。是否解除 check-version.mjs 里二者必须相等的约束, 改为只校验格式?

2. 版本 ↔ 分支映射

版本 开发分支 发布出口
V0.2.x dev-0.2 master (push 触发 docker-build: 服务镜像 + OTA)
外壳 APK android-* 分支 push 触发 Gitea Generic Package Registry
  • ⚠️ 待确认 B: 当前 CI 口径 (2026-10 调整) 是「只有 master push 部署; dev-* 只做 CI 校验不部署」。按"V0.2 对应 dev-0.2"的说法, 确认口径为: dev-0.2 上开发合并, 发布一律走 master; 还是希望 dev-0.2 也能直接出 OTA?

3. OTA 版本号

  • OTA 包 version = 程序版本 + -ota 标记, 即 0.2.0-ota, 始终与程序版本保持一致 (已实现, scripts/build-ota.mjs)。
  • OTA 包另带:
    • sequence: 构建时刻的 Unix 毫秒时间戳 (单调递增, 判新用);
    • build_id: seq-<sequence>;
    • commit: 触发构建的 git commit sha;
    • notes: commit message (标题+正文, ≤400 字)。
  • 判新口径: 生产 = 版本号比较; 开发者开关 = sequence 比较 ("我的"页)。

4. PATCH 小版本号 (待落地)

现状: 第三位 PATCH 一直是 0, 没有实际使用。需要一个记录处。提案:

  • 在本仓库根目录建 CHANGELOG.md, 按 PATCH 记行: patch 号 / 日期 / commit / 要点。
  • 发版 (每次合并到 master 产生新 OTA) 时手动将 package.json version 的 PATCH +1 并补一行 CHANGELOG。
  • ⚠️ 待确认 C: 是否按"每次 master 发版 PATCH 必 +1"执行? 还是 PATCH 仅在有用户可感知变更时手动递增? 记录用 CHANGELOG.md 还是仓库内其他位置?

5. "我的"页版本展示 (待修复)

行 展示 现状
当前版本 v0.2.0 · build 20261025204300 ⚠️ 上一轮改坏: 误把前端 BUILD_ID 当毫秒时间戳格式化, 显示成了错误日期; 恢复为与页面底部 v0.2.0 · build xxx 完全一致的样式
运行资源 OTA 覆盖包版本 / 内置 —
新版本 v0.2.0-ota · <构建时间> 构建时间来自 sequence (毫秒), 展示 MM-dd HH:mm
发布说明 commit message —
提交 commit sha 前 10 位 —
外壳版本 v0.2.0 ⚠️ 待确认 D: 计划经 @tauri-apps/api/app#getVersion() 读取外壳版本显示 (Web 端显示 —); 放在 OTA 列表「运行资源」下方, 是否可以?
  • ⚠️ 待确认 E: 前端 BUILD_ID (YYYYMMDDHHmmss) 与 OTA sequence (Unix ms) 是两套时间戳。是否统一为同一来源 (建议都改为 seq-<Unix ms>, 展示层再格式化)? 统一可消除两处格式分叉, 但会改变底部 build 的现有样式。