Skip to content

Latest commit

 

History

1,061 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snippets Code

Version License Tauri Vue TypeScript

一个使用 Tauri 2 + Vue 3 + Rust 构建的本地优先代码片段与知识资产工作台,面向前端程序员和开发者设计。

功能特性快速开始技术栈文档产品优化建议贡献指南


功能特性

🔍 智能搜索

  • 全局快捷键唤起:随时随地快速搜索
  • 片段优先检索:统一搜索代码片段、笔记和知识资产
  • 前端语义筛选:支持 lang:tsframework:vuekind:component 等开发语义搜索
  • 开发语义识别:围绕语言、框架、类型、标签和分类组织结果
  • 使用频率优化:常用项目优先显示
  • 键盘导航:完整的键盘快捷键支持

📝 前端片段管理

  • Markdown 文件存储:每个片段和笔记都是独立的 .md 文件,支持 VS Code 等外部编辑器
  • 工作区支持:支持多工作区管理,可同时管理多个笔记库
  • 富文本编辑器:基于 TipTap 的 Markdown 编辑器
  • 代码高亮:支持多种编程语言的语法高亮
  • 前端片段组织:可按语言、框架、语义类型、标签和分类组织 Vue、React、CSS、TypeScript 等资产
  • 复制即复用:支持复制原始代码、Markdown fenced code、VS Code snippet JSON,并处理 {{input:Name}}{{clipboard}} 等模板变量
  • 分类管理:灵活的分类和标签系统,分类对应文件夹
  • 反向链接:双向链接功能
  • 实时预览:Markdown 实时渲染
  • 快速检索:全文搜索,支持高级搜索语法
  • 文件监听:自动同步外部编辑器的修改
  • 智能缓存:优化的搜索索引,支持百万级文件快速搜索

📚 知识管理

  • Wikilink 支持:使用 [[链接]] 语法创建笔记链接
  • 反向链接面板:查看哪些笔记链接到当前笔记
  • 未链接提及:发现潜在的关联笔记
  • 大纲视图:自动生成文档大纲
  • 源码模式:直接编辑 Markdown 源码

🧩 官方插件增强

  • Git 同步:使用系统 Git 命令同步片段工作区到任意 Git 仓库(支持 GitHub、GitLab、Gitee 等)
  • 截图与 OCR:截图标注、取色、贴图和 OCR 作为插件增强片段沉淀流程
  • 翻译:Google、Bing、离线翻译与截图翻译按需启用
  • 搜索源扩展:应用、书签、桌面文件和浏览器搜索源通过插件接入全局搜索
  • 提醒与主题:Todo 提醒、系统主题等能力作为可安装插件,不挤占核心片段工作流

🎨 界面与主题

  • 现代化 UI:基于 Element Plus 的精美界面
  • 深色模式:支持亮色/暗色主题
  • 自动切换:根据时间或系统自动切换主题
  • 多语言支持:中文、英文界面

快速开始

系统要求

  • 操作系统:Windows 10/11
  • 开发环境
    • Node.js 18.0+
    • pnpm 8.0+
    • Rust 1.70+
    • Tauri CLI 2.0+

安装步骤

  1. 克隆仓库
git clone https://github.com/GigaPuddings/snippets-code-t.git
cd snippets-code-t
  1. 安装依赖
pnpm install
  1. 开发模式运行
pnpm tauri dev
  1. 构建应用
pnpm tauri build

构建产物位于 src-tauri/target/release/bundle/

首次使用

  1. 启动应用后会显示设置向导
  2. 选择数据存储位置(推荐非系统盘)
  3. 选择界面语言
  4. 完成设置,开始使用

Markdown 存储迁移

如果您是从旧版本升级,可以将笔记迁移到 Markdown 文件存储:

  1. 打开设置 → 数据管理
  2. 点击"迁移到 Markdown 存储"
  3. 选择工作区文件夹
  4. 等待迁移完成

迁移后的优势

  • ✅ 每个笔记都是独立的 .md 文件
  • ✅ 可以使用任何文本编辑器(VS Code 等)
  • ✅ 支持 Git 版本控制
  • ✅ 更好的数据可移植性

详细说明请查看 Markdown 存储迁移指南


技术栈

前端技术

技术 版本 用途
Vue 3 3.5+ 渐进式 JavaScript 框架
TypeScript 5.6+ 类型安全的 JavaScript
Vite 6.0+ 下一代前端构建工具
Pinia 2.3+ Vue 状态管理
Vue Router 4.x 路由管理
Element Plus 2.9+ UI 组件库
TipTap 3.17+ 富文本编辑器
CodeMirror 6.x 代码编辑器
TailwindCSS 3.4+ 原子化 CSS 框架
Vue I18n 11.2+ 国际化

后端技术

技术 版本 用途
Tauri 2.0+ 跨平台桌面应用框架
Rust 1.70+ 系统编程语言
SQLite 3.x 嵌入式数据库
Tokio 1.36+ 异步运行时

开发工具

  • 代码质量:ESLint、Prettier、Stylelint
  • Git 工作流:Husky、Commitlint、Lint-staged
  • 包管理:pnpm

项目结构

snippets-code/
├── src/                          # 前端源代码
│   ├── api/                      # API 调用层
│   │   ├── fragment.ts           # 片段 API
│   │   ├── markdown.ts           # Markdown API
│   │   ├── plugins.ts            # 插件包与资源 API
│   │   ├── appConfig.ts          # 应用配置 API
│   │   └── github.ts             # GitHub API
│   ├── components/               # 可复用组件
│   │   ├── TipTapEditor/         # 富文本编辑器
│   │   │   ├── extensions/       # 编辑器扩展
│   │   │   │   ├── LocalImage.ts # 本地图片扩展
│   │   │   │   └── CustomEnterBehavior.ts  # 自定义回车行为
│   │   │   ├── BacklinkPanel.vue # 反向链接面板
│   │   │   └── ...
│   │   ├── SettingsContent/     # 设置内容组件
│   │   └── ...
│   ├── pages/                    # 页面组件
│   │   ├── search/               # 搜索页面
│   │   ├── config/               # 配置页面与插件挂载入口
│   │   └── ...
│   ├── plugins/                  # 插件系统与官方插件运行时
│   │   ├── git-sync/             # Git 同步插件
│   │   ├── screenshot/           # 截图/OCR 插件
│   │   ├── translation/          # 翻译插件
│   │   ├── todo/                 # Todo 插件
│   │   └── ...
│   ├── hooks/                    # Composables
│   │   ├── useFileWatcher.ts     # 文件监听 Hook
│   │   └── ...
│   ├── store/                    # Pinia 状态管理
│   ├── types/                    # TypeScript 类型定义
│   ├── utils/                    # 工具函数
│   │   ├── error-handler.ts      # 错误处理系统
│   │   ├── wikilink-parser.ts    # Wikilink 解析器
│   │   ├── wikilink-updater.ts   # Wikilink 更新器
│   │   ├── image-upload.ts       # 图片上传工具
│   │   ├── file-sort.ts          # 文件排序工具
│   │   ├── time-format.ts        # 时间格式化
│   │   └── ...
│   ├── i18n/                     # 国际化
│   └── styles/                   # 全局样式
├── src-tauri/                    # Rust 后端
│   ├── src/                      # Rust 源代码
│   │   ├── db/                   # 数据库模块
│   │   ├── markdown/             # Markdown 文件系统(新增多个子模块)
│   │   │   ├── commands.rs       # Markdown 操作命令
│   │   │   ├── workspace.rs      # 工作区管理
│   │   │   ├── workspace_manager.rs  # 工作区管理器
│   │   │   ├── file_ops.rs       # 文件操作
│   │   │   ├── file_system_manager.rs  # 文件系统管理
│   │   │   ├── watcher.rs        # 文件监听
│   │   │   ├── metadata.rs       # 元数据管理
│   │   │   ├── migration.rs      # 数据迁移
│   │   │   ├── index_optimized.rs  # 优化的搜索索引
│   │   │   └── cache_manager.rs  # 缓存管理
│   │   ├── plugins/              # 官方插件后端适配层
│   │   ├── app_config.rs         # 应用与插件配置
│   │   ├── git_sync.rs           # Git 同步兼容实现
│   │   ├── translation.rs        # 翻译兼容实现
│   │   ├── hotkey.rs             # 快捷键管理
│   │   ├── window.rs             # 窗口管理
│   │   ├── json_config.rs        # JSON 配置管理
│   │   └── attachment.rs         # 附件管理
│   ├── Cargo.toml                # Rust 依赖配置
│   └── tauri.conf.json           # Tauri 配置
├── docs/                         # 文档
│   ├── ARCHITECTURE.md           # 架构文档
│   └── CODING_STANDARDS.md       # 编码规范
├── plugin-registry/              # 插件市场索引、官方插件包和示例包
├── package.json                  # 前端依赖配置
├── vite.config.ts                # Vite 配置
├── tsconfig.json                 # TypeScript 配置
└── README.md                     # 项目说明

核心功能详解

前端片段管理

支持两种类型的内容:

  • 代码片段(Code):使用 CodeMirror 编辑器,支持语法高亮
  • 笔记(Note):使用 TipTap 富文本编辑器,支持 Markdown

特性

  • 分类管理和标签系统
  • 全文搜索和高级搜索语法
  • 反向链接和 Wikilink 支持
  • 导入/导出功能
  • 复制原始代码、Markdown fenced code、VS Code snippet JSON
  • 模板变量 {{input:Name}}{{clipboard}} 复制前解析
  • language/framework/kind 前端语义元数据
  • 多工作区支持

搜索功能

搜索模式

  • 搜索模式:输入关键词搜索所有内容
  • 列表模式:按类型浏览内容
  • 标签模式:按标签筛选

片段工作流

  • 按语言、框架、类型、标签和分类筛选
  • 代码片段搜索结果可直接复制为多种格式
  • 应用、书签、桌面文件和搜索引擎作为插件搜索源接入

官方插件能力

官方插件围绕片段工作流扩展能力,不属于核心编辑/工作区边界:

  • Git 同步:同步片段工作区到任意 Git 仓库,并处理冲突、自动同步和状态展示
  • 截图与 OCR:截图标注、取色、贴图、RapidOCR 资源包和截图翻译入口
  • 翻译:Google、Bing、离线翻译和选中文本翻译
  • Todo 与主题:提醒通知、Auto Dark Mode、系统主题切换
  • 搜索源扩展:应用、书签、桌面文件和 Web 搜索引擎

文档

用户文档

开发者文档


代码质量标准

本项目遵循严格的代码质量标准,确保代码的可维护性和可靠性。

TypeScript 类型安全

  • ✅ 启用 TypeScript 严格模式
  • ✅ 所有函数都有明确的类型定义
  • ✅ 禁止使用 any 类型(除非有充分理由并添加注释)
  • ✅ 使用类型守卫验证外部数据

代码文档

  • ✅ 所有导出函数都有 JSDoc 注释
  • ✅ JSDoc 包含参数说明、返回值说明和使用示例
  • ✅ 复杂逻辑添加行内注释说明

错误处理

  • ✅ 使用统一的 ErrorHandler 系统处理错误
  • ✅ 所有异步操作都有错误处理
  • ✅ 提供用户友好的错误消息

代码组织

  • ✅ 组件不超过 300 行
  • ✅ 函数不超过 50 行
  • ✅ 复杂逻辑提取到 composables 或工具函数
  • ✅ 保持单一职责原则

代码风格

  • ✅ 使用 ESLint 进行代码检查
  • ✅ 使用 Prettier 进行代码格式化
  • ✅ 遵循 Vue 3 Composition API 最佳实践

详细的编码规范请参见 docs/CODING_STANDARDS.md


贡献指南

欢迎提交 Issue 和 Pull Request!

提交代码前请确保

  1. 代码符合项目的编码规范
  2. 通过所有代码质量检查
  3. 添加必要的注释和文档
  4. 遵循 Conventional Commits 规范

开发流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'feat: Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

提交信息规范

使用 Conventional Commits 规范:

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式(不影响代码运行)
  • refactor: 重构
  • perf: 性能优化
  • test: 测试
  • chore: 构建/工具链更新

常见问题

如何修改全局快捷键?

在应用设置中可以自定义所有快捷键。

数据存储在哪里?

首次启动时可以选择数据存储位置,默认位置为用户文档目录。

如何备份数据?

在设置 > 数据管理中可以备份和恢复数据库。

支持哪些操作系统?

目前仅支持 Windows 10/11。


更新日志

查看 RELEASE_NOTES.md 了解最新版本的更新内容。


许可证

本项目采用 MIT 许可证。


致谢

感谢以下开源项目:


⬆ 回到顶部

Made with ❤️ by GigaPuddings

About

Local-first code snippet and knowledge workspace for developers, built with Tauri, Vue, and Rust.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages