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-t3-model-picker

v1.1.0

Published

T3 Code's model picker for DeepSeek Harness: a provider rail, provider-grouped search, favorites, a Cmd/Ctrl+Shift+M toggle and Cmd/Ctrl+1..9 shortcuts in the composer.

Readme

dsh-t3-model-picker

A model picker for the DeepSeek Harness composer, ported from T3 Code's model selector.

The picker: provider rail, grouped search, favorites and jump shortcuts

Open the picker with Cmd/Ctrl+Shift+M, search across every provider, star what you use, and reach the first nine rows with Cmd/Ctrl+1…9.

Credit

The selector this plugin implements is T3 Code's ProviderModelPicker. The provider rail, the borderless search field, the row layout with a provider footer, the favorites model, the tiered search ranking, and the Cmd+1…9 jump chords are all theirs. T3 Code is open source under MIT; this port keeps the same behaviour and swaps the data underneath for DeepSeek Harness's model directory. Please support the original project.

Features

  • Provider rail. A 44px column with Favorites first and one tile per advertised provider. The active entry carries a primary-colored indicator.
  • Search. The field takes focus when the picker opens. Matching uses tiered scoring over the model name, its description, the provider id and the provider name, including subsequence matching for queries of three characters or more, with a small boost for favorites. Results are grouped under provider headings.
  • Favorites. A star on every row, stored in the browser under dsh.t3-model-picker.favorites.v1 as [{ provider, model }]. The Favorites rail entry lists them grouped by provider.
  • Jump shortcuts. Cmd+1…9 on macOS, Ctrl+1…9 elsewhere, select the first nine rows of the visible list; each of those rows shows its chord in a kbd chip. The listener is live only while the card is open.
  • Toggle shortcut. Cmd+Shift+M on macOS, Ctrl+Shift+M elsewhere, opens the card when it is closed and closes it when it is open, from anywhere in the window including the composer editor. The trigger's tooltip carries the chord. On a locked session the chord is inert, as the trigger is. The shift leaves the bare Cmd+M text binding alone.
  • Unavailable models. Providers the host does not report as routable are marked on their rows, on the rail tile's tooltip, and on the trigger.
  • Reasoning effort. A footer row opens the effort levels the current model advertises. It is hidden when the model exposes none.

Install

From this repository:

dsh plugin --profile web add github:yusufameri/dsh-t3-model-picker

Or from the release tarball, which needs no build step:

dsh plugin --profile web add https://github.com/yusufameri/dsh-t3-model-picker/releases/latest/download/dsh-t3-model-picker.tgz

Once the package is on npm, the registry form is one word shorter:

dsh plugin --profile web add dsh-t3-model-picker

Any of them reconciles the profile's bundle list, so the next boot merges the plugin's patch and loads its client half. Removing the bundle restores the shipped model selector with no residue.

Screenshots

| Picker open on Favorites | Grouped search results | Favorites after starring | |---|---|---| | Favorites pane | Search grouped by provider | Favorites list |

How it works

The composer's conversation.input.model seat is a single slot. Two occupants can coexist there at different priorities, and the lowest live priority renders, so this plugin registers at -1 and the shipped ModelSelect at its default 0 stops rendering.

Both read the same per-session model directory (ctx.modelDirectories), which is also what the /model command popup uses. A model chosen here is what those surfaces show next, and a selection made there is what this picker highlights.

| File | Role | |---|---| | package.json | Bundle manifest: dsh.bundle.patch plus the dsh.client web half | | cordis.patch.yml | One insert row mounting the bundle | | index.js | Host half — empty; the feature is entirely browser-side | | client.js | Client half: the picker, its styles, favorites and shortcuts |

Differences from T3 Code

Four deliberate departures, all recorded in client.js:

  • Search results are grouped under provider headings. T3 renders one flat ranked list with the provider named on each row.
  • A footer row keeps the reasoning-effort selector reachable. T3 keeps effort in a sibling control, while in DeepSeek Harness this seat is the composer's only effort control.
  • The row of the model in use carries a check mark. This seat is single-select and the trigger is not always in view.
  • Cmd/Ctrl+Shift+M opens and closes the card. T3 leaves opening to the trigger alone, so a chord bound to the trigger would mean holding Cmd and reaching for the mouse.

Known limits

  • The picker needs a session-scoped model directory. Addressed subagent sessions expose none, so the seat stays absent there and the chord has nothing to open.
  • Jump chords stay open-only, as in T3. Cmd/Ctrl+Shift+M is the one chord that works with the card closed.
  • The effort footer only ever shows models whose provider advertises reasoning metadata.

Development

No build step: client.js is plain JavaScript in the format the client module loader takes. Edit it and reload the page.

scripts/verify-shortcuts.mjs checks the chords against the real component. It mounts client.js in a jsdom page with React and dispatches real key events at the window, so a chord change is verified without the desktop app. The plugin has no dependencies, so the harness brings its own:

npm install --no-save react react-dom jsdom
node scripts/verify-shortcuts.mjs

scripts/ also holds the recording tooling used for the assets above. It drives the running DeepSeek Harness page over the Chrome DevTools Protocol, so no browser download is needed:

node scripts/record.mjs <run-dir>                       # frames + stills + timeline
node scripts/encode-gif.mjs <run-dir> <out.gif> --fps 12 --speed 1.8 --start 1.14

record.mjs expects the page to show a session whose composer carries the picker, and it restores the browser's favorites when it finishes. The encoder crops, resizes, and assembles the GIF with sharp; it needs no ffmpeg.

Releasing

RELEASING.md covers the npm token setup, the tag-driven release workflow, and the manual publish fallback.

License

MIT. The interface this plugin reproduces comes from T3 Code, MIT licensed, by its authors.