Repository navigation
Releases: mnigc/SVCode
Releases · mnigc/SVCode
Release list
SVCode v0.3.2
文档内容搜索上线,外加一轮全面的稳定性与安全修复。
文档内容搜索
- 侧栏搜索升级为三个标签:资源管理器 / 文件名 / 文档内容,一个搜索框通吃。
- 输入即搜文件名;输入停顿后自动扫描文档内容并显示每个文件的命中数与上下文片段。
- 支持路径限定:输入
D:\报告 预算会在路径匹配的文件夹内扫描包含「预算」的文档。 - 全文搜索由 WFSearch 引擎驱动(NTFS 索引,秒级全盘),本版本捆绑 WFSearch 0.2.0 引擎(文档内容扫描所需);安装程序直接注册/升级系统服务,安装包仅保留 NSIS 一种格式。
稳定性与安全
- 修复移动/复制文件到已有同名目标时被静默覆盖的问题——现在会明确拒绝并提示。
- 修复保存期间继续输入、格式化加载期间继续输入可能丢失或弄乱内容的问题。
- 外部程序修改过的文件,保存时会被拒绝并提示重新加载,不再静默覆盖他人改动。
- 文件读写移出界面主线程:网络盘、离线映射盘等慢位置不再冻结整个窗口。
- 全文搜索引擎不可用时给出具体原因,不再伪装成「无结果」。
- 安全加固:不允许通过「用系统默认程序打开」直接运行可执行文件/脚本。
- 修复 Ctrl+S 触发两次并发写盘、中文输入法确认候选词误触发重命名/搜索确认等问题。
- 修复「目录删除后重建不再监听变化」「分组行高被重置」「空内容搜索无法重试」等问题;降低内存占用、清理若干界面瑕疵。
- 默认侧栏宽度加大到 320px;侧栏空白处右键新增「刷新」。
本次发布的 Windows 安装包见下方 Assets(.exe 为 NSIS 安装程序)。
SVCode v0.3.1
Windows 安装包见下方 Assets。
本次发布的 Windows 安装包见下方 Assets(.exe 为 NSIS 安装程序,.msi 为 MSI 安装包)。
SVCode v0.3.0
编辑器能力大版本:代码补全、格式化、文档大纲、颜色预览、缩进参考线一起上线。需要 Windows 10 或更新(渲染用系统自带的 WebView2)。
代码补全
- 所有语言都有基础补全:JS/TS、Python、CSS、HTML、JSON、SQL 等用语言自带的关键字 / 成员 / 作用域补全;其余语言(Shell、PowerShell、Ruby、Lua、Go、Rust、C/C++、Java 等)补关键词、常用库函数和代码片段,并有「文档内单词」兜底。
- HTML/Vue/XML:输入
</自动建议对应的闭合标签,标签名、属性、属性值都有候选。 - 修复快速切换标签页后语法高亮和补全永久失效的问题(语法包还没加载完就切走时,无语法状态被缓存了下来)。
格式化
Shift+Alt+F或 文件 → 格式化文档:JS/TS 全家、JSON、CSS/LESS/SCSS、HTML/Vue、Markdown、YAML 走 Prettier 引擎(首次使用时才加载,不占启动体积),格式化后光标位置保持不动。- 编辑器内右键:有选中代码时是「格式化选中代码」(只动选中区域,其余字节不变),没有选中时是「格式化文档」。
- 其他语言(如 Python、SQL)按语法树重缩进;只读文件和不支持的类型会给出提示。
文档大纲与颜色预览
Ctrl+Shift+O打开底部大纲面板:列出当前文件的函数 / 类 / 结构体 / Markdown 标题,支持筛选,点击直接跳转。- CSS/LESS/SCSS/HTML/Vue/SVG 里每个颜色值后面跟一个小色块,鼠标悬停显示大色块和色值。
编辑体验
- 缩进参考线:每级父缩进画一条淡竖线,跟随缩进宽度设置。
- Markdown 编辑侧支持表格、删除线等 GFM 语法高亮,``` 代码块按对应语言做语法高亮。
- 新快捷键:
Ctrl+Shift+K删除行,Alt+↑/Alt+↓上下移动行,Shift+Alt+↑/Shift+Alt+↓向上 / 向下复制行,Shift+Alt+A块注释。 - 零宽空格等不可见字符显示为可见符号,空文件显示占位提示。
其他
- HTML 预览支持引用本地图片等资源(asset 协议);窗口拖放行为调整;应用图标更新。
暂缓
- 语法错误波浪线与输入
>自动闭合标签:会触发 WebView2 的输入锚定缺陷(打字时光标跳到文档开头),在找到不依赖光标附近行内装饰的呈现方式前暂不启用。闭合标签仍可通过输入</从补全列表选择。
本次发布的 Windows 安装包见下方 Assets(.exe 为 NSIS 安装程序,.msi 为 MSI 安装包)。
SVCode v0.2.0
文件树现在能用键盘直接操作了,选中态也改成「点中谁就高亮谁」。需要 Windows 10 或更新(渲染用系统自带的 WebView2)。
文件树键盘操作
- 在文件 / 文件夹上按
Ctrl+C/Ctrl+X/Ctrl+V即可复制、剪切、粘贴,F2重命名、Del删除(同样弹确认)。粘贴的目标和右键菜单一致:选中文件夹就粘进它本身,选中文件则粘进它所在的目录。 - 这些快捷键只在键盘焦点落在树行上时生效,因此编辑器里的
Ctrl+C/Ctrl+V/Del一切照旧 —— 想搬文件就点一下它(或它的目标目录)再按快捷键,和资源管理器的用法相同。 - 方向键导航:
↑/↓走可见行,→展开、←折叠或跳回上级目录,Enter打开。 - 右键菜单的复制 / 剪切 / 粘贴 / 重命名 / 删除补上了快捷键提示。
选中态
- 选中文件时上级文件夹不再保持蓝色高亮:背景只落在实际点中的那一行,文件与文件夹共用一套选中样式,看得见的就是快捷键要作用的那个。
- 剪切中的条目(含被剪文件夹的整棵子树)显示为半透明,直到粘贴落地。剪切后不理会直接关程序也不会有任何后果 —— 移动只在粘贴时才发生。
修复
- 剪切带内容的文件夹、或重命名已展开的文件夹后,新位置在程序里展开是空的(内部子项列表仍指向移动前的路径),而资源管理器里文件明明都在;现在整棵子树的路径一起跟着搬,选中项与状态栏路径也跟着走。
本次发布的 Windows 安装包见下方 Assets(.exe 为 NSIS 安装程序,.msi 为 MSI 安装包)。
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 安装包)。