dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Touch-device comfort fixes for the DeepSeek Harness web client: ghost tooltip suppression + touch-action policy
Touch-device comfort fixes for the DeepSeek Harness web client, packaged as an out-of-tree dsh bundle plugin.
On phone and tablet browsers the dsh web UI shows six touch-specific problems:
mouseenter/focus, which mounts a tooltip; when the tapped control then moves (sidebar collapse animation), no trailing mouseleave ever fires on touch browsers, so the bubble lingers indefinitely. Reproduced on WebKit: the tooltip stays visible 3+ seconds after every tap with no pointer anywhere near. This sheet hides [role="tooltip"] under (hover: none) and (pointer: coarse) — tooltips are a hover affordance, and coarse pointers get none.touch-action rules, so on iOS Safari rapid second taps zoom the page instead of clicking (and first clicks carry the legacy delay). The sheet sets touch-action: manipulation on interactive elements, leaving pinch zoom untouched.data-details-collapsed to data-rightbar-collapsed; the plugin follows that flag.Desktop pointers are unaffected: both rules key off input modality (touch-action) or pointer class (hover/pointer media features).
dsh plugin --profile web add file:/path/to/dsh-mobile-comfort
Then restart the profile (dsh web). Verify by loading the UI on a phone: tapping the sidebar toggle must not leave a tooltip behind.
For the drawer regression, run python3 tests/mobile_comfort_test.py with Playwright installed. It checks the installed DSH layout flag, full-width conversation behind the 393px touch drawer, outside-tap dismissal without click-through, and unchanged 1440px desktop layout.
>=22.0.0.0.1.5-rc.2 and 0.1.7-rc.2 are declared as compatible in package.json. The 0.1.2 plugin release gave the closed mobile drawer a full-width conversation and fixed its grid placement and backdrop behavior.0.1.5-rc.2: local install, dsh --profile smoke --help composition check, and uninstall.0.1.7-rc.2 was checked in a separate isolated DSH_HOME using a profile created from the shipped Web template. The plugin installed and composed, the Web server started, and Chromium and WebKit phone views loaded its stylesheet with a full-width conversation. WebKit opened and dismissed the mobile drawer without click-through. The plugin then uninstalled cleanly. Neither test touched the normal profile or session state; rollback remains untested.0.2.1-alpha.1, 0.2.1-alpha.2 and 0.2.1-alpha.3 were each checked in their own isolated DSH_HOME with a profile created from the shipped Web template. For all three: the plugin installed, composed with its ui-mobile-comfort row, uninstalled cleanly, and dsh --profile <name> --dump-config showed the row present before removal and absent after. On 0.2.1-alpha.2 the Web server also booted and its boot payload listed @oksure/dsh-client-ui-mobile-comfort/client.js among the served client modules. The layout contract the stylesheet keys off (data-rightbar-collapsed, data-sidebar-collapsed) and the selectors it uses (_sessionOverflowButton, Collapse sidebar) are present in all three releases. Rollback remains untested.lib/client.js — browser half: injects the responsive stylesheet and the mobile drawer outside-tap handler for the lifetime of the plugin fiber (ctx.effect, HMR-safe disposer).lib/index.js — host half: no-op (browser-only plugin).cordis.patch.yml — bundle patch inserting the ui-mobile-comfort row.The root causes live in @deepseek-ai/dsh-client-ui-primitives (Tooltip.tsx: onFocus shows immediately and only disabled handles the no-mouseleave case) and in the absence of any touch-action policy. A full diagnosis with engine-level event traces is in docs/mobile-touch-report.md; it is written up to be posted to the upstream Discussions as well.
MIT