# PineNote
**Repository Path**: taote/PineNote
## Basic Information
- **Project Name**: PineNote
- **Description**: PineNote 是一款面向 Windows 10/11 的本地优先笔记应用,采用 Rust + Tauri v2 + TypeScript + Markdown + Git 架构,兼顾原生性能与轻量体积。
所有笔记以标准 Markdown 文件存储在本地,无私有格式,用任何文本编辑器都能直接打开。通过 Git 实现多设备同步与版本历史,配合浏览器扩展一键剪藏网页内容,数据完全透明可控。安装包仅
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-04-03
- **Last Updated**: 2026-06-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PineNote
PineNote 是一款面向 Windows 10/11 的本地优先笔记应用,采用 Rust + Tauri v2 + TypeScript + Markdown + Git 架构,兼顾原生性能与轻量体积。
所有笔记以标准 Markdown 文件存储在本地,无私有格式,用任何文本编辑器都能直接打开。通过 Git 实现多设备同步与版本历史,配合浏览器扩展一键剪藏网页内容,数据完全透明可控。安装包仅约 3MB,却集 Markdown 所见即所得编辑、全文搜索、Wiki 双向链接、图片附件、Git 同步与 Web Clipper 于一身,适合长期稳定使用。
## 界面预览
### 阅读视图

## 核心理念
PineNote 坚守三条核心价值观:
1. **数据永远在用户手里** — 所有笔记以标准 Markdown 格式存储在本地,无私有格式,用户随时可以完全掌控和迁移数据
2. **永远秒开** — 采用 Tauri + Rust + 原生 TypeScript 架构,不搞 Electron 级别的内存占用,追求启动即可用、编辑无延迟
3. **永远单机可用** — 不强制登录、不依赖网络、不需要云服务,断网也能正常工作,没有账号体系也能完整使用全部功能
### 我们不做什么
为了保持「小而美、稳而快」的定位,以下功能明确不纳入主线:
- 云端同步 / 在线协作(只做本地 Git 文件级同步支持)
- 复杂的 3D / 力导向知识图谱(侧栏的辐射图谱只展示当前笔记的一跳关联,定位是「看清这篇跟谁有关系」,不是做全网图谱)
- 插件生态系统(避免架构复杂度侵蚀启动速度和稳定性)
- 跨平台过度扩张(深耕 Windows 体验,不盲目铺开多端)
## 当前版本
当前版本:`2.0.3`
PineNote 2.0 是一次架构重构版本,从 SQLite 数据库存储切换为纯 Markdown 文件系统存储,并新增 Git 同步能力。
### 2.0 架构变化
- **文件系统存储**:所有笔记以 `.md` 文件存储,目录结构即分类结构,数据完全透明
- **Git 同步**:支持配置 Git 远程仓库,一键提交推送与拉取,利用 Git 实现版本历史与多设备同步
- **配置文件化**:应用配置使用 TOML 文件,与数据目录一起可被 Git 追踪
- **移除 SQLite 依赖**:不再使用数据库,标签、搜索等均基于文件内容实现
- **统一 Markdown 编辑**:移除富文本编辑模式,统一为 Markdown 编辑
### 2.0.3 增量
当前定位:在保留「小而美、稳而快」定位的前提下做界面精简与图谱体验完善。
- **顶栏合并**:把原来的「窗口标题栏 + 应用顶栏」两行合并为单行 40px 顶栏,第二排的「折叠侧边栏 / 搜索 / 新建笔记」直接进入第一排,删除了重复的「工作空间 / 本地知识工作台」标题,工作区多出 32px 纵向空间
- **状态行元素视觉同构**:编辑器顶部的 `Markdown / 阅读中 / 已保存 / 自动保存 800ms` pill、「笔记关联」摘要条、标签 / 别名 input 现在统一为 22px 高、11px 字号,同一行不再高低不齐
- **侧栏关联图谱**:每条笔记新增关联图谱视图,居中展示当前节点、外围展示「关联到」与「被引用」节点;节点可点击跳转
- **图谱全貌弹窗**:侧栏图谱上**双击**或点右上角「全貌」按钮,弹出更大画布(640×480,最多 30 个节点)的全貌图谱,节点带 `
` 悬浮提示,点击节点直接跳转
- **修复侧栏 chip / 图谱节点点击无响应**:旧版 click 处理器查的是 `data-note-link-id`,但 chip / 图谱节点实际用的 `data-note-link-path`,现统一为 `data-note-link-path`,点 chip / 点节点 / 点关联文章都能跳
### 当前核心能力
- 文件夹分类管理:新建、重命名、删除、多级目录
- Markdown 笔记编辑与实时预览(WYSIWYG 所见即所得)
- 标签编辑与管理
- 别名(aliases):同一篇笔记的多个名称,方便用不同关键词定位
- 全文搜索
- 自动保存
- 笔记自动重命名(标题变更时文件名同步更新)
- 回收站:恢复、彻底删除、批量操作
- Git 同步:提交推送、拉取、冲突处理
- PDF 导出
- Wiki 双向链接 / 关联笔记 / 关联图谱
- 图片附件:插入图片、粘贴截图、自定义 URI 协议
- Web Clipper 网页剪藏:浏览器扩展一键剪藏网页内容
- 剪藏属性面板:来源、作者、发布日期等元信息在正文中显示
- Markdown 导入导出
- 数据备份恢复
- 浅色 / 深色主题
- 顶部桌面菜单与快捷键
- 设置与关于系统页
- Windows 可执行文件与 NSIS 安装包构建
## 文档基线
- [README.md](./README.md):项目目标、总体说明和文档索引
- [CHANGELOG.md](./CHANGELOG.md):版本变更记录
- [ARCHITECTURE.md](./ARCHITECTURE.md):真实架构和关键数据流
- [PLAN.md](./PLAN.md):当前开发计划和推进阶段
- [TASKS.md](./TASKS.md):当前待办和优先级
- [CLAUDE.md](./CLAUDE.md):Claude Code 开发指南
## 目录结构
```text
.
├─ README.md
├─ package.json
├─ src
│ ├─ main.ts # 前端入口
│ ├─ pinenote-navigator.ts # 主应用控制器
│ ├─ markdown-wysiwyg.ts # Markdown WYSIWYG 编辑器插件
│ ├─ note-content.ts # Markdown 渲染与转换
│ ├─ types.ts # 前后端共享类型
│ ├─ navigator-types.ts # 导航器内部类型
│ ├─ navigator-utils.ts # 工具函数
│ ├─ pinenote-desktop.css # 桌面端样式
│ ├─ system-panels.ts # 系统页面(设置/关于/帮助)
│ ├─ attachments.ts # 附件处理
│ └─ components/
│ ├─ context-menu.ts # 右键菜单
│ ├─ dialogs.ts # 对话框组件
│ ├─ draft-tracking.ts # 保存状态追踪
│ ├─ note-list.ts # 笔记列表渲染
│ ├─ note-links.ts # 笔记链接渲染
│ └─ toc-panel.ts # TOC 目录面板
├─ clipper-extension
│ ├─ manifest.json # Chrome/Edge Manifest V3 扩展配置
│ ├─ popup/ # 弹窗界面(三种剪藏模式)
│ └─ options/ # 设置页面
└─ src-tauri
├─ Cargo.toml
├─ tauri.conf.json
└─ src
├─ lib.rs # Tauri 命令注册与启动
├─ commands.rs # Tauri 命令桥接层
├─ app_state.rs # 应用状态容器
├─ file_store.rs # 文件系统数据层(核心)
├─ clipper.rs # Web Clipper HTTP 服务器
├─ config.rs # TOML 配置管理
├─ git_sync.rs # Git 同步模块
├─ search_index.rs # 全文搜索索引
├─ models.rs # 数据模型
└─ windows_pdf.rs # Windows PDF 生成
```
## 数据存储
PineNote 2.0 使用纯文件系统存储:
- **数据目录**:用户指定的本地目录(如 `D:\my_pino_data`)
- **笔记文件**:`数据目录/分类路径/笔记名.md`,标准 Markdown 格式,含 YAML frontmatter
- **回收站**:`数据目录/.trash/`,删除的笔记移入此目录
- **附件**:`数据目录/attachments/`,按笔记和日期组织
- **配置**:`数据目录/.pinenote/config.toml`,应用配置文件
- **Git**:`数据目录/.git/`,Git 版本控制
### 笔记文件格式
```markdown
---
title: 笔记标题
tags: [标签1, 标签2]
aliases: [别名1]
created: 2026-05-16T10:00:00+08:00
updated: 2026-05-16T10:30:00+08:00
pinned: false
source: https://example.com/article
author: [张三]
published: 2026-05-15
description: 文章摘要
---
笔记正文内容...
```
## 本地开发
推荐环境:
- Node.js 20+
- npm 10+
- Rust stable
- Visual Studio C++ Build Tools
- Microsoft WebView2 Runtime
- Git(可选,用于同步功能)
安装依赖:
```bash
npm install
```
前端构建:
```bash
npm run build
```
桌面开发模式:
```bash
npm run tauri:dev
```
桌面打包:
```bash
npm run tauri:build
```
## 测试与验证
```bash
# Rust 测试(必须单线程,因为测试共享文件系统状态)
cargo test --manifest-path src-tauri/Cargo.toml -- --test-threads=1
```