Vai al contenuto principale
M

dsh-ui-optimize

moonsand/dsh-ui-optimize

Switches that tune how DeepSeek Harness looks and behaves across the whole interface, not just a few screens; each works on its own and more arrive as the shell grows. Theme gallery of eight minimalist themes, each defining one palette for light and one for dark and applied through a single theme-token layer, plus sidebar panel folding that collapses the rail rows into one Panels launcher with search and keyboard control, and reload/restart actions at the sidebar foot. Each feature is gated by runtime detection: what the current build cannot do is disabled with a stated reason, and an unknown probe stays enabled. The sidebar Reload/Restart buttons are ported from the separately listed MoonSand/dsh-desktop-restart; uninstall that plugin before installing this one — with both, the sidebar foot shows two sets of buttons.

Installazione

dsh plugin --profile web add github:moonsand/dsh-ui-optimize

README

dsh-ui-optimize

English | 中文

A collection of switches that tune how DeepSeek Harness looks and behaves — the whole interface, not a few named screens. Each switch works on its own, and more arrive as the shell grows.

Today: a theme gallery of eight minimalist themes (each defining one palette for light and one for dark), sidebar panel folding — the panel rows collapse into a single Panels entry that opens a two-column launcher — and the desktop Reload/Restart buttons at the sidebar foot.

Colours travel only through ctx.theme.overrideTokens, as a single layer of theme variables. No structural CSS is injected and no other plugin's DOM is read, so an upstream redesign can at worst make the colours inert — it cannot break the layout.

Install

Install @moonsand/dsh-ui-optimize from the GUI plugin manager. Requires engines.dsh >= 0.2.1-rc.3.

Use

Open Settings → UI Optimize.

Themes

Celadon, Linen, Cream, Graphite, Indigo, Slate, Sage, Rose. Picking a card recolours the whole interface; Default restores the stock look. Every theme defines one palette for light and one for dark — switching Appearance between them carries the theme along, so there is no separate version to pick.

Desktop actions

Two switches control the sidebar-foot buttons:

  • Reload UI — reloads the page and client plugins only; the Host and running tasks keep going. Desktop app only: browser shells such as fnOS already ship their own refresh entry, so this switch stays off there and cannot be turned on
  • Restart app — restarts the whole app including its Host; interrupts the current conversation. Desktop app only: a browser session does not own the process that would have to be restarted

Sidebar

A switch folds the panel rows in the left rail into a single Panels entry. Clicking it opens a two-column launcher with the panel icons, a title and count, a search box once there are more than seven panels, and keyboard control (↑ ↓ to move, Enter to open, Esc to close). Panels that register later — including ones added by other plugins — are picked up on the next open, so nothing silently disappears from the list.

The entry calls the shell's own panel-selection API instead of synthesising clicks. A watchdog measures the folded row after mount and on every resize: if it cannot be measured, the switch turns itself off and the native sidebar comes back rather than leaving an empty rail.

The More row keeps its own line. Folding it in was tried and dropped: the shell's overflow menu only opens from a trusted click, which a plugin cannot produce, and the synthetic pointer events that came close also closed the launcher through the shell's click-outside handler.

The launcher follows the pattern of the community plugin dsh-sidebar-shelf: register a real rail row, hide the rest with one scoped CSS rule, enumerate entries through the slot API, and select a panel through the shell's own API rather than by faking clicks.

Known limitations

  • The theme choice lives in browser localStorage; it is lost with the browser profile or site data
  • Reload and Restart are desktop-app only: in a browser both switches are disabled and the sidebar-foot buttons are not rendered at all — the fnOS shell already provides its own refresh and restart entries
  • The restart action is a process-level operation that cannot be verified automatically
  • The More row is not folded; it stays in the native rail
  • The launcher keeps the shell's own panel order — it does not sort, pin or reorder
  • The More row is not folded; it stays in the native rail
  • The launcher keeps the shell's own panel order — it does not sort, pin or reorder
  • Sidebar folding and dsh-sidebar-shelf rewrite the same rail; enable one of them, not both

Development

node scripts/smoke.mjs

The smoke test covers the assembly contract only: the three runtime files parse, the theme table is complete (8 themes × 10 tokens × 2 schemes), and the published identity plus engines.dsh are intact. It does not check whether the palettes look right or whether the sidebar launcher opens.

License

MIT

Plugin correlati