Skip to content

feat(app): scaffold the app and split ci by project - #175

Merged
1morr merged 5 commits into
mainfrom
feat/app-skeleton
Sep 29, 2026
Merged

1morr merged 5 commits into
mainfrom
feat/app-skeleton

Conversation

@1morr

@1morr 1morr commented Sep 29, 2026

Copy link
Copy Markdown
Owner

內容

M1 PR 2:app/ 骨架與 CI 分流(.trellis/tasks/archive/2026-09/09-29-app-skeleton/prd.md)。

  • 新專案 app/:Flutter 3.47.5,dev/prod 兩個 flavor,default-flavor: dev。

    prod(與舊版相同,ADR 0008) dev(ADR 0015 §決定 8)
    Android applicationId com.personal.fmp com.personal.fmp.dev
    Windows AppUserModelID com.personal.fmp com.personal.fmp.dev
    單一實例 mutex Local\FMP_MainInstance Local\FMP_MainInstance-dev
  • 資料目錄(ADR 0009):

    • Windows 免安裝版改用程式旁的 userdata/,不用 data/,因為它和 Flutter 自己的 data/ 程式資源資料夾同名。擁有者已選定,ADR 0009 補了更正。
    • 開發版一旦解析到舊版正式資料的位置,就拒絕啟動。
  • 零聯網兩道防線(ADR 0015 §決定 3):

    • live tag 預設跳過;
    • HttpOverrides 讓建立真實 HttpClient 直接失敗。
    • 解除方式是 flutter test --run-skipped --tags live:flutter test 沒有 --preset,ADR 0015 已補更正。
  • CI:

    • dorny/paths-filter 依專案分流,舊 job 的步驟不變;
    • 新增 app job(format、analyze、test)與 CI Result 彙總 job。
  • app/AGENTS.md(繁中):寫身分表、零聯網、material_ui 的 import 路徑與驗證指令。根目錄 AGENTS.md 的地圖加上 app/。

  • Trellis 兩個本機 agent 檔:format 與 analyze 指令依 package 分流。

  • orca.yaml:加一行 flutter pub get --directory app。改動後 Orca 的信任會失效,要在 GUI 重新選 Always trust。

Windows flavor、material_ui、path_provider 等官方文件的出處:.trellis/tasks/archive/2026-09/09-29-app-skeleton/research/notes.md。

Review 指南

  • ci.yml:舊 job 只多了 needs/if。彙總 job 只接受 success/skipped。
  • 身分測試:
    • Windows 以 cmake -P 真的執行 app_identity.cmake;
    • Android 解析 build.gradle.kts,並附雙向變異案例。
  • 舊專案的程式、測試、release.yml 都沒動。根目錄 analysis_options.yaml 排除了 app/**:舊 CI 不會對 app/ 跑 pub get,不排除會誤報。

驗證

  • app/:
    • format、flutter analyze 都乾淨;
    • flutter test 39 過、1 跳過(live);
    • --run-skipped --tags live 被第二道防線擋下。
  • 舊專案在 Flutter 3.47.5:flutter analyze 乾淨,flutter test --exclude-tags live 1849 條全過。
  • 建置:Windows dev/prod、Android dev/prod debug APK。
  • 實機:
    • Windows:dev 與 prod 同時開,視窗「FMP Dev」「FMP」;同一 flavor 開第二次,第二個會讓位結束。
    • Android 模擬器:dev 版裝上並啟動。prod 版因為模擬器上已裝舊版 v1.11.0(同為 com.personal.fmp),被拒為降級,這證明兩者身分相同。
  • 合併後:protect-main ruleset 把 CI Result 設為必要檢查。

prod keeps the old identity (applicationId, AUMID, single-instance mutex)
so it upgrades the old install; dev differs in every item and refuses
the old app's data locations. Tests cannot reach the network.
@1morr
1morr merged commit dc7c479 into main Sep 29, 2026
6 checks passed
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