Skip to content

normojs/snapless

 
 

Repository files navigation

Snap PC

Snapless

Snap 的 macOS / Windows 桌面端版本

Snap 在本项目中读作 nap,开头的 s 不发音。


项目定位

这个仓库作为 /Users/fushilu/workspace/revocloud/snap 的电脑平台版本使用,当前只覆盖 macOS、Windows 桌面环境。Linux 后续再支持;手机平台不在本项目范围内,也不会从本仓库发布 Android / iOS 产物。

主仓 /Users/fushilu/workspace/revocloud/snap 侧重手机端输入法、Rust Core、移动端管理界面和输入法能力;本仓库侧重 macOS / Windows 桌面端常驻应用、全局快捷键、麦克风录音、语音识别、AI 润色、文本插入、托盘和桌面窗口体验。

当前仓库已统一使用 snapless / Snapless 命名。面向产品表达时,它是 Snap 的 PC / 桌面端版本;其中 Snap 读作 nap

产品目标

Snap PC 只做一个清晰的桌面工作流:把用户说出的话转换成可直接落到当前光标处的文字。

核心流程:

全局快捷键 -> 录音 -> ASR 转写 -> AI 润色 / 整理 -> 插入到当前光标

如果目标应用无法直接接收插入,应用应尽量回退到剪贴板,避免用户说过的内容丢失。

与 Snap 主仓的关系

snap
  手机端输入法 / Rust Core / 输入法主体验

snapless
  macOS / Windows / 桌面端语音输入体验

两边共享同一个产品方向:Snap 是一个安静、可靠、偏系统工具气质的输入产品。手机端重点由主仓维护;本仓重点是桌面级语音输入、全局热键和跨应用插入。

当前能力

  • Tauri 2 后端,Rust + React / TypeScript 前端。
  • 当前支持 macOS 12+、Windows 10+;Linux 后续再支持;本项目不发布手机端产物。
  • 每次 push / PR 都会通过 GitHub Actions 验证 macOS 与 Windows 编译;beta / main 应配置分支保护,要求 CI / macOS checksCI / Windows checks 通过后再合并。
  • 全局快捷键触发录音,支持按住说话和切换式录音。
  • 云端 ASR:Volcengine、OpenAI Whisper 兼容接口等。
  • 本地 ASR:macOS Qwen3-ASR、Windows Foundry Local / sherpa-onnx 相关路径。
  • AI 润色:OpenAI-compatible provider、Ark、DeepSeek、Doubao、Anthropic / Gemini 相关路径。
  • 流式插入:润色结果可以逐字符写入当前光标,失败时回退一次性粘贴。
  • 历史、词典、纠错规则、风格包、风格包市场、本地模型管理。
  • 托盘图标、桌面状态胶囊、设置窗口、划词语音问答面板。

目录结构

.
├── snapless-all/
│   ├── README.md
│   └── app/
│       ├── package.json
│       ├── src/                 # React / TypeScript 前端
│       ├── src-tauri/           # Rust / Tauri 后端
│       └── scripts/             # 平台构建与验证脚本
├── docs/
├── scripts/
├── README.md                    # 当前 Snap PC 项目说明
└── README.zh.md                 # 中文说明

快速开始

普通用户安装、授权、配置提供商和运行配置测试,请先看 桌面用户教程

开发快速开始

首次拉取后先初始化子模块。macOS 本地 ASR 会用到 vendored 的 qwen-asr

git submodule update --init --recursive

启动桌面端开发环境:

cd snapless-all/app
npm ci
npm run tauri dev

Tauri 开发模式会启动 Vite dev server,并打开桌面壳。

常用验证

前端类型检查和打包:

cd snapless-all/app
npm run build

Rust 后端检查:

cd snapless-all/app
cargo check --manifest-path src-tauri/Cargo.toml

Rust 后端单测:

cd snapless-all/app
cargo test --manifest-path src-tauri/Cargo.toml --lib

平台专项脚本:

cd snapless-all/app
npm run check:macos-capsule-spaces
npm run check:hotkey-injection
npm run check:windows-startup-lifecycle

构建

macOS 构建:

cd snapless-all/app
INSTALL=0 ./scripts/build-mac.sh

Windows 构建仍沿用当前工程的 MSVC / GNU 路线,细节见:

snapless-all/README.md

命名约定

  • 用户可见名称:SnaplessSnap PC
  • 产品发音:Snap 读作 nap
  • 主仓关系:本仓是 snap 的 PC / 桌面端版本。
  • 代码、bundle id、日志路径、安装包名、系统凭据服务、脚本变量统一使用 snapless / Snapless / SNAPLESS

数据与凭据

当前实现使用 Snapless 的数据与凭据路径:

macOS logs: ~/Library/Logs/Snapless/snapless.log
Windows logs: %LOCALAPPDATA%\Snapless\Logs\snapless.log
credential service: ltd.mbu.app.snapless
legacy credentials: ~/.snapless/credentials.json

如果后续要兼容更早的历史数据,再单独补迁移逻辑。

许可证

本仓库沿用当前代码库的 MIT License,见 LICENSE

About

Hold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS & Windows. (按住快捷键说话,松开即得润色后的文字)

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 36.4%
  • Rust 33.5%
  • TypeScript 21.2%
  • JavaScript 4.0%
  • PowerShell 2.2%
  • C++ 1.1%
  • Other 1.6%