Skip to content

有備而來設計系統 v1.0 落地,並收公文匣 G2C 沙盒與實體卡開發流程 - #58

Merged
mashbean merged 17 commits into
mainfrom
codex/official-document-physical-card-dev
Sep 2, 2026
Merged

有備而來設計系統 v1.0 落地,並收公文匣 G2C 沙盒與實體卡開發流程#58
mashbean merged 17 commits into
mainfrom
codex/official-document-physical-card-dev

Conversation

@mashbean

@mashbean mashbean commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

這條分支帶回 main 的兩件事

1. 有備而來(Bonds)設計系統 v1.0(6 個 commit)

依 2026-09-01 全面 UI/UX 審計建立並落地。規範全文:docs/design-system.md;token 層:backupTW/BondsDesign.swift

  • tokens 與視覺(2c0ee17):AccentColor 落地靛色、判定卡統一 SF Symbol、皮夾卡片 accessibility、觸覺清單補齊、正式 app icon
  • 流程與入口(64f6f87):出示單一入口+自動分流、MyData 流程壓平、領卡成功時刻、疊卡保序攤開、發卡者離線名冊、詳情頁「管理」群組、公文匣兩層化與 cell API 現代化
  • 文案與治理(665ed66):文字牆改寫、稱謂/標點/自稱統一、CopyGuideTests 逐句守規則
  • 色盤與量測(e7a3163):Bonds.CardPalette、判定卡與卡面對比測試、AX5 走查
  • 死路收尾(d20f039):出示具名出口、deep link 安全著陸、查驗整併提案(docs/proposal-unified-checker.md,待拍板)
  • 淺色卡面決策記錄(84e933d)

2. 公文匣 G2C 沙盒與實體卡開發流程(11 個 commit)

fail-closed G2C delivery sandbox、PIN-safe 實體卡同意流程、官方交換位址簿證據邊界、同意證據生命週期強化、7-ELEVEN 取件條碼、皮夾解鎖 session 等(各 commit 自述)。

驗證

  • backupTWTests:1,561 tests / 164 suites 全綠(含新增 CopyGuideTests、TextContrastTests 擴充、GovernmentStackTests 改寫)
  • iPhone 14 實機逐輪安裝驗收;iPhone 17 Pro 模擬器深/淺色、AX5 特大字級、iPad mini 版面截圖驗證

合併後注意

repos/backupTW-iOS-verification-timing 的 release 線仍停在設計系統之前的 commit——合併後請讓它 rebase,否則從那裡出的實機安裝會蓋回舊設計。

🤖 Generated with Claude Code

mashbean and others added 17 commits September 1, 2026 01:45
依 2026-09-01 全面 UI/UX 審計建立的設計系統(docs/design-system.md)首輪落地。
為什麼:系統只覆蓋 4/35 個畫面,其餘畫面各自即興——主色同時是預設藍與
systemIndigo(AccentColor 空殼)、判定視覺有 emoji 與 SF Symbol 兩套語言、
信任狀態在兩頁戴相反紅綠燈(語意 bug)、觸覺只有單點、卡面內距同檔三種。

BondsDesign.swift 成為 token 唯一來源(色彩/字階/間距/圓角/陰影/動態/
觸覺);AccentColor 落地靛色並收斂全部藍靛散點;判定卡統一為 SF Symbol+
0.14 色底+spoken label;皮夾卡片補 accessibility(單一元素+custom actions);
「有證據才震」的觸覺清單補完整;正式 app icon(墨松綠盾形勾記,含產生器)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
為什麼:「出示」四入口分裂、MyData modal 疊四層、掃描器對拿錯的 QR 沉默、
成功與失敗共用同一顆 alert、空狀態與失敗態是死路、入口隨狀態搬家、疊卡展開
順序顛倒、保險箱疊卡看不到名稱、公文匣兩頁是文字牆與 legacy textLabel API。

出示合併為單一入口(掃描後依 payload 分流線上/離線,長按選單同路);MyData
壓平為 push 序列並修精靈的停用灰與導引條版面;領卡成功改為 haptic+回首頁+
announcement(失敗才 alert)+掃描中回饋;疊卡改 hero 置底保序攤開(Apple
Wallet 連續性);保險箱卡面標題移入露條;發卡者離線名冊(IssuerNameBook)讓
信任清單上的機關以名稱示人;詳情頁補「管理」(更新備份唯一入口+刪除);公文
匣兩頁兩層化並全面改用 UIListContentConfiguration;查驗方畫面補可讀寬度與
判定停泊播報;ZK 下載同意改全頁。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
為什麼:13 則超過 80 字的文字牆、「您」混入、11 則半形逗號、App 自稱三套、
bonds-tw 與 bonds.tw 並存、「確認」被當知悉鈕——規範寫在文件裡沒有測試守,
下一次 merge 就會流失。

文字牆改寫為「先講結論與代價」的一句話版(測試把關的關鍵片語保留);稱謂、
標點、自稱、服務名全面統一;新增 CopyGuideTests 逐句掃編譯後的 zh-Hant
資源(你/全形逗號/這個 App/bonds.tw/90 字預算,DEBUG 作業指示走具名
allowlist);docs/design-system.md 收錄規範全文與三輪實作紀錄。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
為什麼:卡面 45 處字面色散在檔內(含兩組近重複值:紙底 0xECEADB/0xE8E6D6、
髮線 α 0.22/0.20),規範 §9.1 要求收進單一色盤;對比測試只涵蓋 semantic
colors,判定卡 0.14 色底與卡面油墨這兩個自訂組合沒有量測在案。

Bonds.CardPalette 成為卡面字面色唯一住所(近重複值合併);TextContrastTests
新增判定卡三色 fill 於三種 grouped 底、兩種模式的 AA 量測,以及紙質卡與石墨
卡油墨的可讀性下限。AX5 特大字級走查通過(首頁/使用分頁換行不裁切)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
為什麼:QR-only 出示只能無限輪播、Back 是不成文的出口;deep link 進站會把
結果 alert 疊在 Settings modal 上;MyDataProfile 還殘兩處「Forget」直譯與
缺 .never 的 push 大標;查驗雙入口的真正合併需要協定變更、不該悄悄做。

出示輪播補「查驗方收到了——結束出示」具名出口;deep link 先收掉 Settings
(只有它是可安全收的家務 modal,進行中的精靈絕不動);MyDataProfile 補
.never 與「清除」詞彙、並記錄「不需重寫」的裁定(輸入列本該是原生
UITextField 嵌 cell);查驗單一入口寫成 docs/proposal-unified-checker.md
(協定欄位、安全檢核清單、三個拍板選項),留待決策。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
淺色模式下卡面維持原色、不出淺色變體(2026-09-02 使用者拍板)。規範 §9.1
原本寫成「刻意豁免」,現在是正式決定,不再列為待決事項。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mashbean
mashbean merged commit 276f5db into main Sep 2, 2026
1 check passed
mashbean pushed a commit that referenced this pull request Sep 5, 2026
main had already taken most of this branch's MyData work through #58, then
moved further: the Bonds design-system pass, and device defects reported
2026-09-02. Conflicts therefore resolve toward main almost everywhere, and
the exceptions are the six symbols main never had — `knownDocument`,
`repairGenericDisplayNames`, `keepsWebSessionOpenAfterImport`,
`MyDataWebImportSession`, `keepPersonalDocumentsOpen`, `savedCount` — which
carry this branch's two real features: resolving an official MyData filename
to a known document slot, and keeping one web session open to import several
completed files.

Both sides had independently fixed the same reported problem, that a stack of
vault cards showed nothing but identical lock icons. This branch gave each
card its own symbol; main moved the title into the visible top strip. Git
blended the two, which compiled on neither side, so WalletCardView and
WalletCardFactory take main's solution whole and `VaultCard.systemImage` goes.
The tests asserting the superseded geometry go with it.

One defect survives from this branch into main's code. main's rewrite of
`setStackExpanded` fixes doubled section headers by moving the interaction
unlock into `performBatchUpdates`' completion, but that completion never runs
when UIView animations are disabled, leaving the collection permanently
non-interactive. This branch guarded that case and tested it; main's rewrite
dropped both. main's approach is kept and the guard is restored on top.

Localizable.xcstrings is merged as JSON rather than by text hunks: main's
1350 keys plus this branch's 23, its retitle of 「財力/所得證明」 to
「個人所得資料」, and main's plain-language rewrites where both had touched a
string. The one key this branch deleted is kept, because main's
UserFacingError.swift still references it.

1602 tests in 168 suites pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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