Repository navigation
Releases
Web v2.8.7 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.7 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.7] - 2026-11-12
📱 修復手機端「錢包」與「明細」換頁後無法立即捲動問題,並支援非 HTTPS 區網預覽密碼驗證 (Web 端更新)
- 消除雙層滾動容器觸控手勢搶奪 (Scroll Latching Fix):
- 移除
App.vue中.app-main-content多餘的overflow-y: auto屬性,統一由window作為全域唯一垂直捲動容器。 - 將
src/style.css中body的overflow-x: hidden升級為html, body { overflow-x: clip },避免瀏覽器依 CSS 規範將body的overflow-y自動強制轉為auto而形成隱藏的第二層捲動容器。 - 移除
.pop-jelly-mild進場動畫的forwards屬性,解決換頁瞬間因translateY(16px)造成內層容器產生短暫垂直溢位、進而把手機第一次滑動手勢鎖死(Latch)在內層容器導致畫面滑不動的問題。
- 移除
- 帳戶選取器 (
AccountPicker.vue) 觸控手勢與橫向捲動優化:- 將
.acct-card的touch-action: pan-x修正為touch-action: manipulation,解決手機手指落點在帳戶卡片區域時垂直捲動(pan-y)被瀏覽器阻斷的問題。 - 重構
scrollToSelectedAccount,改為僅針對橫向容器.picker-scroll執行container.scrollTo({ left })定位,取代原先會連帶觸發並劫持全頁window垂直平滑滾動的scrollIntoView。
- 將
- 分頁切換捲動重設與被動監聽優化:
App.vue的setTab在切換至不同分頁時自動將頁面捲動位置重設回頂部(top: 0),中斷前一分頁殘留的手機慣性滾動,避免換頁後直接卡在新頁面底部。TransactionList.vue的scroll監聽補齊{ capture: true, passive: true },確保不阻塞行動端觸控合成執行緒。
- 非 HTTPS 區網預覽環境 SHA-256 密碼鎖相容性修復 (
useAppLock.ts):- 補齊標準純 JS SHA-256 演算法作為非安全環境(如區網 IP
http://10.x.x.x預覽,window.crypto.subtle為undefined)之 Fallback,解決區網 HTTP 預覽無法通過全域密碼驗證的問題,並消除建置時crypto外部化警告。
- 補齊標準純 JS SHA-256 演算法作為非安全環境(如區網 IP
Web v2.8.6 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.6 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.6] - 2026-10-19
📅 記帳日期本地時區偏差修復、Tab 切換自動校正與「回到今天」快捷鍵 (Web 端更新)
- 本地時間精準日期演算 (Local Date Precision & Anti-UTC Shift):
- 徹底解決原程式碼使用
new Date().toISOString().split('T')[0]導致在台灣等 UTC+8 地區於每日清晨(00:00~07:59)打開記帳時日期錯誤落在「昨天」的重大缺陷。 - 建立專屬日期工具模組
src/utils/date.ts,提供formatLocalDate、getTodayLocalDateString、getYesterdayLocalDateString、isDateToday與parseLocalDateToTimestamp,全站統一以使用者本地時區計算年月日。
- 徹底解決原程式碼使用
- 記帳頁籤切換與喚醒動態校正 (Active Tab & Visibility Sync):
- 表單常駐元件(
TransactionForm.vue)新增監聽activeTab,每次切換到記帳分頁且非指定補記日期時,全自動對齊至當前「今天」,徹底解決 App 放至隔天打開仍停留在昨天日期的痛點。 - 監聽
document.visibilitychange,手機從休眠、後台或螢幕解鎖切回 App 且未輸入金額時,自動校正日期至最新當天。 - 記帳送出成功後清空表單,一併將日期自動重設回今天,不殘留上一筆手動挑選的歷史日期。
- 表單常駐元件(
- UI 貼心體驗優化:軟萌「🐾 回到今天」果凍按鈕:
- 當使用者挑選非今天之歷史或未來日期時,記帳日期標籤右側自動彈性浮現可愛的「🐾 回到今天」按鈕(
.btn-reset-today),隨時可一鍵快速還原至今天。
- 當使用者挑選非今天之歷史或未來日期時,記帳日期標籤右側自動彈性浮現可愛的「🐾 回到今天」按鈕(
- 明細分組與編輯彈窗全面對齊:
- 修復
TransactionList.vue中「今天 🐾」與「昨天」標籤的比對邏輯,杜絕清晨時間標籤錯位問題。 - 修復
TransactionEditModal.vue編輯時的日期解析與寫入,避免清晨編輯交易時日期被誤改為前一天。
- 修復
- 單元測試套件全面通過 (13 個測試檔 / 全數 77 項測試 100% 通過):
- 新增
tests/dateUtil.test.ts單元測試,涵蓋各時段、跨日運算、字串與時間戳記解析,確保日期核心邏輯零退化。
- 新增
Web v2.8.5 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.5 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.5] - 2026-10-12
💳 信用卡出帳週期演算法修正、自訂帳單應繳金額、手動銷帳與扣款帳戶自動記憶綁定 (Web 端更新)
- 信用卡結帳週期出帳/繳款月份跨月演算修正 (Billing Cycle & Period Alignment):
- 修正信用卡帳單歸屬月份演算邏輯:依台灣信用卡實務,帳單月份對應持卡人收到帳單與繳款之月份。當結帳日為 27 號等月底結帳(或繳款日小於結帳日跨月)時,該期帳單於次月出帳與繳納,故 8/28 ~ 9/27 之消費精確歸屬為
10月帳單(2026-10),9/28 ~ 10/27 之消費歸屬為11月帳單(2026-11)。 - 看板頂部新增「週期起訖標籤」(如
週期 8/28 ~ 9/27),與每月繳款截止日並列,一眼看清刷卡消費起訖區間。
- 修正信用卡帳單歸屬月份演算邏輯:依台灣信用卡實務,帳單月份對應持卡人收到帳單與繳款之月份。當結帳日為 27 號等月底結帳(或繳款日小於結帳日跨月)時,該期帳單於次月出帳與繳納,故 8/28 ~ 9/27 之消費精確歸屬為
- 支援自訂帳單應繳金額與隨時還原 (Custom Bill Amount):
- 看板本期應繳總額旁新增專屬「✏️ 調整金額」膠囊按鈕,點擊喚起全站共用
AmountCalculator果凍計算機,可輸入銀行實體帳單的精確數字(例如加計利息或前期費用)。 - 自訂後自動標記「自訂」標籤,並提供「🔄 還原」按鈕可隨時一鍵還原回明細加總。
- 自訂金額持久化保存於卡片之
cardDetails.customBillAmounts,支援離線與多裝置同步。
- 看板本期應繳總額旁新增專屬「✏️ 調整金額」膠囊按鈕,點擊喚起全站共用
- 歷史無明細月份手動銷帳與已銷帳狀態自動比對 (Manual Settlement):
- 解決使用者甫開始記帳、前期(如 9 月)無明細導致金額為 0 無法銷帳之痛點。當本期無明細紀錄時,看板提供滿寬「💳 自訂金額手動銷帳 ➜」行動按鈕,可直接輸入銷帳金額並選擇帳戶扣款完成銷帳。
- 銷帳成功後銀行扣款、信用卡負債減少(可用額度恢復),看板自動比對繳清狀態並呈現亮綠色「✓ 本期已繳清銷帳」徽章,並保留「再次繳款 / 補繳」操作彈性。
- 信用卡銷帳帳戶自動記憶綁定 (Automatic Linked Bank Memory):
- 銷帳時選擇的扣款銀行或現金帳戶,系統自動記憶並持久化綁定至該信用卡的
cardDetails.linkedBankAccountId。 - 下次進入銷帳彈窗時自動預設選取該記憶帳戶,並顯示「✓ 已記憶綁定」狀態徽章與溫馨小字提示。
- 新增與編輯信用卡表單亦同步支援檢視與手動指定「預設扣繳/銷帳帳戶」,帳戶列表卡片同步呈現銷帳綁定帳戶名稱。
- 銷帳時選擇的扣款銀行或現金帳戶,系統自動記憶並持久化綁定至該信用卡的
- 單元測試套件全面補齊 (12 個測試檔 / 全數 70 項測試 100% 通過):
- 於
tests/installment.test.ts補齊結帳日 27 號跨月出帳週期推算、自訂帳單金額、歷史無明細手動銷帳,以及銷帳自動記憶綁定帳戶之單元測試,確保核心帳務零退化。
- 於
Web v2.8.4 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.4 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.4] - 2026-10-12
📅 日曆選擇器新增「跳到今天」一鍵快速定位功能 (Web 端更新)
- 日曆下拉面板底部新增「🐾 跳到今天」快速按鈕:
- 於全站共用日曆選擇器元件(
DatePicker.vue)下拉面板底部整合「🐾 跳到今天」操作按鈕,採用 Q 彈 Jelly 視覺風格(.btn-jelly、.dp-today-btn)與品牌奶油溫暖配色。 - 與「已選:YYYY/MM/DD」狀態標籤採左右平衡對齊排版,避免手機窄螢幕擠壓破版。
- 於全站共用日曆選擇器元件(
- 一鍵跳轉與自動收合體驗優化:
- 點擊按鈕即刻將年月日重設為當前日期並觸發
update:modelValue,同時自動關閉年/月選單與日曆面板,大幅提升補記歷史帳務後切換回今日記帳的操作效率。
- 點擊按鈕即刻將年月日重設為當前日期並觸發
Web v2.8.3 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.3 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.3] - 2026-10-07
📱 分類對應設定頂部動作列 RWD 自適應防溢出修復與文案精簡優化 (Web 端更新)
- 頂部工具列自適應排版與防溢出修復 (Actions Bar Responsive Layout):
- 修復分類預設帳戶綁定彈窗(
CategoryAccountMapModal.vue)在 Android 手機窄螢幕或大字體環境下,頂部動作工具列因按鈕過寬導致最右側「清空」按鈕被推到畫面外的問題。 - 容器啟用
flex-wrap: wrap防溢出保護,並將主要操作按鈕設為等寬flex: 1彈性延展,保持按鈕間距與視覺重心平衡。 - 新增
@media (max-width: 380px)小螢幕緊湊排版規則,自動縮減內距與文字大小,確保在極窄解析度(如 320px)下所有操作按鈕皆能完整呈現。
- 修復分類預設帳戶綁定彈窗(
- 動作列文案精簡與操作體驗提升:
- 按鈕標籤精簡優化:「新增自訂綁定」精簡為「新增綁定」;「從記帳歷史一鍵學習」精簡為「一鍵學習」(載入中顯示「分析中...」),保持介面呼吸感與乾淨視覺。
- 完整保留各按鈕原生 Tooltip(
title),提供清晰功能指示。
- 單元測試套件全面補齊與通過 (12 個測試檔 / 68 項測試):
- 補齊逗逗貓吉祥物情緒互動(
dodoCatMood.test.ts)、財務報表與分期跨月統計(analytics.test.ts)等單元測試,全面確保財務核心演算與離線優先相容性。
- 補齊逗逗貓吉祥物情緒互動(
Web v2.8.2 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.2 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.2] - 2026-10-07
🌐 統一 Web 與 Mobile 平台卡片自適應排版、刪除確認提示與單元測試套件擴充 (Web 端更新)
- 跨平台一致性體驗 (Unified Web & Mobile Adaptive Layout):
- 響應使用者反饋「在 Web 的頁面樣式不應該跟手機有不同,同樣頁面應該可以適應各平台」,徹底重構分類對應彈窗(
CategoryAccountMapModal.vue)之版面結構。 - 移除平台割裂的
desktop-only/mobile-only與小螢幕全螢幕強制覆寫,全端一律採用自適應上下雙層卡片結構(首行:分類 Emoji + 主分類 + ↳ 子分類標籤,右上角獨立刪除按鈕;次行:100% 滿寬帳戶下拉選單)。 - 無論在桌面寬螢幕、平板還是手機端,外觀、圓角、線框、間距與排版 100% 一致並自適應視窗。
- 響應使用者反饋「在 Web 的頁面樣式不應該跟手機有不同,同樣頁面應該可以適應各平台」,徹底重構分類對應彈窗(
- 刪除綁定防誤觸確認提示置頂保障:
- 將全域 Dialog(
CuteConfirmDialog.vue/CuteAlertDialog.vue)層級提升至z-index: 999999,點擊解除綁定垃圾桶時,可愛確認對話框確保置頂於所有彈窗本體最前方,提供明確二次確認防誤觸反饋。
- 將全域 Dialog(
- 後台服務測試環境相容性強化:
- 修復
MockDatabaseService中吉祥物個人檔案存取方法在 Node/Vitest 測試環境下缺少localStorage守衛的 ReferenceError,確保單元測試在各環境無縫執行。
- 修復
- 單元測試套件全面補齊:
- 補齊新增分類層級級聯更新(
categoryCascade.test.ts)、分期攤還演算法(installment.test.ts)、週期性記帳(recurring.test.ts)、使用者驗證與權限(useAuth.test.ts)等單元測試,已累計通過 59+ 項測試。
- 補齊新增分類層級級聯更新(
Web v2.8.1 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.1 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.1] - 2026-10-06
📱 分類預設帳戶綁定支援手機端雙行 RWD 適配、緊湊排版、全域確認提示修復與多裝置雲端即時同步 (Web 端更新)
- 多裝置雲端即時同步 (Multi-Device Real-time Sync):
- 核心模組
useAuth.ts加入雲端profiles集合的即時監聽(subscribeCollection),多台手機或電腦裝置在線時,任何一台設定或學習分類對應規則(categoryAccountMap),其他裝置秒級自動同步。 - 身分設定變更改為呼叫
updateDocument<UserProfile>原子合併寫入,防範多裝置同時在線覆蓋衝突。
- 核心模組
- 全域 Confirm / Alert Dialog 層級修復 (z-index 999999):
- 修復
CuteConfirmDialog.vue與CuteAlertDialog.vue的z-index至999999,徹底解決彈窗中點擊刪除按鈕時,確認視窗被遮擋在彈窗背後而導致「刪除按鈕看似沒反應」的 Bug。點擊刪除時正確彈出可愛確認提示。
- 修復
- 手機端雙行 RWD 結構與排版適配:
- 彈窗改為
<Teleport to="body">滿版置頂展示(z-index: 100000),徹底避免底欄露出版面或隨設定頁捲動。 - 手機窄螢幕下,規則卡片改為上下雙行結構(上行:分類標籤 + 垃圾桶刪除;下行:100% 滿寬帳戶下拉選單),徹底解決帳戶選單被擠壓變形、金額多行折行的問題。
- 工具列按鈕彈性折行,統計文字分行排版不裁切。
- 彈窗改為
- 卡片緊緻化與消除多餘間距:
- 移除項目卡片上全域
.card-jelly所帶來的margin-bottom: 20px多餘空白,卡片間距收緊為5px~6px,大幅提升資訊密度,一頁可瀏覽更多筆規則。
- 移除項目卡片上全域
Web v2.8.0 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.8.0 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.8.0] - 2026-10-06
🎯 推出「分類預設帳戶自動對應」智慧記憶與各成員獨立設定管理功能 (Web 端更新)
- 多成員獨立記憶機制 (Per-User Category-Account Mapping):
- 核心模組
useCategoryAccountMap.ts:每個成員身分(例如「我」vs「老婆」)切換後各自具備完全獨立的分類帳戶偏好記憶。我記錄「交通 > 捷運 ➔ 倫悠遊卡」,老婆記錄「交通 > 捷運 ➔ 逗悠遊卡」,雙方互不干擾。 - 雙層階層 Fallback 比對策略:選取分類時,系統優先比對「主分類 > 子分類」之特定規則;若該子分類未指定,則自動向下相容 Fallback 至「主分類」之通用帳戶。
- 安全與防呆機制:收入交易自動過濾排除信用卡;若帳戶已被刪除,則不會帶入無效之幽靈帳戶 ID。
- 核心模組
- 日常記帳無感自動切換與平滑捲動 (Smooth Scroll into View):
- 記帳表單(
TransactionForm.vue):點選主分類或子分類時,系統自動帶入上次使用帳戶,並於帳戶上方展示可愛的🎯 自動切換:[帳戶名]徽章微提示。 - 帳戶選取器(
AccountPicker.vue):當帳戶切換時,自動以scrollIntoView({ behavior: 'smooth', inline: 'center' })將選取卡片平滑滾動至視野中央,即使篩選隱藏亦能自動還原展開。 - 完全支援手動調整與即時學習:記帳時隨時允許使用者在帳戶選取器中自由手動挑選其他帳戶;當送出記帳時,系統自動將本次選擇學習更新至該成員的 mapping。
- 記帳表單(
- 設定中心新增獨立管理彈窗 (
CategoryAccountMapModal.vue):- 系統設定(
Settings.vue)新增「🎯 分類預設帳戶綁定」專屬設定卡片,即時展示當前已記憶的對應組數。 - 點擊「⚙️ 管理與設定對應 🐾」呼叫完整管理面板:
- 檢視與手動調整:清楚展示所有已記憶的分類、子分類與對應帳戶,每一列右側支援直接下拉更換帳戶。
- 對齊排版優化:每一列最右側的垃圾桶刪除按鈕 100% 垂直直線對齊,兼具視覺美感與防誤觸。
- 固定常駐統計列:頂部統計提示列獨立固定於滾動區上方,不隨下方規則清單捲動。
- 一鍵從歷史紀錄學習:提供「🔄 從記帳歷史一鍵學習」按鈕,全自動掃描過去記帳紀錄,按時間先後提煉出最新使用的帳戶並建立對應。
- 自訂新增與一鍵清空:支援手動新增自訂規則與清空全部規則(含二次確認保護)。
- 系統設定(
- 完善單元測試套件:
- 新增
tests/categoryAccountMap.test.ts,共 8 項針對性單元測試(涵蓋多成員隔離、層級 Fallback、歷史提煉、無效帳戶過濾、自動學習與手動 CRUD),全數 100% 通過。
- 新增
Web v2.7.3 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.7.3 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.7.3] - 2026-10-05
🔀 帳戶資金互轉支援多類別篩選(現金/銀行等)與一鍵快速對調 (Web 端更新)
- 來源與目的帳戶各自分類篩選標籤:
- 於「資金帳戶互轉」彈窗中的「來源帳戶 (扣款)」與「目的帳戶 (存款)」上方,配置獨立的微型手繪馬卡龍膠囊標籤列:
全部 ✨、現金 💵、銀行 🏦、信用卡 💳與票證 🎫。 - 智慧動態感知:自動遵循使用者的隱藏帳戶設定 (
hiddenAccountTypes),並僅動態顯示當前已建立的帳戶分類,杜絕空分類標籤。 - 切換自動選取與精準連動:切換分類時,若當前選取的帳戶不在該分類內,自動智慧切換為該分類的第一個帳戶;點開下拉選單(
AccountDropdown)時,選項亦自動限定於該分類帳戶。 - 空狀態防護:若特定分類下無可選帳戶,下拉選單自動呈現可愛的提示訊息。
- 於「資金帳戶互轉」彈窗中的「來源帳戶 (扣款)」與「目的帳戶 (存款)」上方,配置獨立的微型手繪馬卡龍膠囊標籤列:
- 一鍵快速對調帳戶 (Swap):
- 於來源與目的帳戶區間新增精巧的
⇅ 對調帳戶按鈕,點擊可秒級對調兩側帳戶與其分類標籤。
- 於來源與目的帳戶區間新增精巧的
- 極致 RWD 手機版體驗:
- 採用超輕量 22px 膠囊排版,彈窗無需滾動即可完整操作金額、手續費、備註與確認送出按鈕。
Web v2.7.2 - 逗逗貓網頁熱更新發布
🌸 Dodo Ledger 網頁端 v2.7.2 🌸
🐱 喵嗚!網頁版本全新發布囉!
此 Release 包含了專為 Android App 熱更新使用的網頁靜態壓縮包 app-update.zip。
Android App 在下次啟動時會默默下載此包並自動無感升級至最新網頁功能!
[Web 2.7.2] - 2026-10-04
🚪 全站彈窗統一支援點擊外部遮罩關閉,並落實多層彈窗事件隔離防護 (Web 端更新)
- 全站彈窗點擊外部遮罩關閉體驗一致化:
- 我的錢包(
AccountManager.vue):編輯帳戶、新增帳戶、資金帳戶互轉、一鍵還款、顯示類別設定等全部 5 個彈窗,全面補齊@click.self點擊外部關閉,並為新增與轉帳彈窗補齊右上角 X 關閉按鈕。 - 系統設定(
Settings.vue):密碼鎖設定/驗證彈窗支援點擊遮罩關閉。 - 記帳表單(
TransactionForm.vue):快速新增主/子分類彈窗補齊卡片事件攔截。 - 首頁大腦(
Dashboard.vue):成就徽章牆彈窗補齊卡片事件攔截。
- 我的錢包(
- 多層彈窗 (Nested Modals) 事件隔離與防誤關防護:
- 徹底解決彈窗內再開啟計算機抽屜時,點擊外部可能連帶觸發底層彈窗關閉的事件穿透 Bug。
- 在全站彈窗卡片與計算機面板全面掛載
@click.stop、@mousedown.stop與@touchstart.stop,確保無論點擊計算機以外區域或點擊彈窗內部,事件 100% 侷限在當前層級,多層彈窗彼此獨立關閉。