dsh-github-sidebar
A DeepSeek Harness (DSH) client plugin that adds a GitHub info sidebar to the chat window's right details column, with two stacked panes:
- Top pane — topic repos by stars: lists repositories under a GitHub topic (default
dsh-plugin), sorted by stars descending, 10 per page with pagination. Uses the public GitHub REST Search API (no token needed). - Bottom pane — discussions: lists a repository's discussions (default
deepseek-ai/deepseek-harness), sortable by newest (server-side, near → far), most comments, and pinned first (client-side, fetches the full list then sorts), 10 per page with pagination. Uses the GitHub GraphQL API (a token is required).
Features
- ✨ Right-side GitHub sidebar inside the DSH chat window (auto-opens the details column).
- ⭐ Topic repos sorted by stars, pageable.
- 💬 Discussions with 3 sort dimensions + pagination.
- 🔑 Token entered in the panel itself (stored in
localStorage, sent only toapi.github.com).
Installation
Install into your DSH profile (installs the host bundle and registers the client plugin):
dsh plugin --profile web add dsh-github-sidebar
# or, when running dsh from a source checkout:
pnpm dsh plugin --profile web add dsh-github-sidebar
Or install directly from this repository:
dsh plugin --profile web add https://github.com/Olympianz/dsh-github-sidebar
Then restart dsh (dsh web) and refresh the page — the client plugin set is scanned at startup.
Usage
- Open a session.
- The right
detailscolumn auto-opens showing GitHub Sidebar. - Top pane: browse topic repositories sorted by stars; use pagination buttons to flip pages.
- Bottom pane:
- Switch sort with Newest / Most comments / Pinned first.
- Paste a GitHub token (GraphQL requires one) and press Save.
Configuration
All defaults are hardcoded in the panel for now; the host half exposes a Config schema (topic, owner, repo, pageSize) that can be overridden in cordis.yml, but the browser half does not read it yet. The token is entered in the panel (per-user, persisted in localStorage).
Development
pnpm install
pnpm run bundle # build lib/client.js (tsdown)
pnpm run watch # rebuild on change
pnpm run typecheck # tsc --noEmit (best-effort)
lib/client.js is committed so that installing from GitHub works without a build step. Regenerate it after changing src/client.
Publishing
See CONTRIBUTING.md for the full guide. Short version:
- Create a GitHub repository (e.g.
dsh-github-sidebar), push this directory, and add the topicsdsh-plugin,deepseek-harness,dshon the repo's Topics page. - Publish to npm so users can
dsh plugin add dsh-github-sidebar:npm login npm publish
Known limitations
- The
detailscolumn is a single-occupant slot: the GitHub panel replaces the default call/trajectory details in the right column. A true "coexist toggle" would require modifying DSH'sui-conversationDetailsPanel(a DSH source change). - Sorting discussions by comments/pinned fetches the full discussion list first (more GraphQL requests; watch rate limits on large repos).
- The token lives in
localStorage(exposed in the browser). A server-side host proxy would keep it out of the browser; not implemented yet. - Details-column visibility is maintained by auto-opening it; some layout transitions (session switches) may briefly close it before the plugin re-opens it.
No comments yet. Be the first to write one.