Skip to main content

hermes-chat-share

❖ Communityv1.0.0

Share Hermes Desktop conversations as long PNG screenshots, self-contained HTML, or Markdown — per-turn selection, turn gutter, search, per-turn collapsing and session metadata. The Hermes Desktop counterpart of dsh-share.

Open in Hermes Desktop
hermes plugins install hermes-chat-share

Screenshots

README

From the reviewed commit 17c3edb ↗; it updates when the author re-pins.

Hermes Chat Share

English · 简体中文

banner

Share Hermes Desktop conversations as long PNG screenshots, self-contained HTML, or Markdown — pick exactly the turns you want, like dsh-share does for chat web, but built into Hermes Desktop. Single-file desktop plugin: zero dependencies, zero network, no build step.

Export sample

Install (one click)

Hermes Desktop → Capabilities → Plugins → Install from Git → paste:

smallmj/hermes-chat-share

tick the Desktop UI component, done — a share icon now sits on every conversation's title bar. Or open the install deep link.

Drop desktop/plugin.js from this repo into the plugins folder on the machine running the Desktop app (folder name must be hermes-chat-share):

  • macOS / Linux: ~/.hermes/desktop-plugins/hermes-chat-share/plugin.js
  • Windows: %LOCALAPPDATA%\hermes\desktop-plugins\hermes-chat-share\plugin.js

If the page doesn't show up: ⌘K / Ctrl+K → Reload desktop plugins. On/off toggle under Capabilities → Plugins.

Features

Four entry points — the share icon on each conversation's title bar (opens that conversation directly), the sidebar page, the command palette (Share conversation), and Ctrl/Cmd+Shift+H. The page follows the conversation you switch to; no refresh button, no stale state.

Built for long conversations

  • Turn gutter: segmented rail on the right — one tick per turn, hover to preview the question, click to jump straight there.
  • Search: matches questions and answers; Enter / Shift+Enter / ↑ ↓ cycle through hits with a 3/17 counter; each hit auto-expands and gets an accent outline.
  • Per-turn collapsing: every turn shows just your question and the final answer; expand (N more replies · M tool calls) reveals the rest, per turn.
  • Share-scope checkbox: uncheck “share full conversation” and all three exports contain only question + final answer — exactly what the collapsed view shows.

Honest session metadata — model & provider, thinking effort, cache hit rate, output speed (tok/s), token totals and Hermes version appear in the page header and in every export, read from the gateway's canonical session.info. Fields that aren't available are omitted, never invented.

Exports

  • PNG long image at 680/880/1080 px wide, three font scales, 2× DPR, colors snapshotted from your live app theme (light and dark). Tall exports auto-paginate; multi-page downloads are stitched back into one long PNG, so the browser's one-download-per-page limit never eats pages.
  • Copy image stays honest: it goes to the clipboard as rich text with inline base64 (pastes straight into WPS / Word / Google Docs). When a copy genuinely cannot happen — the image spans pages, or desktop security policy blocks plugin clipboard writes — a dialog explains the exact reason and lets you choose Download image or Cancel. It never downloads behind your back.
  • Self-contained HTML and Markdown, each a single file.
  • Keeps real rendering: code blocks, tables, quotes, inline code, tool-call chips (checkbox-controlled), timestamps. External images, MEDIA: attachments and ::preview widgets become labeled placeholders in PNGs (canvas-taint rules) and keep their links in HTML/Markdown.

The UI follows the app language (English / 简体中文 automatically), and dialogs are opaque and theme-correct in both modes.

How it works

One plugin.js on top of the public Desktop Plugin SDK surfaces only: route, sidebar nav, titlebar action, palette commands, keybinds, i18n. No monkey-patching, no eval, no network, no third-party hosts. On-page rendering reuses the app's own markdown components; PNG export runs a self-contained XHTML pipeline (SVG foreignObject → canvas).

Privacy

Everything runs locally inside your Desktop app. Conversation content never leaves your machine — clipboard and downloads are the only exits, and both need an explicit click. No telemetry, ever.

Development

node --check desktop/plugin.js   # syntax
./dev-tests/stub-runner.sh       # SDK registration smoke test → STUB_OK
node dev-tests/meta.test.mjs     # metadata / color-scoping / export-scope unit tests

Git installs require the desktop/plugin.js layout at repo root — see the plugin SDK docs.

Known edges

  • Very old archived sessions may lack live metadata — the meta line silently omits unavailable fields.
  • PNGs cannot embed cross-origin raster images (browser canvas rules); HTML/Markdown keep them as links.
  • One merged PNG is capped by browser canvas limits (≈65,535 px side / 268 M px total, roughly 5–8 pages); beyond that, pages download one by one with a clear notice.

License

MIT — use it, fork it, ship it. Not affiliated with Nous Research.

Disclosure

← Back to the catalog · catalog built Oct 25, 2026