这个项目能做什么
GridSnap 是一个开源桌面实用程序,由 Tauri v2、React 18、TypeScript 和 Rust 构建。它将敏感数据——SSH 命令、凭证、API 密钥、连接字符串和代码片段——呈现为虚拟化的电子表格式网格,可以通过全局热键(默认 Ctrl+Shift+Space)召唤。
网格引擎:虚拟化的 1000×26 网格;键盘导航(方向键、Tab、Enter、Escape);直接输入编辑;通过点击拖动或 Shift+方向键进行多单元格选择;通过悬停按钮或 Ctrl+C 复制(范围为 TSV 格式);Ctrl+V 将 TSV 数据粘贴到网格中;列和行调整大小;在所有单元格中搜索,并立即高亮显示;通过 Ctrl+S 手动保存;内置帮助面板,包含快捷键和提示。
工作表:多个带有彩色标签的工作表;添加、删除和重命名,并带有删除确认;拖动进行重新排序;Ctrl+Tab 和 Ctrl+Shift+Tab 切换;Ctrl+1-9 直接跳转;Ctrl+K 快速切换面板;右键单击标签操作。工作表支持遮蔽(整个工作表显示 ●●●●)、每个单元格的遮蔽/取消遮蔽,以及可选的每张表密码。受密码保护的工作表在每次标签切换时都会锁定,搜索在锁定工作表上被禁用,删除受保护的工作表需要密码确认。暴力破解保护在 10 次错误尝试后施加两分钟的冷却时间,并跨重启保持。
安全性:默认无密码,使用明文 JSON 存储库,直到设置密码。可选的主密码对存储库进行加密。每张表的密码使用 AES-256-GCM,并带有 Argon2id 密钥派生(64MB 内存、3 次迭代、4 个并行度),并存储验证令牌而不是明文哈希。存储格式为盐(16B)| 随机数(12B)| 密文 | 标签(16B)。密钥在使用后通过 Rust 的 zeroize 进行清零。该应用程序不进行任何出站网络连接,也不包含任何遥测或云组件。
桌面集成:始终置顶的无边框窗口,带有自定义标题栏;系统托盘,用于显示/隐藏;可配置的全局热键;关闭按钮最小化到托盘;可选的系统启动时启动;报告的包大小约为 8.5MB,RAM 约为 30MB。
主题:11 种内置主题,可在设置中选择——Carbon(默认)、Midnight、Ocean、Aurora、Deep Teal、Light、Velvet、Nordic、Rose、Terminal 和 Slate。主题使用 CSS 自定义属性,可以通过在 src/theme/themes.ts 中添加条目进行扩展。
从源代码构建:前提条件是 Node.js 18+ 和 Rust 1.70+。克隆仓库,然后在 gridsnap 目录中运行 npm install,npm run tauri dev 进行开发,或 npm run tauri build 进行生产。
使用方法:第一次启动直接打开;通过点击或方向键导航;通过双击或 Enter 编辑;通过悬停按钮或 Ctrl+C 复制;通过 Ctrl+V 粘贴 TSV 数据;通过 Ctrl+S 保存;通过 + 标签创建工作表;通过标签点击、键盘快捷键或 Ctrl+K 搜索切换工作表;通过拖动标签重新排序;通过右键单击遮蔽工作表或单元格;根据需要设置工作表或主密码;通过 Ctrl+Shift+Space 或关闭按钮隐藏;通过托盘图标菜单退出。
技术栈:Tauri v2 壳,使用原生 OS webview;React 18 + TypeScript 前端;带有自定义属性的 CSS Modules;自定义虚拟化网格渲染器(前缀和加二分搜索);Zustand 状态;Vite 6 构建;Rust 中的 AES-256-GCM + Argon2id 加密;本地文件系统上的加密 JSON 存储库。
该项目采用 MIT 许可证。
评论
0 评分人数达到10人后显示
登录后参与讨论。