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,即可验证所有权并自行管理介绍。
一分钟完成验证A calm, beautiful place to write. Reusable @snippets, private in your browser.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A calm, beautiful place to write, with reusable @snippets .
Private, offline, and entirely in your browser.
Zenpad was built for writing AI prompts, but it works for any writing where you repeat yourself. Save the text you reuse as a snippet, type @ to drop it into any note, and copy the note with everything filled in.查看完整 README ↗Zenpad was built for writing AI prompts, but it works for any writing where you repeat yourself. Save the text you reuse as a snippet, type @ to drop it into any note, and copy the note with everything filled in.
⇧ Enter on it in the @ list, or run Paste snippet text… from ⌘ K. The pasted copy won't change when the snippet does, but any @snippets and $variables inside it stay live.$branch = fix/login once, or inline as $branch{fix/login}, and use $branch anywhere in the note. Snippets can use them too.$context = """ and """, and it folds into a one-line chip. The text fills in right where the block sits, and $context repeats it anywhere else. Or paste the text, select it, and click Fold away to fold it in place.- [ ] or press ⌘ ⇧ L to turn lines into a checklist, then click a circle to check it off. The status bar shows how far along the note is, and in the sidebar a small pie fills in beside the count of done tasks, turning into a check mark once every one is done.// to leave a note to yourself. Comments stay in the note but are left out when you preview or copy. ⌘ / comments out the selected lines, or uncomments them.⌘ K finds any note or snippet and runs any command. Results are ranked by best match across all three, with title hits first, then initials (tfm finds "Toggle focus mode"), then matches in the text.| Keys | Action |
|---|---|
⌘ K | Search and commands |
⌘ Enter | Copy with snippets filled in |
⌘ E | Preview with snippets filled in, or back to editing |
⌘ ⇧ L | Turn the selected lines into a checklist, or back |
⌘ ⇧ Enter | Check off the task the cursor is on |
⌘ / | Turn the selected lines into comments, or back |
⌘ \ | Show or hide the sidebar |
⌘ ⌥ N | New note |
⇧ Enter in the @ list | Paste the snippet's text instead of linking it |
⌘ click an @snippet | Open it, or create it if it doesn't exist |
⌘ click a $variable | Jump to its value, ready to change |
⌘ F | Find in the current note |
On Windows and Linux, use Ctrl in place of ⌘.
-, and _, like @repo-context. An @ right after a letter or number is ignored, so [email protected] is left alone. Renaming a snippet updates every reference to it.-, and _. Case matters, so $PR and $pr are different. Only names the note sets are filled in, so $HOME or $5 stay as written.$name = value lines are left out when you copy or preview. Inline $name{value} copies as just the value.$name = """ on a line of its own and end with a line of just """. Click the chip to show the text and Fold to hide it again; each note remembers which blocks you left open, and the rest start folded. Like $name{value}, a block fills in its text where it sits when you copy, and $name repeats it elsewhere. A block without its closing """ is not a block yet.$context block right where they are, so the note copies exactly as before. The name is selected afterwards, so type to rename it.// (spaces before it are fine). They're left out of the copy and preview in notes and snippets alike, along with any blank line that only separated them from the text, and an @snippet or $variable that only a comment mentions isn't filled in. A snippet mentioned only in comments doesn't count as used in the sidebar, the snippet map, or the delete warning, but renaming it still updates those mentions. Text like https://site.com or a // b isn't a comment, and lines inside fenced code blocks (```) are copied as written, so code keeps its own comments. Folded $name = """ blocks aren't code, so // lines inside them are comments too; wrap pasted code in a fence to keep its comments. Comment lines are skipped when picking a note's title and sidebar preview.$pr is filled in from the note it is copied from, so one @review-pr snippet works for every PR.- [ ] to do and - [x] done, with *, +, or a number in place of -. They copy exactly as written.Enter carries a checklist on to the next line, and Enter on an empty task ends it. Backspace at the start of a task removes its box.Notes and snippets live in this browser's IndexedDB and never leave it. Clearing site data can delete them, so export a backup from Settings now and then. Importing a backup merges it, and the newer copy of each note or snippet wins.
Requires Node 20.19 or newer.
npm install
npm run dev # start the dev server
npm test # unit tests
npm run build # production build in dist/
npm run test:e2e # browser smoke tests (after npm run build)
To fill a local library with test data, run Add sample data from the command palette (⌘ K) in npm run dev. It adds about 20 notes and 14 snippets, including nested snippets, variables, a snippet loop, and a missing reference. npm run build:sample makes a build that seeds the same data on first launch; pull request previews use it. The command is left out of production builds.
Built with Vite, React, TypeScript, CodeMirror 6, and Dexie, and deployed to Cloudflare Pages from main. See AGENTS.md for the project layout, conventions, and CI.