TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
個人首頁(轉址:記帳小屋)
Translation pending
ProductivityHTML · JavaScriptGitHub @ericlau1107OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
個人首頁,只給自己用:左側選工具,右側直接使用。發布在 https://ericlau1107.github.io/ (GitHub Pages)。Read the full README ↗
個人首頁,只給自己用:左側選工具,右側直接使用。發布在 https://ericlau1107.github.io/ (GitHub Pages)。
index.html 的 TOOLS 清單加一筆。工具最好放在本倉庫的子資料夾(同一個網址底下),嵌入時瀏覽器才不會把資料分開存。labor-report/):由另一個私人倉庫建置公開版後同步過來,指令是 sh tools/sync-labor-report.sh。同步腳本會確認公開版不含任何預填資料才放行。#project-desk):從工具箱開啟既有私人 Sites 工作台,需登入原本的 ChatGPT 帳號。登入與 D1 資料保存由工作台提供;GitHub Pages 只提供公開入口,不複製案件資料或後端程式。TOOLS 設定 mode: 'external' 的工具以新分頁連結開啟。money-report/):可直接新增收支、退款、帳戶轉帳,管理存款與負債,支援 24 種幣別的外幣帳戶與原幣記帳、雙邊實收轉帳;資產以每日公開參考價換算 TWD,歷史收支保留各筆入帳匯率。可查詢原幣歷史餘額(外幣估值使用目前參考價)與資產、每月分析、消費分佈及預算;JSON 完整備份/還原、CSV 匯出。初始帳本為空,帳目只存在該裝置瀏覽器 IndexedDB,沒有銀行連線或跨裝置同步。匯率來源為 ExchangeRate-API 每日公開價,非銀行即時成交價;只請求固定公開 TWD 報價 URL,不傳帳戶或金額。主頁 CSP 僅放行該端點,月報檢視器仍禁止網路連線。原本月報檢視器保留在 money-report/report-viewer.html,沿用既有匯入資料。原始碼在 Dev/systems/money-report/,以 sh tools/sync-toolbox.sh 同步兩個 HTML;只發布程式與經守門的虛構月報樣本。health-fitness/):手動健康日誌、可保存的 30 天月計畫與每日起步課表、依當日健身課表與目標連動三餐、可選訓練時間及運動前後餐食/過敏篩選/睡眠時段規劃、實際生活紀錄、重量組次與訓練進度、JSON 備份/還原及 CSV 匯出。初始資料空白,只存在該瀏覽器 IndexedDB;没有穿戴裝置、醫療院所或 AI API 串接。原始碼在 Dev/systems/health-fitness/,以 sh tools/sync-toolbox.sh 同步公開 HTML。gear/,接案工具):依班型的器材清單,出發前與歸還時各勾一次。資料只存瀏覽器,可下載 JSON 備份。callsheet/,接案工具):集合時間、日出日落、聯絡人與當天流程,整理成一張通告。資料只存瀏覽器,可下載備份。expiry/,生活):證件、保險、訂閱的到期日與提醒。資料只存瀏覽器,可下載備份。study/,生活):日・韓・英單字卡,每天複習到期的卡。資料只存瀏覽器,可下載備份。weekly/,生活):每週彙整花費、運動與到期事項(只讀其他工具的資料);只有自己的週記寫備份紀錄。vault/,工具箱「資料」分類):瀏覽器可能清掉這個網站的資料(Safari 7 天沒用、空間不足、手動清除),所以這一頁顯示三件事:持久保存是否啟用(按鈕才呼叫 navigator.storage.persist())、已用空間,以及 8 個會寫備份紀錄的工具各自的備份狀態(有沒有資料、上次備份幾天前)。提醒只看一件事:該工具的備份紀錄寫著 hasData:true,而且 lastBackupAt 是空的或超過 14 天前,才會被框起來、才會算進首頁提醒條。沒有紀錄的工具顯示「還沒有紀錄:打開這個工具存一次資料或做一次備份就會出現」,不提醒、不猜;紀錄寫著 hasData:false 的顯示「沒有資料」,同樣不提醒。頁面只讀下面的「備份紀錄約定」,不讀任何工具的內容、不碰任何資料庫(沒有 indexedDB 呼叫),CSP 為 connect-src 'none'。判斷規則集中在 vault/status.js(資料保險箱頁與首頁共用)。首頁另有「提醒條」:「有 N 個工具該備份了」,按「今天不再提醒」當天不再出現(隔天恢復)。robots.txt 擋搜尋引擎爬每個工具資料夾(labor-report/、money-report/、health-fitness/、gear/、callsheet/、expiry/、study/、weekly/、vault/),作品集(/portfolio/)不擋;首頁本身帶 noindex。/portfolio/、/ledger-house/ 等其他倉庫的 Pages)所有頁面共用同一個 origin,任何一頁執行的程式都讀得到記帳月報、勞報單存在瀏覽器裡的資料。所以網域上的頁面只能執行自己的程式;外部程式必須鎖定版本+SRI,永遠不放廣告或追蹤程式。推上 main 前跑 python3 tools/check-scripts.py。#portfolio):另一個公開倉庫 ericlau1107/portfolio 的 GitHub Pages,網址 https://ericlau1107.github.io/portfolio/。跟工具箱同一個網址底下,所以直接嵌在右側;內容更新在作品集那邊發布(`~/Desktop/03_作品集/網站/_publish-pages.sh`),工具箱不用跟著改。ledger-house/ 是另一個倉庫(記帳小屋)的 GitHub Pages,不在本倉庫。只放「狀態」,永遠不放任何內容(姓名、金額、健康數值都不行)。
toolbox.backup.v1{"v":1,"tools":{"<toolId>":{"hasData":布林,"updatedAt":"ISO 8601","lastBackupAt":"ISO 8601 或 null"}}}labor-report(勞報單)、money-report(個人記帳)、health-fitness(健康與健身)、gear(出班器材檢查表)、callsheet(拍攝日通告)、expiry(到期日管家)、study(語言每日複習)、weekly(每週回顧,只寫自己的週記)markToolbox(patch)(不共用檔案、永遠不丟錯、不擋工具自己的儲存)。時機:
{hasData:true, updatedAt:現在}(記憶體內節流,60 秒最多一次;載入後第一次儲存一定寫){hasData:false, updatedAt:現在, lastBackupAt:null}(2026-10-13 起 lastBackupAt 一併清成 null:重設前的舊備份檔不涵蓋重設後才輸入的資料,所以不能讓「上次備份」繼續顯示成有備份、也不能讓提醒靜音){lastBackupAt:現在}。從備份檔還原成功後(2026-10-13 起)→ 工具立刻更新自己的紀錄(不必重新整理、不等 60 秒節流):hasData 照還原後實際的內容、updatedAt 現在;lastBackupAt 以該工具畫面上顯示的「最近備份」為準,讓資料保險箱和首頁提醒跟工具自己顯示的一致(備份時間只存在紀錄裡的工具維持原值;自己另存備份時間的工具,紀錄跟著它走)hasData:false 或根本沒有紀錄 → 補寫 hasData:true(原本有 updatedAt 就保留,沒有才用現在)。紀錄絕不能宣稱工具沒有的資料;反過來,只是打開工具、沒存過資料,就不寫 hasData:true。vault/status.js(資料保險箱頁與首頁提醒條共用)。只看紀錄,不猜:沒有紀錄的工具顯示「還沒有紀錄」,不提醒;不看資料庫名稱、不看其他 localStorage 鍵,絕不呼叫任何 indexedDB 方法(開一個不存在的資料庫會把它建出來,弄壞工具自己的升級;而且「打開過工具」會建出空資料庫,不代表有資料)。hasData:true 的工具,且 lastBackupAt 是空的、超過 14 天前(以當地日曆日計算),或比現在晚 5 分鐘以上(標成「時間異常」,通常是裝置時間曾被調過,同樣算該備份)。hasData:false 或沒有紀錄一律不提醒。toolbox.vault.skipDay(「今天不再提醒」的日期),不屬於約定。vault/index.html、vault.js、status.js)、首頁備份提醒條與 TOOLS 的 vault 項目,並訂下上面的備份紀錄約定。驗證:python3 tools/check-scripts.py 通過;無頭 Chrome 在 1440/390 寬載入首頁與資料保險箱(框內、直接開)都沒有 JS/CSP 錯誤(只剩本機沒有 favicon 的 404);用虛構資料只寫共用鍵與假的存在標記,模擬「沒有資料/有資料從沒備份/3 天前備份/20 天前備份」四種狀態並截圖,另測偵測模式、「今天不再提醒」、深連結、深色模式、不支援 navigator.storage/indexedDB.databases() 的瀏覽器;資料保險箱直接開啟時只有同網址的 3 個請求(頁面、status.js、vault.js),沒有對外請求,也沒有建立任何資料庫。indexedDB.databases()/localStorage 存在偵測),修掉「只打開過個人記帳或健康與健身一次、沒資料,就跳出需要備份」的誤報;提醒條按鈕在手機上改成 44px 高;首頁選單加入出班器材檢查表、拍攝日通告、到期日管家、語言每日複習、每週回顧(共 11 項),手機頂端選單兩端加淡出提示並把目前項目捲到中間;資料保險箱列出 8 個會寫紀錄的工具;robots.txt 擋所有工具資料夾;備份紀錄約定新增「載入時補寫 hasData:true」。資料保險箱直接開啟時只有同網址的 3 個請求(頁面、status.js、vault.js),沒有對外請求,也沒有建立任何資料庫。lastBackupAt 改成「時間異常」並算進提醒;手機頂端選單用鍵盤 Tab 時,焦點項目會捲到淡出區之外;桌機側欄選單太長時底部有淡出提示、頁尾不被切掉(視窗高度 880px 以下隱藏每個工具的說明小字);手機頂端「在新分頁開啟」按鈕 44px。器材檢查表、語言每日複習、每週回顧同輪修正(語言複習開始記每天的複習數 reviewsByDay,每週回顧把一週加總)。{hasData:false, updatedAt:現在, lastBackupAt:null},舊備份檔不涵蓋重設後才輸入的資料;還原成功後工具立刻更新自己的紀錄(不必重新整理、不等 60 秒節流),讓資料保險箱和首頁提醒跟工具自己顯示的「最近備份」一致。拍攝日通告、到期日管家、語言每日複習、每週回顧已照做(語言複習「資料讀不出來、重新開始」也算重設)。首頁 index.html 補上 <link rel="icon" href="data:,">(資料保險箱與各工具頁本來就有),載入不再去要 /favicon.ico;桌機側欄選單項目任何視窗高度都不低於 44px(視窗高度 880px 以下仍收起說明小字,放不下就讓選單捲動、底部淡出提示,不再把項目壓扁)。每週回顧:「另外有 N 週的文字還沒存下來」提示外面包一層一直存在的 role="status"(aria-live="polite"),內容沒變不重畫;重新整理後找回的舊草稿「放回去」時,這個頁面剛寫的新文字不再被悄悄蓋掉(面板會說明、放回去後的狀態列也會說明)。驗證:各工具既有測試腳本全綠(拍攝日通告 357、到期日管家 293、語言每日複習 268、每週回顧 277;其中跟舊規則「重設後保留 lastBackupAt」衝突的 5 項斷言已改成新規則),工具箱首頁、資料保險箱既有測試也全綠(518/200/8/201),新增 97 項(四個工具的重設/還原紀錄、favicon 不再被要求、選單在 1000~500px 高度的項目高度與淡出、每週回顧兩項),並用「把新行為拿掉的對照副本」確認這些新檢查在舊行為下確實會失敗;python3 tools/check-scripts.py 通過(11 個頁面)。