這是「輕鬆記帳」應用程式的現代化版本,採用最新的前端技術重新打造,旨在提供更美觀、更易用、更穩健的記帳體驗。

📋 查看完整更新日誌 - 了解所有版本的詳細更新內容
現代化 UI: 採用 Tailwind CSS 打造的簡潔美觀介面,並使用漸層背景增添視覺層次。
深淺色模式自動切換與外觀管理: 支援跟隨系統(prefers-color-scheme)自動即時切換深淺色外觀,並提供「跟隨系統」、「淺色」、「深色」三態等寬切換器,自動同步手機頂部狀態列色彩(meta theme-color)。
響應式設計: 完美適配手機、平板和桌面裝置,確保在不同裝置上都有一致且良好的視覺體驗。
流暢動畫: 豐富的互動動畫提升使用體驗,例如分類按鈕的選中效果、滑動切換頁面等。
圖標顯示與顏色: 整合 Font Awesome 6,所有圖標風格統一且清晰。分類按鈕支援自定義顏色,並有明確的選中狀態視覺回饋。
AI 離線語音記帳助手: 整合端側 58M LLM (WASM/[email protected]) 進行免連網語意 Tool Calling 解析,支援真實 GGUF 模型下載與 OPFS 離線快取,具備前端語意守門(applySemanticGuardrail)校準機制防止「花了100元」消費誤判為收入,輸入口述中文自動擷取金額、收支類型、動態分類、帳戶與日期,並搭配高質感霧面玻璃、圓角與 Gemini 彩虹霓虹動態光罩,並提供離線規則引擎作為模型未就緒時的優雅降級機制。
資料視覺化: 使用 Chart.js 提供圓餅圖(支出分類)和水位圖(預算管理),讓使用者能直觀地分析收支狀況。
智能統計: 多維度收支分析和分類統計,首頁快速統計功能移至最上方,方便用戶快速概覽。
記錄管理與類別篩選: 完整的增刪改查功能,明細頁類別篩選彈窗遵循會計學總額原則分離「支出類別」與「收入類別」,支援獨立計算與精準篩選其他收支,並提供全選/取消全選切換;同日記錄顯示更清晰。
行事曆金流檢視與 Android 桌面 Widget: 收支分析頁提供直觀的月曆收支分佈視圖,顯示每日 Top 3 支出分類標籤與金額,並可點擊彈出當日交易明細 Modal;Android 平台同步支援桌面行事曆 Widget,免開 App 即刻概覽當月每日收支事實。
真實信用卡分期與智能攤提: 支援真實信用卡分期(刷卡當下全額入帳佔額度、每月自動產生「扣款帳戶支出 + 信用卡收入」轉帳對還款與額度釋放),整合精準的攤提/分期引擎,自動處理四捨五入尾款與末期差額,支援智能溢繳防護、佔用額度追蹤與編輯防護。
首屏 0 第三方 CDN 與極致離線化: 全站資源(Tailwind CSS、Font Awesome、Google Fonts woff2、QRCode.js、html5-qrcode)改由本地打包,Google SDK 採登入/同步時按需載入,搭配 Service Worker 預快取清單 (precachemanifest.json) 與即時離線狀態提示列,實現 100% 離線可用。
明細搜尋: 明細頁面新增搜尋欄位,可依備註內容或交易金額即時篩選記錄。
帳戶餘額調整與可用額度: 帳戶管理頁面新增「平衡」按鈕,輸入實際餘額後自動計算差額,並可選擇自動建立「平帳」調整紀錄以維持帳目正確;信用卡帳戶即時計算並顯示欠款、總額度與可用額度。
每月預算設定: 可設定每月支出預算,水位圖動態顯示預算使用情況,並有超支警告。支援勾選特定支出分類進行「預算排除」,該分類實際消費不計入全局預算統計。
自定義分類: 完整的分類管理功能,可新增自定義分類、選擇圖示和顏色,並與預設分類無縫整合。
多帳本分類獨立化: 自訂分類設定(包含分類、排序與隱藏)由原本全域共享重構為隨帳本獨立儲存。切換帳本時會自動重新載入該帳本專屬的分類設定。
信用卡智慧管理、即時消費/出帳明細分離與扣繳平帳: 支援信用卡類型帳戶,可自訂信用額度、出帳日與繳款日。首頁雙列清晰區分「準備繳納(已出帳)」與「即時消費(未出帳)」,並提供專屬帳務明細彈窗折疊檢視各期帳單明細。支援到期自動扣繳平帳與手動單筆扣繳(以轉帳性質記帳不計入日常支出),並提供欠款歸零時的「單向扣款平帳」與銀行餘額矯正補記卡費,徹底防杜溢繳款並維持帳目精確。當還款入帳時,透過先進先出 (FIFO) 沖銷演算法自動更新帳單狀態為已繳 (paid)。
共用日期選擇器: 將明細與統計頁面的日期選擇 Modal 變為共用元件,解決先前統計頁面日期選擇異常的問題,並確保了介面體驗的一致性。
滑動手勢功能: 首頁支援左右滑動切換支出分類和預算管理,實時跟隨手指移動,同時支援標籤點擊和圓點指示器。智能手勢識別,不會干擾頁面垂直滾動。
資料匯出入: 支援完整的資料匯出和匯入功能,向下相容舊版資料格式,提供安全的資料備份和遷移。
PWA 更新機制: 智能版本控制和自動更新提示,解決 PWA 快取問題,確保用戶始終使用最新版本。
PWA 管理功能: 設定頁面新增「強制更新」、「分享 App」、「安裝為應用程式」等功能,提升 PWA 使用體驗。
PWA 進階原生整合能力:
focus-existing),防止重開分頁時造成 IndexedDB 寫入死鎖。版本管理: 設定頁面顯示當前版本號和最後更新時間,支援手動檢查更新功能。
完整更新日誌: 內建版本更新日誌系統,可查看所有歷史版本的詳細更新記錄。
可摺疊介面: 記帳頁面的小鍵盤支援最小化功能,點擊備註列旁的鍵盤圖示按鈕即可切換顯示,緊湊設計節省螢幕空間。
智能導覽: 底部導覽五欄式設計,涵蓋首頁、明細、記帳、統計、設定,核心功能一鍵直達。
詳細記錄管理: 完整的記錄編輯功能,支援修改類型、分類、金額、說明和日期。
視覺化增強: 支出分類甜甜圈圖中央顯示總額,提供直觀的支出概覽。
首頁小工具排序: 支援自訂首頁小工具的排列順序,並可透過眼睛圖示切換各小工具的顯示狀態,讓常用資訊觸手可及。
自訂分類功能: 支援自訂圖標輸入,可使用任何 Font Awesome 圖標類別創建個性化分類。
雲端備份與 Per-Device 獨立日誌共用帳本同步: 整合 Google Drive,個人資料使用專屬備份空間,共用帳本採用先進的 Per-Device 獨立變更日誌(Append-only)與 Manifest 清單架構,透過 ETag CAS 樂觀鎖防競態並支援 Google Drive 權限即時閉環撤銷,徹底杜絕多人並行記帳時的資料覆蓋衝突與時鐘偏差丟失。
Google Drive 漸進式授權: 將雲端同步權限拆分為基礎備份 (drive.appdata) 與共用帳本 (drive.file),初次僅要求最低限度基礎權限,保護隱私與提升安全性。
擴充功能修改 API: 於沙箱環境中,對獲得 data:write 權限的插件開放 updateRecord 與 updateDebt API,支援更進階的資料庫實體雙向關聯功能。
單元測試基礎建設: 引入 Vitest + jsdom,覆蓋核心業務邏輯模組,確保重構與修改時的程式碼穩定性。
優化輸入體驗: 記帳面板緊湊設計,日期輸入帶標籤,類別選擇使用統一的綠色主題效果。
localStorage 升級到 IndexedDB,提供更強大的非同步儲存和查詢能力。輕鬆記帳/
├── src/ # 源碼目錄
│ ├── js/ # JavaScript 模組
│ │ ├── main.js # 主應用程式 (樞紐與路由控制)
│ │ ├── themeManager.js # 主題與外觀管理 (深淺色即時切換)
│ │ ├── aiService.js # 離線 AI 語意記帳助手 (WASM/wllama)
│ │ ├── dataService.js # IndexedDB 資料存取層 (Schema v15)
│ │ ├── ledgerManager.js # 帳本管理商業邏輯
│ │ ├── groupManager.js # 群組分帳管理
│ │ ├── categories.js # 分類常數與工具函數
│ │ ├── categoryManager.js # 自定義分類 UI 邏輯
│ │ ├── statistics.js # 統計分析頁面 (含比較報表)
│ │ ├── recordsList.js # 記帳紀錄列表
│ │ ├── budgetManager.js # 預算管理
│ │ ├── quickSelectManager.js # 快速選擇管理
│ │ ├── debtManager.js # 欠款管理
│ │ ├── changelog.js # 版本更新日誌
│ │ ├── datePickerModal.js # 共用日期選擇器彈窗
│ │ ├── pluginManager.js # 擴充功能系統
│ │ ├── pluginStorage.js # 插件沙箱化儲存
│ │ ├── syncService.js # Google Drive 雲端同步 (Per-Device 獨立日誌與 Manifest)
│ │ ├── rewardService.js # 雙平台廣告服務
│ │ ├── tourManager.js # 新手引導與功能導覽核心
│ │ ├── tours/ # 模組導覽情境腳本
│ │ ├── router.js # 路由管理
│ │ ├── utils.js # 共用工具函數
│ │ └── pages/ # 頁面組件目錄 (首頁、帳戶、帳本、分攤等)
│ ├── css/ # 樣式檔案
│ │ └── main.css # 主樣式
│ └── index.html # 開發用 HTML
├── tests/ # 測試代碼目錄
│ └── unit/ # 單元測試 (38 個測試檔案,1687 項測試全部通過)
├── public/ # 公共資源
│ ├── manifest.json # PWA 配置
│ └── serviceWorker.js # Service Worker
├── package.json # 專案配置
├── vite.config.js # Vite 配置
└── index.html # 入口檔案
安裝依賴:
npm install
開發模式:
npm run dev
這會啟動 Vite 開發伺服器,通常在 http://localhost:3000。
建置生產版本:
npm run build
預覽生產版本:
npm run preview
程式碼檢查:
npm run lint
程式碼格式化:
npm run format
執行單元測試:
# 單次執行所有測試
npx vitest run
# 開啟監聽模式 (Watch Mode)
npx vitest
Important
在執行任何 Capacitor 同步指令前,**必須先建置**(`npm run build`)。Capacitor 會將 `dist/` 目錄打包進 Android 專案,不接受開發伺服器的 HMR 輸出。
每次修改 Web 端程式碼後,依序執行:
# 1. 建置 Web 產出物
npm run build
# 2. 將 dist/ 同步進 android/ 原生專案
npx cap sync android
# 3. 開啟 Android Studio(選用,如需檢視原生層)
npx cap open android
若只修改了 Web 資源(HTML/CSS/JS),不需要重新編譯原生模組,可以使用更快的 copy:
npm run build && npx cap copy android
| 指令 | 說明 |
|---|---|
npx cap sync android | 完整同步:複製 Web 資源 + 更新原生插件(推薦每次依賴更動後使用) |
npx cap copy android | 僅複製 Web 資源,跳過插件更新(速度較快) |
npx cap open android | 在 Android Studio 開啟原生專案 |
npx cap run android | 在連接的裝置 / 模擬器上直接執行(需要 ADB) |
npx cap update android | 更新原生插件至最新版本(npm update 後使用) |
npx cap doctor | 檢查 Capacitor 環境是否正確配置 |
第一次在新環境建置 Android APK:
# 1. 安裝 Node 依賴
npm install
# 2. 建置 Web 端
npm run build
# 3. 同步到 Android 專案(含插件)
npx cap sync android
# 4. 開啟 Android Studio,在 Studio 內 Build → Generate Signed APK
npx cap open android
專案設定檔:capacitor.config.json
{
"appId": "com.walkingfish.easyaccounting",
"appName": "輕鬆記帳",
"webDir": "dist"
}
webDir: "dist" — Capacitor 會從此目錄讀取 Web 資源,因此 build 是同步前提。androidScheme: "https" — 讓 WebView 以 HTTPS 方式載入本地資源,避免混合內容錯誤。輕鬆記帳提供完整的主題系統,讓開發者可以透過 JSON 定義視覺風格,無需修改任何程式碼。
系統支援四種外觀模式(THEME_MODES):
system):預設模式,即時監聽作業系統 prefers-color-scheme 偏好自動切換深淺色。light):固定使用清新亮色 Wabi-sabi 風格。dark):固定使用內建護眼深色主題。custom):套用從主題商店下載或手動匯入的第三方主題包。.json 檔案,放在 public/themes/ 目錄下--wabi-*),並透過 MutationObserver 監聽 DOM 持續替換指定圖示.json 檔{
"id": "com.yourname.themename",
"name": "主題名稱",
"version": "1.0",
"author": "作者",
"colors": {
"wabi-primary": "#...",
"wabi-bg": "#...",
"wabi-surface": "#...",
"wabi-keypad": "#..."
},
"icons": {
"nav#bottom-nav a[data-page='add'] i.fa-plus": {
"type": "svg",
"svg": "<svg ...>...</svg>",
"className": "w-8 h-8"
}
}
}
完整開發文件 → 詳見 THEME_DEV_GUIDE.md
| 主題 ID | 名稱 | 特色 |
|---|---|---|
com.walkingfish.theme.dark | 深色模式 | 護眼深色,自動更新,不可刪除 |
com.walkingfish.theme.sakura | 櫻花粉 | 粉紅色系+自訂五瓣花 SVG 圖示 |
com.walkingfish.theme.ocean | 深海湛藍 | 沉穩藍色系 |
com.walkingfish.theme.cyberpunk | 賽博龐克 | 霓虹黃/粉/青交錯 |
com.walkingfish.theme.hightech | 高科技駭客 | Matrix 黑綠代碼風 |
public/themes/index.json)每個主題在商店中需要額外提供以下資訊:
{
"id": "...",
"file": "themes/yourtheme.json",
"svgPreview": "<svg>...</svg>",
"iconPreview": "fa-solid fa-moon",
"colorsPreview": {
"bg": "#...",
"primary": "#..."
}
}
svgPreview(優先):以 SVG 字串作為商店卡片縮圖,系統以主色為背景、白色呈現圖示iconPreview:使用 FontAwesome class,以背景色+主色文字呈現colorsPreview 提供預覽色塊,最多顯示 5 色新版本會自動檢測並遷移舊版本的資料:
localStorage 中的 AllTheData。IndexedDB。AllTheData_backup。localStorage 資料。歡迎提交 Issue 和 Pull Request 來改善這個專案!
MIT License
輕鬆記帳 2.0 - 讓記帳變得更簡單、更美觀、更智能!
Content type
Image
Digest
sha256:fb79be285…
Size
66.2 MB
Last updated
2 days ago
docker pull adt109119/jijun:2.1.8.5-test