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 daily checklist that syncs across your devices, with a small API your agents can post
priorities into. One static index.html, three serverless functions, and Vercel Blob as
the store. Live at https://checklist-tracker-pi.vercel.app.
Anyone with the URL can make an account; no invite code is needed. Setting
SIGNUP_CLOSED=1 shuts that again, leaving invitations as the only way in. Each account gets its own
list; nothing is shared between them.檢視完整 README ↗A daily checklist that syncs across your devices, with a small API your agents can post
priorities into. One static index.html, three serverless functions, and Vercel Blob as
the store. Live at https://checklist-tracker-pi.vercel.app.
Anyone with the URL can make an account; no invite code is needed. Setting
SIGNUP_CLOSED=1 shuts that again, leaving invitations as the only way in. Each account gets its own
list; nothing is shared between them.
Three environment variables turn accounts on:
| Variable | What it does |
|---|---|
AUTH_SECRET | Signs session and agent tokens. Must be at least 16 characters — until it is, accounts stay switched off and /api/auth answers 503. Never rotate it casually: everyone gets signed out. |
INVITE_CODE | Only matters while SIGNUP_CLOSED=1: then it's what someone has to type to create an account. |
SIGNUP_CLOSED | Optional. 1 turns open signup off, so only invitations work. |
OWNER_EMAIL | The account that inherits the list which predates accounts. Set this before signing up with that email. |
APP_SECRET | The original single passphrase. Still valid, still points at the owner's list, so scripts and bookmarks made before accounts keep working. Safe to remove once nothing uses it. |
RESEND_API_KEY | Optional. Lets the owner email an invitation instead of copying the link by hand. Without it, invitations are still created — they just aren't delivered. |
MAIL_FROM | Optional, required alongside RESEND_API_KEY. The sending address, e.g. [email protected]. It has to be on a domain verified with Resend; their sandbox sender only delivers to your own address. |
Setting them up:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" | vercel env add AUTH_SECRET production
echo "some-code-you-pick" | vercel env add INVITE_CODE production
echo "[email protected]" | vercel env add OWNER_EMAIL production
vercel --prod
Then open the app, choose make one, and sign up with the OWNER_EMAIL address — that
account picks up the existing list rather than starting empty.
The owner gets an invite someone panel under the gear. Give it an email address and it makes a code of its own — good once, revocable until it's used — along with a link that fills the code in for whoever opens it. That link is the reliable path; emailing it is a convenience on top.
If RESEND_API_KEY and MAIL_FROM are set, the invitation is emailed as well. Be aware
that Resend's sandbox sender only delivers to the address that owns the Resend account, so
sending to a friend needs a domain you've verified with them. The panel says plainly when
a message didn't go out, and the invitation still exists to copy by hand.
The original shared INVITE_CODE keeps working alongside personal codes, so anything
already handed out is unaffected.
state.json the owner's list (predates accounts; left exactly where it was)
inbox.json the owner's queue of agent-posted tasks
u/<id>/state.json one list per account
u/<id>/inbox.json one queue per account
users/<sha256(email)>.json { id, email, salt, scrypt hash }
invites/index.json every invitation and whether it's been used
Passwords are scrypt hashes with a per-account salt. Sessions are HMAC-signed tokens rather than rows in a table, so there's nothing to expire or clean up.
users/<hash>.json out of the blob store by hand.SIGNUP_CLOSED=1; scrypt is
what makes guessing a password slow.index.html and only shown to the owner's account.
Anyone determined enough to read the page source can still see them.npm run dev:local # then open http://localhost:4325/dev
The real page and the real api/ handlers over an in-memory store, seeded with an owner
account and three pretend people (Mika, Jo, Ren) who each have a colour, a background,
stickers, a day, a backlog and a mood, and follow each other. /dev switches between
them with one tap. Nothing touches the live site's data, it all resets on restart, and
dev/ is kept out of deploys by .vercelignore.
vercel dev # needs the env vars above, and writes to the real blob store
api/ is Node serverless functions; index.html is the whole client.