Repository navigation
SVCode v0.1.0
第一个版本:一个几 MB 的 Windows 文本 / 代码编辑器,带编辑器分组、会话恢复和秒级全盘文件名搜索。需要 Windows 10 或更新(渲染用系统自带的 WebView2)。
编辑
- 标签页 + 编辑器分组(横向 / 纵向拆屏),多分组时活动分组有醒目的蓝色描边。
- 打开中的文件被其他程序修改后自动刷新内容,不用关掉重开;有未保存更改时不覆盖,只在状态栏提示。
- 查找 / 替换面板:匹配计数(如 2/17)、区分大小写、正则、全词匹配,样式跟随深浅色主题;选中文字后按 Ctrl+F 直接以选区为搜索词。
- 编码识别:UTF-8 / UTF-16 / GBK / GB18030 / Windows-1252,保存按原编码写回;编码无法表示的字符拒绝保存而不是写坏文件。
- 会话恢复:标签页、分组、布局连同未保存草稿在重启后完整恢复;「视图 → 刷新」(Ctrl+R、F5)整程序重载前先存盘,草稿不丢。
- 设置面板(Ctrl+,);禁用 WebView2 默认右键菜单,界面空白处右键不再弹返回/刷新/另存为,文件树、标签页、快速访问的自定义菜单不受影响。
浏览与预览
- 文件树 + 快速访问 + SMB 网络位置挂载,右键「在终端中打开」「使用系统默认程序打开」,双击文件可直接交给系统程序。
- 侧边栏「资源管理器」与「搜索结果」是两个常驻 tab,内容都保持挂载:来回切换时文件树的滚动位置与已有搜索结果都不丢;右键「定位」切到文件树 tab 而不是清空搜索。
- 状态栏显示当前选中项的完整路径并带一键复制(成功后短暂显示对勾);分组状态栏含文件「修改于 / 创建于」时间,「N 个文件已索引」常驻侧边栏底部。
- 预览:文本 / 代码、Markdown、HTML、图片、xlsx(后台解析);二进制与不认识的类型给出「不支持预览」卡片,可直接交给系统默认程序或在资源管理器中定位。
- 文件树图标覆盖常见类型:视频、音频、可执行与安装包、压缩包、字体,以及设计稿(Axure rp、Figma、Sketch、Photoshop、Illustrator、XD)与 3D/CAD 模型,
package.json/package-lock.json显示 Node 图标。 - 深色 / 亮色 / 跟随系统主题;中英双语界面。
全盘文件名秒级搜索(内置 WFSearch 引擎)
- 全盘搜索由自带的 WFSearch 引擎提供:直读 NTFS 的 MFT + USN 日志建索引,百万级文件全量索引约 2 秒,之后走增量实时跟进。
- 安装程序同时把内置引擎注册成 Windows 服务(LocalSystem、开机自启),所以装完即用、SVCode 全程不必提权运行。读 MFT 是管理员级操作,走服务正是为了避免「普通权限下两个盘都报索引失败、界面只显示引擎未就绪」= 整个文件名搜索不可用。
- 服务跑
%ProgramFiles%\WFSearch\wfs-server.exe这份副本,不指向安装目录里的 sidecar:服务运行期间锁着自己的 exe,指向安装目录会让每次升级撞文件占用,卸载后还会留下悬空的服务引用。 - 本机若已有独立安装的 WFSearch 服务,安装程序认出后完全不碰,卸载时也不删,SVCode 直接复用。
- 服务已注册时 SVCode 不再拉起自己的 sidecar:sidecar 以普通权限运行,能占住 127.0.0.1:15100 却读不到任何 MFT,还会把服务永久挡在端口外面。只有在机器上没有该服务时才回退到 sidecar,而那条路要以管理员身份运行才能建索引。
- 通信走引擎的回环 HTTP 网关,并用引擎启动时发布的 token(
%ProgramData%\WFSearch\http.token)鉴权,两侧都需引擎 0.1.2 或更新(0.1.2 起注册服务改为部署方的事、启动时端口被占不再致命、快照带校验)。查询语法:空格分词 AND、*/?通配、含\的词按全路径匹配(文件夹右键「在其中搜索」即靠它)。 - 打进安装包的引擎版本锁在
scripts/fetch-wfs.mjs,二进制不提交进仓库(本地与 CI 按版本号 + sha256 拉取校验);升级靠手工改锁版本常量,下一次打包才用新版。
安装与自动更新
- 只为所有用户安装(UAC 确认、可选安装目录与盘符),升级自动回到同一位置。注册服务必须要管理员权限,因此不提供「仅为当前用户安装」;代价是自动更新从此会弹一次 UAC。
- 注册服务在两条打包路上分别实现:NSIS 用
installerHooks(src-tauri/wfs-service.nsh),MSI 用 WiX fragment(src-tauri/wfs-service.wxs);卸载按 HKLM 的所有权标记判断该不该停服删服。引擎从 0.1.2 起删掉了自带的install/uninstall子命令 —— 注册是部署方的事,所以 NSIS 钩子直接走 SCM:sc create WFSearch binPath= "\"…\wfs-server.exe\" run" obj= LocalSystem start= auto,随后sc query复核,卸载sc delete。升级只换文件、binPath 不变,不重建服务。 - NSIS 钩子在
net start之前会先taskkill掉残留的 sidecar:引擎遇到端口被占是直接退出的,服务被抢不到端口的 sidecar 挡在门外就会启动失败并立刻停止,而服务管理器把这显示成误导性的「错误 1:函数不正确」。 - 体积:NSIS 安装包约 4.4 MB,MSI 约 5.5 MB —— WiX 的
ServiceInstall要求服务二进制本身是包内组件,引擎被打进两份;NSIS 只在安装时现场复制。 - 系统托盘后台运行:左键唤起、右键菜单,关窗默认缩到托盘(设置可关),单实例再次启动直接唤起已有窗口。
- 「检查更新」用 Tauri 官方 updater,更新地址固定为 GitHub Releases 的
latest.json;安装包带 minisign 签名,下载后校验通过才安装。启动 3 秒后静默检查一次、24 小时内最多一次,发现新版只在「文件」菜单的「检查更新」右侧显示版本号,不弹窗打断;关于对话框里可直接下载并安装、显示进度,装完自动重开。
若某个盘被报为索引失败,在管理员终端执行
net start WFSearch;或跑一次
"%ProgramFiles%\WFSearch\wfs-server.exe" doctor,它会逐个 ioctl 探测并打印在哪一步被拒。
本次发布的 Windows 安装包见下方 Assets(.exe 为 NSIS 安装程序,.msi 为 MSI 安装包)。