Introduction

DeepSeek Harness (DSH) uses a plugin-based architecture, allowing users to extend the functionality of the Web GUI through configuration. The native Web interface often has insufficient interaction details on mobile devices, such as the input method unexpectedly appearing when switching sessions, inconvenient scrolling in long conversations, and conflicts between sidebar operation logic and touch gestures.

dsh-qol is an experience-optimization plugin for the DSH Web GUI, focused on resolving these mobile interaction pain points. It does not change the page layout or font size; it only improves usability through behavior correction and interaction enhancement. The plugin is maintained by john-walks-slow, uses the MIT license, and all logic runs client-side.

Core Features

The plugin features are concentrated in the QoL section of the Settings page, grouped into four categories: navigation switching, input keyboard, touch feedback, and display settings.

  • Active Session Tab Bar
    • Displays open session tabs horizontally at the top of the page.
    • Supported interactions: right-click context menu (close, pin/unpin, close others); mouse drag to reorder; horizontal scrolling of the tab bar with the mouse wheel; switch display modes (standard by opening order, most recent active by time order).
    • Prevention of accidental selection: new sessions appear only after the first message is sent; pinned tabs are not culled by viewport trimming.
  • Sidebar interactions
    • Swipe to open/close: right swipe to expand, left swipe to collapse, with finger-following drag, boundary rebound, and inertial settling effects.
    • Layout optimization: when expanded, it covers the content as a floating layer without compressing the main content width; supports dismissal through a theme-aware translucent scrim.
    • Automatic collapse: on narrow screens (≤768px), the sidebar automatically collapses after switching sessions.
  • Long conversation handling
    • Message jumping: provides “Previous/Next user message” locator buttons for reviewing long conversations step by step.
    • Lazy loading: scrolling to the top of a conversation automatically triggers the host’s “Load earlier” feature while keeping the viewport anchored.

Input and Keyboard Adaptation

  • Input method/keyboard adaptation
    • Fixes the viewport meta attribute and uses a 100dvh height chain with visualViewport CSS variables to resolve safe-area and keyboard occlusion issues on iOS and Android.
  • Send control
    • By default, pressing Enter in the input box inserts a line break; use Ctrl/⌘+Enter to send messages.
  • Space optimization
    • Hides the permission selection dropdown inside the input box to save horizontal space.

Touch and Feedback

  • Touch feedback
    • Enables touch-action: manipulation to eliminate the 300ms click delay.
    • Provides zero-delay visual press feedback and respects the system prefers-reduced-motion setting.
  • Drag fix
    • Disables touch long-press dragging, fixing the issue on Android devices where long-pressing a sidebar session row triggers system dragging and causes the page to freeze (desktop mouse drag reordering is unaffected).

Display and Settings Page

  • Settings page rewrite
    • On mobile devices (≤768px), changes the settings dialog to a full-screen stacked layout and supports horizontal scrolling of tabs.
  • Scroll control
    • Prevents horizontal scrolling in the main content area; code blocks and overly long tables scroll horizontally within their containers, preventing the entire page from jiggling.
  • Animation optimization
    • Replaces SVG animations for status indicators with CSS transform to improve rendering performance.

Installation and Activation

After installing the plugin, dsh automatically mounts the configuration. After refreshing the Web page, the QoL section will appear on the Settings page.

Installation command:

dsh plugin --profile web add dsh-qol

Configuration persistence:

All toggle states are saved in the browser’s localStorage under the key dsh.qol.v1; group collapse states are saved in dsh.qol.groups. Clearing the corresponding keys resets the settings to defaults.

Usage Instructions

  1. Open the dsh Web GUI.
  2. Go to the Settings page and locate the QoL section.
  3. Toggle the switches as needed. The plugin uses an “attribute master switch” mechanism: toggling a switch adds or removes the corresponding data-qol-<feature-id> attribute on the html tag, taking effect immediately without refreshing the page.

Notes

  • Runtime environment: a pure client-side plugin with zero npm runtime dependencies; it does not read session content, make network requests, or perform filesystem writes.
  • Permissions: no special permissions are required; it only modifies CSS, DOM events, and the viewport meta.
  • Cross-platform: zero impact on desktop; mobile-specific rules are constrained by media queries.
  • Compatibility: can coexist with the dsh-web-mobile-fix plugin; the two provide optimizations at different levels.