内容
# NeoPad
NeoPad 是一款轻量级、本地优先的桌面记事本,适用于快速记录、快速回忆和以 Markdown 格式访问笔记。
该应用程序的灵感来自 FlashPad 式工作流程:一个小型桌面窗口、系统托盘存在、全局快捷键、多个笔记标签、自动保存、全文本搜索、剪贴板捕获和 Markdown 预览。笔记存储为用户本地 NeoPad 工作空间下的纯 `.md` 文件。
## 当前状态
该存储库目前包含一个可用的 Windows 版本的最小可行产品(MVP):
- 使用 Tauri 2 桌面应用程序,搭配 Vue 3、TypeScript、Vite、CodeMirror 6 和 `markdown-it`。
- 用于工作空间初始化、笔记增删改查、原子写入、删除移动、搜索、配置、标签和路径安全性的共享 Rust 核心库。
- 系统托盘菜单、关闭时隐藏行为、全局快捷键和剪贴板追加。
- 无闪烁单实例启动、首次启动时在屏幕右下角定位、在后续启动时恢复上一次窗口位置,以及一个选项允许在任何启动后保持窗口隐藏。
- 用于窗口可见性和剪贴板捕获的全局快捷键配置,包括从最小化状态可靠恢复,以及 `Alt+Enter` 最大化/恢复。
- 剪贴板捕获使用紧凑的分隔线中的可读本地时间戳。
- 从“视图”菜单、状态栏、可配置的快捷键和持久化默认设置中选择编辑、混合和预览编辑器模式,包括在全屏沉浸式使用时。
- CodeMirror 编辑器的可选 Vim 键绑定,带有持久化设置在“高级”选项卡中、可配置的插入退出序列,以及可见的普通、插入或视觉模式指示器。NeoPad Ctrl 快捷键可以可选地优先于冲突的 Vim 映射。
- 从“格式”菜单和状态栏中选择持久化的浅色和深色主题。
- 使用 `- [ ] @提醒 YYYY-MM-DD HH:mm 内容` 的轻量级 Markdown 提醒,带有紧凑的 `Ctrl+E` 编辑器、可排序和可筛选的提醒列表、源行导航和原生通知,而 NeoPad 在系统托盘中运行时。
- `F5` 打开或关闭提醒列表。“标记完成”、“标记未完成”和“清除到期”直接更新提醒复选框,而不删除笔记内容。
- 标签上下文菜单,带有重命名、删除和持久化颜色选择。
- 原生“另存为”对话框,用于将活动笔记导出为 Markdown 或所有笔记导出为 ZIP 存档,其中包含每个标签的一个 Markdown 文件。
- 独立的 `neopad-mcp` 标准输入/输出服务器,默认情况下带有只读工具,并通过 `--allow-write` 开启写入工具。
- 带有应用程序图标、品牌 WiX 安装程序图像和桌面及开始菜单快捷方式图标的 Windows MSI 打包。
## 工作空间布局
```text
app/ Tauri 桌面应用程序和 Vue 前端
app/src-tauri/ 用于 Tauri 命令、系统托盘、热键和打包的 Rust Shell
crates/neopad-core/ 共享的 Rust 核心库
mcp-server/ 独立的 neopad-mcp 二进制文件
docs/ 架构、开发、MCP 和任务笔记
```
## 用户数据
默认情况下,NeoPad 将所有用户数据存储在:
```text
~/.neopad/
```
重要文件和目录:
```text
~/.neopad/
notes/ Markdown 笔记正文
meta/tabs.json 标签元数据
meta/reminders.json 通知投递状态
config.json 应用程序设置
trash/ 已删除的笔记被移动到此处
backups/ 为未来的备份支持保留
```
笔记内容存储在 `notes/*.md` 中。元数据文件不包含笔记正文。
## 开发
安装依赖项:
```powershell
pnpm install
```
在开发模式下运行应用程序:
```powershell
pnpm tauri:dev
```
构建前端:
```powershell
pnpm build
```
运行 Rust 测试:
```powershell
cargo test
```
运行 Rust 和前端单元/集成测试:
```powershell
pnpm test:all
```
运行真正的 Windows 桌面交互套件:
```powershell
pnpm test:e2e
```
桌面测试使用 `target/e2e-workspace` 下的隔离工作空间。
构建所有 Rust 包:
```powershell
cargo build
```
构建 Windows MSI:
```powershell
pnpm tauri:build
```
MSI 被写入:
```text
target/release/bundle/msi/NeoPad_0.3.6_x64_en-US.msi
```
## MCP 服务器
构建 MCP 服务器:
```powershell
cargo build -p neopad-mcp --release
```
只读配置示例:
```json
{
"mcpServers": {
"neopad": {
"command": "D:\\TrevanCode\\neopad\\target\\release\\neopad-mcp.exe",
"args": ["--workspace", "~/.neopad"]
}
}
}
```
启用写入的配置示例:
```json
{
"mcpServers": {
"neopad": {
"command": "D:\\TrevanCode\\neopad\\target\\release\\neopad-mcp.exe",
"args": ["--workspace", "~/.neopad", "--allow-write"]
}
}
}
```
写入工具默认情况下是隐藏的,除非提供 `--allow-write`。
## 更多文档
- [架构](docs/architecture.md)
- [开发](docs/development.md)
- [MCP](docs/mcp.md)
- [任务](docs/tasks.md)
- [变更日志](CHANGELOG.md)
- [代理指南](AGENTS.md)