You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+24-21Lines changed: 24 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ GitDock is a **local tool** that runs on your machine and provides a web dashboa
34
34
Developers who:
35
35
- Manage **dozens or hundreds** of repositories and want them all in one view
36
36
- Want to clone, pull, commit, push, and see status without jumping between tabs and terminals
37
-
- Need to see which repos have uncommitted changes, are behind remote, or are stale
37
+
- Need to see which repos have uncommitted changes, are behind remote, or are dormant
38
38
- Use one GitHub account or several (work + personal) and want everything in one dashboard
39
39
40
40
### What it is NOT
@@ -54,16 +54,16 @@ Developers who:
54
54
|---|---|
55
55
|**Account support**| Works with one account; add more anytime if you need them |
56
56
|**Informative cards**| Each repo displays: name, owner, description, language, stars, visibility, git status, branch, disk size |
57
-
|**Advanced filters**| Filter by account, visibility (public/private), status (cloned/not cloned/stale), sort (updated, A-Z, Z-A, size) |
57
+
|**Advanced filters**| Filter by account, visibility (public/private), status (cloned/not cloned/dormant), sort (updated, A-Z, Z-A, size) |
58
58
|**Real-time search**| Search by name, description, language, or username. Shortcut: `/` key |
59
59
|**Pinned repos**| Mark favorite repos with ★ - they appear at the top, separated |
60
60
|**Custom alias**| Give any repo a nickname to remember what it's about. Opens an elegant modal, saved locally |
61
-
|**Stale repo detection**| "stale" badge on repos with no activity for over X months. Configurable threshold: 1, 3, 6, or 12 months |
61
+
|**Dormant repo detection**| "dormant" badge when activity is older than your threshold (1, 3, 6, or 12 months). **Cloned repos:** date of the last **local** commit. **Not cloned:** GitHub `updated_at` from the API. This is not ahead/behind or uncommitted changes|
62
62
|**Disk size**| Each card displays the repository size (KB/MB/GB) |
63
63
|**Last local commit**| For cloned repos, shows when the last local commit was made |
64
64
|**Open PRs and Issues**| Colored pills on the card showing the count of open Pull Requests and Issues (loaded in the background via GraphQL) |
65
65
|**Attention panel**| Sidebar lists repos that need attention: uncommitted changes, ahead, behind. Click to navigate directly to the card |
66
-
|**Statistics**| Sidebar displays: total repos, cloned, with uncommitted changes, stale|
66
+
|**Statistics**| Sidebar displays: total repos, cloned, with uncommitted changes, dormant|
67
67
|**README viewer**| "README" button on each card opens the content rendered in Markdown (local or via GitHub API) |
68
68
69
69
### Git Operations
@@ -114,12 +114,13 @@ Developers who:
114
114
|---|---|
115
115
|**Dark theme**| Dark interface inspired by GitHub Dark |
116
116
|**Sidebar + grid layout**| Fixed sidebar with filters and stats, scrollable main area with responsive card grid |
|**Modals**| Account Manager (setup timeline), Settings, Hub, token connect, Git, README, clone/remove/migrate/transfer, and more |
118
+
|**Modal UX**| Click outside the backdrop or press `Escape` to close any open modal |
119
+
|**Repo cards**| Cloned repos use a subtle green border; action buttons sit in one segmented control bar |
118
120
|**Toasts**| Temporary notifications (success/error/info) in the top-right corner |
119
-
|**Activity log**| Real-time log of all operations in the sidebar |
120
121
|**SSE (Server-Sent Events)**| Real-time server updates - connection indicator at the top |
121
122
|**⋮ Menu (three dots)**| Context menu on each cloned card with all quick actions |
122
-
|**Keyboard shortcuts**|`/` for search, `Escape` to close modals, `Enter` to confirm |
123
+
|**Keyboard shortcuts**|`/` for search, `Escape` to close modals and clear search, `Enter` to confirm |
123
124
|**Responsive**| Sidebar becomes horizontal on screens smaller than 768px |
124
125
125
126
---
@@ -281,13 +282,13 @@ The dashboard shows an empty state: **"No repositories yet. Add a GitHub account
281
282
-**GitHub username**: your GitHub login for this account
282
283
-**Email**: used for git commits
283
284
-**SSH host** (optional): leave empty for default `github.com-{account name}`
284
-
3. Click **Add**. The dashboard opens a **setup timeline**that guides you through:
285
-
-**Step 1**: Account created (automatic)
286
-
-**Step 2**: Click**Generate SSH Key**- the public key appears. Click**Copy Key**, then add it at [GitHub → Settings → SSH and GPG keys](https://github.com/settings/keys)
287
-
-**Step 3**: Confirm the key is added on GitHub (click **Add Manually on GitHub** to open the page)
288
-
-**Step 4**: Connect a personal access token (or use **Advanced: use gh CLI**and run `gh auth login` in a terminal)
289
-
-**Step 5**: Git config created (automatic)
290
-
-**Step 6**: Once all steps are green, the**Load Repos & Close** button appears - click it to finish
285
+
3. Click **Add**. The dashboard opens a **setup timeline**with two parts (both required):
286
+
-**Part A (SSH):**[GitHub SSH docs](https://docs.github.com/en/authentication/connecting-to-github-with-ssh): generate Ed25519 key → add at [SSH keys](https://github.com/settings/ssh/new) → **Verify SSH** (`ssh -T git@github.com-{account}`)
287
+
-**Part B (API):**[fine-grained PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) with**Contents: Read-only**(lists repos via `GET /user/repos`), or**gh CLI** for the same user
288
+
-Optional: **Git SSH keys: Read and write** on the token only if you use *Upload key via API* (`POST /user/keys`)
289
+
-GitHub host keys for `github.com` are added to `~/.ssh/known_hosts` from [GitHub's published keys](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints) (update `server.js` if GitHub rotates them; see [meta API](https://docs.github.com/en/rest/meta/meta#get-github-meta-information))
290
+
-**Classic PAT** (optional): `repo` scope instead of fine-grained Contents read
291
+
-When all steps are green, click**Load Repos & Close**
291
292
4. Your repositories appear in the dashboard. Clone, pull, commit, and push from there.
292
293
293
294
Accounts and workspace data are stored in your workspace directory (e.g. `~/.gitdock` or a path you chose), in `config.json`.
@@ -521,6 +522,8 @@ The Hub code is in the `hub/` folder. You can [self-host it](hub/README.md) at n
521
522
We also run a hosted Hub at [hub.gitdock.dev](https://hub.gitdock.dev): one machine is free; unlimited machines are $5/month. Sign up there, create an API key in Settings, then in each machine set **Hub URL** to `https://hub.gitdock.dev` and paste the key.
522
523
In the local GitDock dashboard use the dashboard’s **Configure Hub** to set the URL and key so this machine sends snapshots.
523
524
525
+
**Terminology:** The main dashboard uses **dormant** for repos with no recent activity (commits or GitHub updates). The optional Hub uses **stale** only for machines that have not reported in over an hour (offline / last seen), not for repository age.
526
+
524
527
## Contributing
525
528
526
529
We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style (vanilla JS, no frameworks), and how to submit pull requests and report issues.
@@ -531,21 +534,21 @@ We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) for development
531
534
532
535
| Aspect | Detail |
533
536
|---|---|
534
-
|**Where is data stored?**| Everything is local. Cloned repos in the project folder. Preferences (pins, aliases, filters) in the browser's `localStorage`|
535
-
|**What is sent to the internet?**| Only calls to the GitHub API (via `gh` CLI) to list repos, fetch READMEs, and count PRs/Issues. These are the same calls you would make manually|
537
+
|**Where is data stored?**| Everything is local. Cloned repos in your workspace directory (e.g. `~/.gitdock`), not inside the GitDock source tree. Account settings in `config.json`. UI preferences (pins, aliases, filters) in the browser's `localStorage`|
538
+
|**What is sent to the internet?**| Only HTTPS calls to the GitHub API (via `gh` CLI or your PAT) to list repos, fetch READMEs, and count PRs/Issues. These go from your machine to `api.github.com`, same as manual use|
536
539
|**Can anyone access the dashboard?**| No. The server only accepts connections from `127.0.0.1`. No device on your network can access it |
537
-
|**Are tokens exposed?**|No. The `gh` CLI manages tokens in the operating system's keyring. The server never touches tokens directly|
540
+
|**Are tokens exposed?**|Tokens are never written to `config.json` or sent to GitDock servers. Use **GitHub CLI** (`gh`, OS keyring) or a **personal access token**: kept in server memory for the current session only, or stored with **Remember** in your OS credential store (Windows Credential Manager, macOS Keychain, or Linux Secret Service via `secret-tool`). The server uses them only for local GitHub API calls|
538
541
|**Can I use it on a corporate network?**| Yes. No port is opened externally. Traffic flows only between the browser and the server, both on your machine |
0 commit comments