dsh-github-mirror
A GitHub repository launcher panel for the DeepSeek Harness Web GUI. It puts a GitHub entry in the sidebar, lists your repositories, and opens them through a configurable mirror instead of github.com.
Features
- Sidebar panel — a GitHub icon in the DSH sidebar opens the repository browser.
- Repository list — reads up to 100 recently updated repositories and shows description, language, stars, update time, and private/fork/archived badges.
- Mirror browsing — repository links are rewritten to the selected mirror (
bgithub.xyzby default). Also supportsgitclone.com, official GitHub, or a custom mirror. - Mirror health check — when the panel opens, it probes the selected browse mirror once. If the mirror is unreachable, links temporarily fall back to official GitHub and a banner explains what happened.
- Accelerated clone/download —
git clonecommands and zip downloads use a separate route (ghfast.topby default,gh-proxy.com,gitclone.com, or official). - Quick open — paste
owner/repo,https://github.com/owner/repo,git@github.com:owner/repo.git, or a mirror URL into the search box and press Enter. - Optional private repositories — a read-only personal access token enables
/user/repos, including private and organization repositories, and raises the API limit from 60 to 5,000 requests per hour. - Offline cache — the last successful list is cached for 6 hours and remains visible when a refresh fails.
Requirements
- A DSH build with client plugin support (tested with
0.2.1-rc.2). - Network access to
api.github.com. If it is blocked, the panel automatically tries thegh-proxy.comAPI mirror for unauthenticated requests. - No build step:
client.jsis the browser bundle.
Install
From the DSH Plugins page
Open Settings → Plugins.
Choose Add plugin → Install a third-party plugin.
Enter the Git address:
https://github.com/Jianmo-R/dsh-github-mirrorEnable the bundle and restart DSH if the host asks for a restart.
The plugin is installed into the active DSH profile. It does not require npm publishing.
Manual install
Clone the repository somewhere stable, then add it to the profile as a linked package:
// <DSH_HOME>/profiles/<profile>/package.json
{
"dependencies": {
"dsh-github-mirror": "link:C:/path/to/dsh-github-mirror"
},
"dsh": {
"profile": {
"bundles": [
"...",
"dsh-github-mirror"
]
}
}
}
Run pnpm install in the profile directory and restart DSH. The plugin's own cordis.patch.yml inserts the github-mirror Loader entry.
From the CLI
If your DSH installation exposes the dsh CLI:
dsh plugin add https://github.com/Jianmo-R/dsh-github-mirror
Usage
- Click the GitHub icon in the DSH sidebar.
- Enter a GitHub username on first use. Only a username is needed; do not paste an email or a full URL.
- Public repositories work without logging in. For private repositories, open the gear menu and add a token with
reporead access. - Use the two route selectors at the top of the panel:
- Browse via rewrites repository and profile links.
- Clone / download rewrites
git cloneand zip URLs.
- Each repository row has three actions: copy clone command, download the default branch zip, and open in the selected mirror.
The username, routes, and cache are stored in the browser. The token is session-only unless Remember the token is checked.
Routes
| Route | Used for | Notes |
|---|---|---|
bgithub.xyz |
Browse | GitHub-style web mirror; availability varies |
gitclone.com |
Browse / Git | Web mirror and clone acceleration |
ghfast.top |
Clone / downloads | Proxies github.com and raw.githubusercontent.com |
gh-proxy.com |
Clone / downloads / API | Also used as the unauthenticated API fallback |
| Official GitHub | Fallback | Direct connection |
Mirrors are third-party services and can change or disappear. Every route is selectable at runtime, and the settings dialog accepts custom mirror and acceleration prefixes, so no code change is needed when a mirror goes down.
Privacy and security
- The username, route choices, and repository cache live in
localStorage. - The token is kept in
sessionStorageby default and is written tolocalStorageonly when Remember the token is enabled. - The token is sent only to
https://api.github.com. It is never forwarded togh-proxy.comor any other mirror. - The cache can contain private repository names and descriptions. Clear local settings removes it.
- The plugin opens links in the system browser; it does not proxy git traffic or store repositories locally.
Limitations
- Only the first 100 repositories are read (sorted by recent update); there is no pagination yet.
- Without a token,
/users/:name/reposreturns public repositories owned by that account. Organization and collaborator repositories require a token and/user/repos. - A mirror page is only as fresh as the mirror; it may lag behind GitHub.
- Fetched repository data comes from the GitHub REST API. The panel is a launcher, not a full GitHub client.
Development
client.js Browser bundle (plain CJS factory registered with window.__ModuleLoader__)
index.js Empty host half; gives the bundle a Loader entry
cordis.patch.yml Inserts the github-mirror entry
package.json DSH client declaration and package metadata
There is no bundler or build step. After editing client.js, DSH's client module system reloads it by file revision; refresh the page if needed.
Useful checks:
node --check client.js
node -e "JSON.parse(require('fs').readFileSync('package.json','utf8'))"
See CONTRIBUTING.md for the manual test checklist.
No comments yet. Be the first to write one.