Skip to content

feat: adapt to ds-bot 0.3.x (settings-page switch) + top-bar ADE entry + stealth switching - #2

Merged
JackWoods-code merged 2 commits into
JackWoods-code:mainfrom
Nickszy:adapt-ds-bot-0.3.x
Nov 11, 2026
Merged

JackWoods-code merged 2 commits into
JackWoods-code:mainfrom
Nickszy:adapt-ds-bot-0.3.x

Conversation

@Nickszy

@Nickszy Nickszy commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

背景

ds-bot 升级到 0.3.1 后,旧的切换逻辑失效:

  • 「切换经典 Agent 模式」这一项已从账号菜单挪进 Bot 设置 → 通用 → 经典 Agent 模式 → 切换(client.js 设置页)。
  • 旧插件里「点菜单最后一个分隔符后的菜单项」这个兜底,在 0.3.1 里指向了 Sign in to DeepSeek——所以按热键会弹出登录页,且切不回经典界面。

改动

1. 适配 ds-bot 0.3.x(修复切换)

  • Bot→经典路径改为:打开 Bot 设置 → 定位「经典 Agent 模式」行 → 只点文案恰为「切换」的按钮。
  • 菜单项/按钮全部按文案匹配,移除会点到「登录」的旧兜底。

2. 顶栏大入口

  • 在 ds-bot 侧栏顶部品牌区(.bt-side-top,窄栏回退 .bt-rail-top)注入「ADE」按钮,一键切换;被 React 重渲染清掉后由 500ms 刷新自动补回。

3. 无闪烁切换(隐身模式)

  • 切经典的过程中把账号菜单 / 设置层强制 display:none(元素留在 DOM 里,程序化点击照常生效),切换后 400ms 恢复;失败时补发 Escape 收起残留弹层。

4. 最终兜底

  • 两条 DOM 路径都失败时,写 ds-bot 自己持久化的 localStorage["ds-bot:surface"] 后刷新页面(ds-bot 启动时读取)。

5. 版本与兼容表

  • version 0.4.1 → 0.4.3
  • dsh.compatibility.dshReleases 补记 0.2.1-rc.4、0.2.2-rc.1

更新(0.4.4):快捷键在 macOS 上不可用 — 已修复

根因:keydown 判定用的是 event.key === "b"/"B" + altKey&&shiftKey。macOS 上 Option 是字符修饰键,⌥⇧B 产生的 event.key 是 ı(不是 b/B),所以 macOS 上热键永远不触发;Windows 的 Alt 不改写字符,因此只有 Windows 生效。

修法:

  • 改按物理键位判定:event.code === "KeyB"(与键盘布局、修饰键产出的字符无关);无 code 的环境回退到字符表 { b, B, ı, ∫ }。
  • 组合要求重写:shiftKey 必须;(altKey || (IS_MAC && metaKey));排除 ctrlKey;忽略 repeat 与 isComposing(输入法期间不触发)。
  • 平台探测 IS_MAC(userAgentData / navigator.platform / userAgent);提示文案按平台显示 ⌥⇧B / ⌘⇧B(mac)或 Alt+Shift+B(Win/Linux),共 6 处 tip 与 1 处 log;README/README.zh 同步。
  • package.json 0.4.3 → 0.4.4,CHANGELOG 增补。

测试:node --test 7 用例(原 5 + 新 2:Windows 组合矩阵 8 断言;mac 的 ⌥⇧B key=ı、⌘⇧B、无 code 回退、文案断言)。node --check 通过。

改动文件:lib/client.js、package.json、CHANGELOG.md、test/smoke.mjs、README.md、README.zh.md。

这是我(Nickszy)在本地为自用打的 0.4.3/0.4.4 补丁,回馈上游。若你更希望拆成多个小 PR(例如只提 0.3.x 适配、顶栏入口单独提、mac 热键单独提),我可以再拆。

…0.4.3)

- ds-bot 0.3.x moved 'Classic Agent mode' from the account menu into
  Bot settings -> General; rewire the Bot<->Classic path to the settings page,
  matching menu items/buttons by text. Removes the old 'last menu item'
  fallback that clicked 'Sign in to DeepSeek' and opened the login page.
- Add a top-bar 'ADE' entry (.bt-side-top, narrow rail -> .bt-rail-top).
- Stealth mode: hide account menu / settings layer during automation, restore after.
- Fallback: write localStorage['ds-bot:surface'] and reload if DOM paths fail.
- Bump to 0.4.3; compatibility records 0.2.1-rc.4 and 0.2.2-rc.1.
@Nickszy Nickszy mentioned this pull request Nov 8, 2026
Match the hotkey on the physical key (event.code === KeyB) instead of the
character it produces: on macOS Option is a character modifier and Option+Shift+B
reports key "ı", so the old `event.key === "b"` check never fired there and the
shortcut only worked on Windows.

- macOS additionally accepts Cmd+Shift+B.
- Tooltips name the platform's own modifiers (⌥⇧B / ⌘⇧B on macOS, Alt+Shift+B elsewhere).
- Auto-repeat and IME-composing key events are ignored.
- Smoke tests cover the Windows, macOS and no-`code` fallback paths.
@paulzh123456

Copy link
Copy Markdown

独立验证一下这个 PR 的核心修复(与作者无关联,不同环境):

  • 环境:DSH Desktop 0.2.2-rc.1 + ds-bot 0.3.2 + dsh-bot-toggle 0.4.1
  • 确认 0.3.2 账号菜单确实已无「切换经典 Agent 模式」项(ds-bot/client.js:16379-16389),开关在设置页 Mode 段(client.js:21822-21826,actions.setSurface("agent"))
  • 按本 PR 思路做了等价最小实现(设置页定位「经典 Agent 模式」行点按钮 + 最终写 localStorage["ds-bot:surface"] 后刷新兜底),用模拟 0.3.2 DOM 的桩跑通双向切换:
    • classic:经设置页成功
    • bot:经 .bt-return 成功

结论:0.3.x 适配部分有效,支持合并。顶栏入口与 mac 热键修复未单独验证,仅供参考。

@JackWoods-code
JackWoods-code merged commit d4aa212 into JackWoods-code:main Nov 11, 2026
1 check passed
@JackWoods-code

Copy link
Copy Markdown
Owner

感谢实现,方向完全正确。已合并进 main(merge commit d4aa212,保留你两个 commit 与署名),并随 v0.4.4 发布:https://github.com/JackWoods-code/dsh-bot-toggle/releases/tag/v0.4.4

合并后在 main 上做了一处 fix-forward(434813c):

  • ds-bot 0.3.2 的设置项文案改名:0.3.2 把账号菜单里的设置项从 Bot settings 改成了 Settings(中文「设置」)。原正则 /(Bot\s*设置|Bot\s+settings)/i 匹配不到它,0.3.2 下会等 1.5s 超时后落到整页刷新兜底。已放宽为 /(设置|Settings)/i(同时仍兼容 0.2.x–0.3.1 的「Bot 设置」),并同步了 errNoMenu 文案。
  • 新增一条 DOM 桩回归测试:账号菜单「设置」→ 设置页 General → Classic Agent mode 行 → 点「切换」,断言点到了按钮、没有触发 reload、没有写 ds-bot:surface;旧文案「Bot 设置」也一并覆盖。
  • README 环境要求补到 DSH 0.2.2-rc.1 / ds-bot 0.3.2(按源码核对),CHANGELOG 记录。

验证:

  • PR 分支:npm run check 通过,node --test 7/7;
  • fix-forward 后:npm run check 通过,node --test 8/8(新增的就是上面这条);
  • main CI(run 43049034848)success。

另外说明一下:fork 首次贡献的 CI 需要维护者手动批准,之前那两次 action_required 是这个原因,不是你代码的问题——以后提 PR 可以直接 @ 我批准。顶栏 ADE 入口和 macOS 热键都收下了。再次感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants