Xliecc/dsh-session-theme

皮肤Skin 原生Native ⭐ 3 MIT Web 界面Web UI

DSH web plugin: the left sidebar shows every session's theme right on page load — no need to click into a conversation first.

catalog 简介 / catalog descriptioncatalog description:DSH web plugin: show every session's theme in the left sidebar on load

项目介绍Project Overview

dsh-session-theme 是 DSH Web 皮肤插件,启动时对未打开的冷会话执行 coldSnapshot,从日志重建 title 投影并写回缓存,使侧边栏加载即显示每个会话主题,无需先点入。适合侧边栏只显示文件夹名、想直接看到会话主题时使用。注意:安装后需硬刷新浏览器;损坏日志会被跳过,不影响其他会话。

dsh-session-theme is a DSH Web skin plugin. At startup, it runs coldSnapshot for unopened cold sessions, rebuilds the title projection from the log, and writes it back to the cache so the sidebar shows every session theme on load without clicking in first. Use it when the sidebar only shows folder names. Caveat: hard-refresh the browser after install; corrupted logs are skipped per session.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin add dsh-session-theme

Xliecc/dsh-session-theme 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-session-theme

English | 简体中文

npm version npm downloads license CI

DSH web plugin: the left sidebar shows every session's theme right on page load — no need to click into a conversation first.

The problem

In the DSH sidebar, sessions you haven't opened yet show no theme — just the workspace folder name (or a placeholder id). The theme only appears after you click into the session.

Root cause: for "cold" sessions (never opened in this process), session.list only reads the projection cache's zero-I/O rows (cachedSnapshot). If a session's title projection was never checkpointed, its list row has no title, so the sidebar falls back to the folder name. Only opening the session (which triggers the full cold-read ladder) recovers the title.

How it works

At startup the plugin runs the projection cache's cold-read ladder (coldSnapshot) for every persisted session: it refolds the title projection from the stored log and durably writes it back to the cache. After that, every row returned by session.list carries a title projection → the sidebar natively shows each session's real theme, no click required.

  • Only "cold" sessions are processed (not opened in this process); sessions that are already loaded already carry live projections in their list rows.
  • Fail-soft per session: a corrupted log never affects other sessions and never blocks startup.
  • Idempotent write-back: the next boot hits the cache fast path instantly.

See ARCHITECTURE.md for the full design and data flow.

Verify it works

  1. Install the plugin (any method below), then hard-refresh the browser (Ctrl/Cmd+Shift+R).
  2. Open the DSH Web sidebar — every session row should show its conversation theme, not a folder name.
  3. To confirm the hit, run: dsh plugin --profile web add dsh-session-theme and watch the server log for the line: dsh-session-theme: projection cache warmed (N sessions).

Install

Link install, zero external dependencies (host side uses only standard services):

dsh plugin --profile web add link:/path/to/dsh-session-theme

Or clone from GitHub:

git clone https://github.com/Xliecc/dsh-session-theme.git
dsh plugin --profile web add link:./dsh-session-theme

Or install from npm:

dsh plugin add dsh-session-theme

After installing, hard-refresh the browser (Ctrl/Cmd+Shift+R) so the client re-pulls session.list.

Files

  • lib/index.js — host side: warms the projection cache at startup (all behavior)
  • lib/client.js — browser-side stub (no-op, keeps the registered manifest consistent)

License

MIT

上一个 Prev dsh-client-ui-pet 下一个 Next dsh-feishu-bridge-plugin