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.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A minimalist, keyboard-first TODO app that organises tasks on a four-quadrant
importance/urgency matrix (the Randy Pausch / Eisenhower matrix), instead of a
flat list. Important quadrants are on top; urgent quadrants are on the right
by default:
Prefer the classic Eisenhower layout with Do in the top-left? Open
Settings (gear icon, ?, or ⌘/Ctrl + ,) and set Urgent column to
Left. Only the columns swap; the important row always stays on top, and
the 1–4 keys still follow priority.檢視完整 README ↗A minimalist, keyboard-first TODO app that organises tasks on a four-quadrant importance/urgency matrix (the Randy Pausch / Eisenhower matrix), instead of a flat list. Important quadrants are on top; urgent quadrants are on the right by default:
| Priority | Position | Title | Meaning |
|---|---|---|---|
| 1 | top-right | Do | Urgent and important |
| 2 | top-left | Plan | Important but not urgent |
| 3 | bottom-right | Delegate | Urgent but not important |
| 4 | bottom-left | Eliminate | Not urgent and not important |
Live app: https://lucijanblagonic.github.io/first-things/
Prefer the classic Eisenhower layout with Do in the top-left? Open
Settings (gear icon, ?, or ⌘/Ctrl + ,) and set Urgent column to
Left. Only the columns swap; the important row always stays on top, and
the 1–4 keys still follow priority.
The first time you open it in a browser, the board starts with three example tasks that show due dates and notes. They are ordinary tasks: delete them and they stay gone.
The header holds the title and two icon buttons (hover or focus them for a tooltip):
It's a static site: no build step, no framework, no runtime dependencies.
Data is stored in the browser only, via localStorage.
The live app can be installed so it opens in its own window, like a native app:
Once installed it works offline after the first visit, and new versions arrive automatically the next time it is opened online. On a desktop browser the installed app and the browser tab share the same board; on iOS the Home Screen app keeps its own board, separate from Safari's.
nvm use # Node >= 20 (repo pins 22 via .nvmrc)
npm install
npm run serve # serves the repo root at http://localhost:4173
Then open http://localhost:4173/ in a browser.
Note: opening
index.htmldirectly viafile://does not work — the app is built from native ES modules, which browsers only load over HTTP(S). Always usenpm run serve(or any other static file server).
npm test # unit tests (node:test) for src/core/*
npm run test:e2e # Playwright end-to-end tests (Chromium, Firefox, WebKit)
The PNG icons in icons/ are rendered from the SVGs next to them with
node scripts/render-icons.mjs and committed; re-run it after editing an SVG.
test:e2e starts its own local server automatically (see
playwright.config.js), so you don't need npm run serve running first.
Buttons show their shortcut as a keycap (for example "Add task N"). Press
?, ⌘/Ctrl + ,, or use the gear button to open Settings, which lists every
shortcut (it's generated from the same table the app uses, so it can't drift).
Single-key shortcuts (digits, letters, ?) can be turned off in Settings if they conflict with assistive technology or voice control; Escape,
Enter, arrow keys, Space, and all Ctrl/⌘ combinations keep working either way.
| Keys | Action |
|---|---|
1 2 3 4 | Focus the quadrant with that priority |
↑ / ↓ (also k / j) | Focus previous / next task in the current quadrant |
← / → (also h / l) | Focus the quadrant to the left / right (follows the layout setting) |
n or c | Open the add input in the current quadrant |
Enter or e | Open the edit dialog for the focused task |
x or Space | Toggle completion of the focused task |
Backspace or Delete | Delete the focused task (with undo) |
Ctrl/⌘ + z | Undo the last delete |
Ctrl/⌘ + ↑ / ↓ | Move the focused task up / down within its quadrant |
Ctrl/⌘ + ← / → | Move the focused task to the quadrant to the left / right |
Shift + 1–4 | Move the focused task to that quadrant |
? | Open Settings |
Ctrl/⌘ + , | Open Settings (also while typing) |
Escape | Close a dialog or tooltip, cancel the add input, or collapse a completed list |
Tasks are also fully operable with a mouse, including drag & drop to reorder or move between quadrants.
Tasks and preferences are stored in your browser's localStorage, scoped to
this site's origin. This means:
localStorage disabled fall
back to in-memory storage for the session (with a banner warning that
changes won't be saved).Settings → Data takes your tasks out and brings them back in:
first-things-YYYY-MM-DD.json). Import file, on any computer,
replaces that board with the file's tasks after a confirmation that shows
how many tasks will be replaced and how many will be loaded.Import and Paste replace the board; they do not merge. Tasks only: theme,
layout and shortcut preferences are not included. The board that was replaced
is kept as a decision-matrix:backup-… entry in the browser's localStorage
(the app was called Decision Matrix before it was First Things; storage keys
keep the old prefix so existing boards carry over).
Files or text that aren't a First Things board, or that come from a newer
version of the app, are rejected and change nothing.
Storage is implemented behind a small adapter interface
(src/core/storage/adapter.js), so a future change could add a synced
backend (e.g. a Gist-based adapter) without touching the rest of the app.
See openspec/ for the proposal, specs, and design decisions
behind this app.
Icons from Lucide (ISC license).