Repository navigation
ShiftAlarm v3.6.2 - 極致隱私純離線排班鬧鐘
⏰ ShiftAlarm v3.6.2 版本發布
專為輪班與排班人士量身打造的極致隱私、純離線、全功能排班日曆與精確鬧鐘應用程式。
✨ 本次版本更新亮點
🖥️ 版面:窄屏 + 系統大字體不再出黃黑間條(9 處)
- 頂部標題列:實測原先 320/360/390/412 四個寬度全部爆邊(依次溢 108/68/38/16px),因為標題係固定寬度 Row,AppBar 只畀到「總寬 − 按鈕 − 間距」嘅剩餘寬度。改為
Flexible+ 自動縮字 + 圖示化「導入」鍵(保住 48dp 觸控)。 - 日曆表頭:系統字體 1.3x 起會撐爆格,改為每行
Expanded平分,五檔字體下總高恆定。 - 班次編輯頁「月曆格即時預覽」:320px @1.3x 起直向溢出 93px。鎖定預覽格字級後,1.0/1.3/2.0x 三檔渲染完全一致。
- 另有「關於」對話框內容可滾動、權限自檢頁標題列、排班操作列、導入/二維碼對話框按鈕行共 6 處一併修好。
⚡ 啟動不再白屏
- 原先喺
runApp之前await鬧鐘對帳(幾百次 MethodChannel 來回),畫面全白等到對帳完先出。改為首幀之後才對帳,App 即刻見到畫面。
🛡️ 資料唔會再無端端蒸發
- 排班 JSON 被截斷、或者某一天嘅欄位型別錯咗:舊版會成份清空。依家逐條獨立容錯——壞嗰條略過,好嘅全部照載,並且備份原始字串,唔會覆寫用戶資料。
- 某個班次嘅時間欄係數字等型別問題,一樣只會略過嗰一個班次,唔再拖死整份配置。
- 口令碼由 v2 升 v3 帶
defId;舊碼仍然導得入,靠班次 code 反推原 id 搬排班,唔會對唔上。
📊 分享與統計的邊界修正
- 分享碼長度截斷改為 UTF-8 邊界安全:100 個 emoji 都唔會再切落半個字元中間。
- 兩個班次嘅 code 都係空、但時間唔同時,導入後仍然對得返正確班次。
- 統計加入日期守衛:
2026-02-30、2026-13-01呢類唔存在嘅日期,唔會再被當成 3 月 2 日/2027 年 1 月計入。 - CSV 導入改用引號狀態機:引號內嘅半形/全形逗號唔再被切開,
""正確還原成一個雙引號。
🔔 Android 鬧鐘對帳(幽靈鬧鐘清理)
-
新增
AlarmIdRegistry:開機與啟動時三通道對帳,清走「App 已經冇排、系統仲留低」嘅幽靈鬧鐘。 -
補上
USE_EXACT_ALARM權限:Android 14+ 新安裝唔再預授精確鬧鐘,舊版會令真鬧鐘完全唔響而 App 內零提示。(setAlarmClock其實冇豁免,之前低估咗嚴重性。) -
排程失敗時先入 keep 再排:Android 12/12L 用戶撤銷權限嗰陣,唔會令對帳永久失效、把舊排程清走。
-
時間解析失敗唔再 cancel 舊排程;已 dismiss 過嘅預告唔會再復活。
-
🧪 防線加厚:測試由 351 增至 491 項全綠(新增 140 項:版面全掃描 84 組「7 個介面 × 4 個寬度 × 3 個字體」、資料韌性、統計日期守衛、CSV 引號),
flutter analyze維持 28 項零新增。
Full Changelog: v3.6.1...v3.6.2