npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-session-orb

v1.0.1

Published

A draggable floating ball for quick multi-session management in DeepSeek Harness: unread red-dot per session, recent-sessions panel, instant session switching.

Downloads

362

Readme

dsh-session-orb 🛰️

A draggable floating ball for quick multi-session management inside DeepSeek Harness (DSH) Web.

  • 📌 A single draggable orb that hides/unhides a "recent sessions" panel.
  • 🔴 Per-session unread red-dot with an animated ripple — fires whenever a turn finishes (an answer is done, or the model is waiting on you in a Q&A).
  • 🎯 Click the ball to jump to the newest unread session; expand the panel to pick any of the 5 most recent sessions in one tap.
  • 💾 Position is persisted, so the orb stays where you put it across updates.
  • ✨ Smooth single-surface expand/collapse morph (content scales with the card).

Install (bundle, no build)

This is a DSH bundle: it ships a cordis.patch.yml that mounts the session-orb plugin row, plus the host half (lib/index.js) and the browser half (lib/client.js). Both halves run on the bundle runtime, so there is no compile step — the browser client is served verbatim by the host's client-modules route.

Install it into a profile (here web, the default used by npx @deepseek-ai/dsh web):

npx @deepseek-ai/dsh plugin --profile web add dsh-session-orb

dsh plugin add installs the package and auto-appends it to the profile's dsh.profile.bundles, so it mounts on the next boot:

npx @deepseek-ai/dsh web

The orb appears, and the plugin persists across restarts.

Requires pnpm on PATH (used internally by dsh plugin).

How it works

| Half | File | Responsibility | |------|------|----------------| | Host | lib/index.js | Listens for agent/session events (turn finished, Q&A waiting, approval, error) to track which sessions "need attention"; answers unreadCount / unreadTop / unreadClearSession / setCurrent / lastTurn RPC | | Client | lib/client.js | Renders the orb in the shell.overlay slot; polls counts, drags, morphs, jumps sessions, persists position to localStorage |

The browser half talks to the host through DSH's Typert Remote channel: the host registers a sessionOrb service (ctx.typert.register), and the client mounts the same descriptors (ctx.remote.$mount) and calls ctx.remote.sessionOrb.*. This is the same no-compile RPC channel the dsh-paste-file bundle plugin uses.

Unread rules

  • Marked "needs attention" when a session:
    • completes a reply/task (agent/turn-stopping),
    • asks you a question (ask_user_question),
    • requests an approval (session/event approval/asked),
    • or errors (agent/error). One session counts once (dedup), ordered by recency.
  • Cleared automatically (view = read) when you:
    • switch to that session,
    • send a new message there,
    • scroll the conversation to the bottom,
    • or a reply completes while you are already at the bottom. An approval is also cleared once it is decided (approval/decided).
  • Badge shows the number of non-current sessions needing attention.
  • The current session's own pending shows only a red ripple — never a number.

Development

The local source also keeps the dynamic Cordis versions under plugin/ and a load.mjs helper that prints them for pasting into cordis_define on any DSH — useful for trying the orb in one session without installing anything.

node load.mjs        # print the two dynamic halves
node --check lib/index.js && node --check lib/client.js

Requirements

  • DSH Web (@deepseek-ai/dsh-web-app base bundle).
  • The host provides the typert service; the client provides slots, timer, sessions, and remote.

License

MIT