Repository navigation
fix(browser): restore IME input and editing keys - #970
Conversation
|
对照最新 现在冲突不止 CHANGELOG,还有 |
a76eddd to
dd73767
Compare
dd73767 to
1b7ee76
Compare
|
@jubaoliang 已按此前建议重新 rebase 到最新 这次解决了 验证结果:浏览器后端 44 项、前端 15 项测试通过,生产构建、Ruff、mypy 和格式检查通过。完整后端测试为 4,524 passed / 18 skipped / 2 failed;两项失败均为依赖 Linux 本次 CI 仍显示 |
1b7ee76 to
dfe5d61
Compare
|
@jubaoliang 已重新 rebase 到最新 已按新增的 PR 规范补充实际工作台截图、操作步骤和检查清单。 全仓库前端测试和 ESLint 的失败及纯上游对照结果也已写入描述,没有将其标记为全绿。 本次 CI 仍为 |
Summary
Typing Chinese in the browser workbench currently sends the individual Pinyin keys to the remote page without opening the local IME. Backspace, Delete and navigation keys are ignored by the backend, and preview frames wait an additional 250 ms after each capture.
Input.insertText; avoid duplicate commits aroundcompositionend.The IME candidate window stays anchored near the viewer's top-left. Tracking the remote text caret is outside this change. The stream continues to use JPEG polling; the frame-rate target depends on capture and network latency.
Target branch
develop(feature / fix — default)main(release/*orhotfix/*only)Type of change
Visual verification
Screenshot from an isolated Octop instance built from
dfe5d616, using the actual workbench → WebSocket → remote Chromium path:中文输入 abcXYZinto the remote field.中文输入 abc, as captured below. Cmd+A followed by Chinese replacement and Enter was also verified.This screenshot comes from automated interaction with the running product. It does not show or claim a fresh manual test of the native macOS IME candidate popup. The reporter previously confirmed that popup in the Chrome-installed Octop app; composition event ordering and duplicate-commit prevention are covered by the regression tests.
Test plan
Validated on macOS against
developat6055fddb(2026-10-21). The sharedsend_json/is_connectedstream interface, Bridge support and upstream browser-page changes are preserved.UV_NO_SYNC=1 make all PYTEST_JOBS=4— passed, including Ruff, mypy and 5,091 tests passed / 35 skipped.cd dashboard && npm test -- src/hooks/useBrowserKeyboard.test.tsx src/hooks/useBrowserCanvasInteraction.test.ts src/hooks/useCanvasRemotePointer.test.ts— 15 passed.cd dashboard && npm run build— passed, including TypeScript checking.cd dashboard && npm run format:check— passed.Full-dashboard findings and upstream comparison
npm testreported 1,402 passed / 18 failed, with 10 failing files (including three suites that fail during collection). Re-running those 10 files with--maxWorkers=4gave 32 passed / 7 failed on this branch and 31 passed / 8 failed in a cleangit archiveof6055fddb, using the same installed dependencies.The stable failures reproduced upstream concern PDF/skill-preview collection (
DOMMatrix), missing mock exports in knowledge-base and chat-input tests, and the published-expert API expectation. The runs also contain timing-sensitive failures: the AuthGuard navigation assertion failed in the grouped PR runs but passed in isolated runs on both trees; channel tests timed out in the upstream comparison. The original grouped run also failed memory/history tests that passed in the reduced rerun. These results are disclosed rather than treated as a green full-dashboard suite.npm run lintreports 2 errors, both reproduced against the pristine upstream files: the unusedDEFAULT_CHANNEL_DISPLAY_CONFIGimport inpages/Agent/Channels/components/constants.test.ts, and a redundant Boolean call inpages/Chat/hooks/chatStore.ts. Neither file is changed by this PR. The browser files have no ESLint errors.Scope and review
The agreed scope is browser text input, editing keys and preview responsiveness. The candidate popup remains near the viewer's top-left; remote-caret tracking is outside this fix. Review covered both composition event orders, candidate-confirm Enter, paste, modifiers, key release, read-only mode and address-bar isolation. Existing stream error handling and shared callbacks are retained. No new dependencies or unrelated refactors were added.
PR Checklist
CHANGELOG.md