Repository navigation
Releases
v0.3.0 双向同步(免费账号网页端点)
概览
v0.3.0 把 dsh-better-overleaf 从“快照拉取 + Git 令牌推送”变成“任意账号、任何时间、双向同步”——免费账号通过 Overleaf 网页端点(不再需要 Git 令牌)即可把本地修改推回 Overleaf;同时 UI 重构为以同步条为核心、设亮教程与 PDF 阅读器。
亮点
1. 快照模式双向同步(核心)
免费账号也能双向同步。不再依赖 Git 桥,按以下路径推送到 Overleaf:
- 拉一次远端 zip → 本地仓进新 commit
git diff remote..pre解析出本地变更(add/modify/delete/rename)- 逐个应用:删除旧 doc/file、上传新 doc/file
- 再拉一次确认结果
实现细节见 src/overleaf-web.ts(手动实现 socket.io 0.9 协议,手工 multipart upload)和 src/transports.ts:apiSnapshotPush。由于 Overleaf 的上传端点不支持 in-place 修改,“更新”采用 “删除 + 上传同名” 策略,所以同名的修订历史会断开。
2. UI 重构
原 4 卡片堆叠的页面(登录教程占据首屏)重写为:
- 顶部 同步条:项目名 + 状态 pill + 拉取 / 推送 / 检查 + 编译预览(检测到 latexmk 才出现)+ 设置
- 中部 项目列表:登录后自动加载,点项目 = 直接绑定
- 底部 绑定列表:每行状态行 + 行内拉取/推送/打开/解绑,快照镜像多一个「切换 Git 双向」按钮
- 设置弹窗:所有连接说明都在
<details>里折叠,默认不占货仓
3. PDF 阅读器
用 pdf.js 替换 sidebar 内置的 iframe PDFium 渲染器。包含缩放、适应宽度、页码跳转、目录、全文搜索、文本选择复制、深色模式反色适配。以 priority 10 注册为 overleaf-pdf,全局替换 .pdf viewer。
4. 智能同步
- 拉取:自动提交未保存修改后 rebase;有冲突时中止并列出冲突文件
- 推送:远端有更新时拒绝并提示先拉取,防止覆盖
- 检杏:实时显示「落后 N · 领先 M · 远端 X 前更新 · 上次同步 X 前」
- 模式切换:快照项目可一键升级为 Git 双向(splice 本地提交到远端历史),远端较新时拒绝
5. 后台自动同步
绑定后不需打开 Overleaf 标签页。设置里选「每 5/15/30 分钟 / 每 1 小时」拉动间隔;自动推送独立开关(默认关);跳过工作区有未提交修改的镜像并提醒。
6. 本地编译
检测到本机 latexmk 后,同步条出现「编译预览」按钮:在镜像目录 latexmk -pdf 一次,生成 PDF 后在新标签页用新的 pdf.js 阅读器打开。失败时原样回显末尾几行日志。
7. AI 工具
在 ctx.tools 注册了 4 个工具,会话里可直接调用:
overleaf_status:查项目同步状态overleaf_pull/overleaf_push:拉 / 推overleaf_compile:本地编译,返 PDF 路径
这是 VSCode 做不到的——在 DSH 会话里一句话驱动完整编辑-同步循环。
8. Bug 修复
- 快照拉取以前会误删
.overleaf.json,导致后续同步 / 编译报错“not bound”。现在保留并在每次拉取后重写 - “打开”现在自动选含
\documentclass的 .tex,不再打开 sty 等辅助文件 - 补
bind的“认领现有目录”逻辑,丢失绑定的镜像能重绑 - 快照项目可一键升级为 Git 双向,含远端较新保护
代码质量
- 36 个测试全部通过(6 个 spec 文件)
- 含一个推推送集成测试(真 HTTP server + ws server 模拟 overleaf.com 端到端跑一遍)
- TypeScript 严格模式 typecheck 绿
- Peer 范围 调整到 sidebar 0.13–0.18
仓库
- 主仓库:https://github.com/Hoemr/dsh-better-overleaf
- 依赖:DSH Desktop 2.0.4 + dsh-better-sidebar 0.13–0.18
v0.2.1
修复 (DSH Desktop 2.0.x 兼容)
- 客户端 bundle 注册 id 必须等于 npm 包名;改为从 package.json 推导,防止再改名后脱同步(DSH Desktop 2.0.3 强制包身份校验 + 客户端模块系统按包名查找)
- 放宽 dsh-better-sidebar peer 范围至 <0.17(registerTab / openTab / openFile 客户端接口与 0.16.1 验证兼容)
- 新增 scripts/replug.ps1:一键重新构建 + 重新接线 + 校验插件契约(身份 / patch / 客户端 id / loader 行名)
Install
dsh plugin --profile desktop add dsh-better-overleaf@0.2.1