Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"copilot",
"github",
"dprun",
"dx-idea"
],
"is_fork": false,
"size_kb": 172178,
"has_wiki": true,
"homepage": "https://jongio.github.io/dispatch",
"languages": {
"Go": 2704909,
"CSS": 13736,
"Astro": 118342,
"Shell": 17705,
"JavaScript": 2623,
"PowerShell": 23082
},
"pushed_at": "2026-07-22T16:52:27Z",
"created_at": "2026-03-10T04:19:28Z",
"owner_type": "User",
"updated_at": "2026-07-20T19:37:52Z",
"description": "A terminal UI for browsing and launching GitHub Copilot CLI sessions. Search, filter, group, preview, and resume — without leaving the terminal.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "http://jongallant.com",
"name": "Jon Gallant",
"type": "User",
"login": "jongio",
"company": "Microsoft",
"location": "Seattle, WA",
"followers": 375,
"avatar_url": "https://avatars.githubusercontent.com/u/2163001?v=4",
"created_at": "2012-08-16T12:38:10Z",
"is_verified": null,
"public_repos": 57,
"account_age_days": 5090
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-07-18T19:36:04Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-06-30T15:45:05Z"
},
{
"tag": "v0.12.1",
"kind": "patch",
"published_at": "2026-06-24T23:10:01Z"
},
{
"tag": "v0.12.0",
"kind": "minor",
"published_at": "2026-06-24T18:48:07Z"
},
{
"tag": "v0.11.1",
"kind": "patch",
"published_at": "2026-06-22T00:14:47Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-06-08T21:45:36Z"
},
{
"tag": "v0.10.9",
"kind": "patch",
"published_at": "2026-06-08T03:00:25Z"
},
{
"tag": "v0.10.8",
"kind": "patch",
"published_at": "2026-06-08T01:02:25Z"
},
{
"tag": "v0.10.6",
"kind": "patch",
"published_at": "2026-06-07T05:02:14Z"
},
{
"tag": "v0.10.5",
"kind": "patch",
"published_at": "2026-06-06T06:06:58Z"
},
{
"tag": "v0.10.4",
"kind": "patch",
"published_at": "2026-06-06T01:13:42Z"
},
{
"tag": "v0.10.3",
"kind": "patch",
"published_at": "2026-05-21T17:31:29Z"
},
{
"tag": "v0.10.2",
"kind": "patch",
"published_at": "2026-05-18T18:37:51Z"
},
{
"tag": "v0.10.1",
"kind": "patch",
"published_at": "2026-05-18T18:30:56Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-05-18T13:36:47Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-05-15T14:06:51Z"
},
{
"tag": "v0.8.6",
"kind": "patch",
"published_at": "2026-05-12T22:35:59Z"
},
{
"tag": "v0.8.5",
"kind": "patch",
"published_at": "2026-04-27T21:48:27Z"
},
{
"tag": "v0.8.4",
"kind": "patch",
"published_at": "2026-04-27T14:31:17Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2026-04-27T13:44:14Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-04-08T22:42:20Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-04-08T20:40:46Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-04-08T15:46:59Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-03-24T00:50:57Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-03-20T00:07:26Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-03-18T18:17:34Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2026-03-17T16:13:11Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2026-03-16T21:12:03Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2026-03-16T01:59:22Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2026-03-14T00:39:54Z"
}
],
"recent_commits": [
{
"oid": "933439772785b88fe6ad5791a28397eb58795631",
"body": "Add --tag filters to search, stats, and batch export so CLI scripts can reuse session tags.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): filter sessions by tag (#355)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T19:37:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fec3e94e5dd7d5d6b4a0e8498e6ba02d9854ff1d",
"body": "Add --status to dispatch watch so snapshots and streaming output can focus on one attention state.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): filter watch by status (#357)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T19:34:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d24b8ff825ca611c053b76530c606416da806b1b",
"body": "Go (indirect):\n- github.com/charmbracelet/ultraviolet 20260713092251 -> 20260720091822\n- github.com/charmbracelet/x/exp/slice 20260719004043 -> 20260720091843\n- github.com/ebitengine/purego v0.10.1 -> v0.10.2\n- github.com/go-logr/logr v1.4.3 -> v1.4.4\n\nWeb (npm): no installable updates. astro 7.1.2/\n[…]\n,\ngofumpt, deadcode, golangci-lint (0 issues), govulncheck (no vulns).\n\n\nCopilot-Session: f0d95654-9a48-4312-88af-84a4589ee627\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#358)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T19:34:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "007e59113c08a45a073589f2f06e0d295e41960d",
"body": "Include saved aliases, tags, and notes in dispatch info text and JSON output.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): show annotations in session info (#356)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T19:29:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2291db433c0090fa5d231999c67f060c92622ba2",
"body": "Add a `dispatch path <id|--last|--current>` command that prints only a\nsession's working directory, so you can `cd \"$(dispatch path x)\"`. It\nresolves the session the same way `dispatch open` does (full ID, alias,\nshort ID prefix, --last, --current) by reusing open's resolver seams.\n\nIt errors when t\n[…]\n banner, the man examples, the README, and the changelog.\n\nCloses #330\n\n\nCopilot-Session: 732fe147-a68b-4784-8e17-ef089fb70ba3\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add dispatch path to print a session directory (#332)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T18:19:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "28bd601158b1a3f236060a638aa5a7b7cd3be8cb",
"body": "Aliases were list-only from the CLI (`dispatch aliases`); the only way to\nset or clear one was the TUI. This adds a `dispatch alias` mutator so aliases\nhave the same CLI parity that `tag` and `notes` already have.\n\nForms:\n dispatch alias <id> <name> assign or reassign an alias\n dispatch alias\n[…]\ny-name, duplicate\nrejection, unknown ID, and JSON output.\n\nCloses #331\n\n\nCopilot-Session: 732fe147-a68b-4784-8e17-ef089fb70ba3\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add `dispatch alias` to set and remove session aliases (#337)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T17:22:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d3c9f333aa0ff8a2d78efacb55ec9fe637e27a2d",
"body": "PR #346 (search sort flags) widened the search list seam to func(FilterOptions, SortOptions, int); PR #338 (search CSV output) merged cleanly at the text level but its CSV test doubles still used the old 2-arg signature, breaking 'go test' compilation on main.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 26ac5ddc-5dbc-4062-8d73-6e952a4c6699",
"is_bot": false,
"headline": "fix(search): update CSV test doubles to 3-arg search-list signature",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T16:28:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cd8373a93db388eb127180c8406786aa98bca667",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add CSV output to search (#338)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T16:20:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a7e43e88b8a84970380ce244ddcf88453af146e9",
"body": "Closes #343\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add search sort flags (#346)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T16:17:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "541770c88ab8b69217ab300dbf322ba3b6ce2c20",
"body": "…s (#340)\n\n`dispatch watch --exec <cmd>` runs a command each time a session changes\nattention state while streaming. Session context is passed only through\nDISPATCH_SESSION_* environment variables (ID, STATE, PREV_STATE, REPO,\nBRANCH, FOLDER, SUMMARY), never interpolated into the command string, so\n\n[…]\nc` requires streaming mode and is rejected with `--once`.\n\nCloses #329\n\n\nCopilot-Session: 732fe147-a68b-4784-8e17-ef089fb70ba3\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(watch): add --exec hook to run a command on attention transition…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T16:15:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "793f5a36f657d27dc75122e147f00028fba917f3",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): show linked refs in info (#341)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T14:37:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a8c91be0b5a5d2b3592ddb5663090c5b39755229",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): read notes from stdin (#339)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T14:34:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b2be7ff9a747f7be11342d94a48ac277058c527c",
"body": "Closes #344\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add text session exports (#347)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T14:23:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0b396e40ad968cf4168b4683492bc7cda7dc2502",
"body": "Closes #345\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add markdown stats output (#348)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T14:11:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4a8cd113b0681d334af1e1698d2d091ef19305c4",
"body": "Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 7.0.7 to 7.1.1.\n- [Release notes](https://github.com/withastro/astro/releases)\n- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)\n- [Commits](https://github.com/withastro/astro/commit\n[…]\nirect:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): bump astro from 7.0.7 to 7.1.1 in /web (#349)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-20T14:10:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "56971127a3dce813f465dc32ad1b69943ffa0de8",
"body": "Fix reference-doc drift found by a full docs audit. No behavior changes:\nupdate help text, man page, shell completions, website reference pages,\nREADME, and stale in-code citations so the docs match the code.\n\n- config.astro: add 10 missing settings; drop \"all settings\" overclaim\n- env vars: add DIS\n[…]\n\n- standardize product name to \"Dispatch\"; bump CONTRIBUTING Go to 1.26.5+\n\n\nCopilot-Session: d5cd4294-786b-48e9-b9f6-082a7438fd50\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: sync config, env var, keybinding, and completion references (#351)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-20T07:06:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "597f1366fae3220bf62cc18a5d1b7914ea69d05b",
"body": "Upgrade Go module github.com/dlclark/regexp2/v2 from v2.5.1 to v2.5.2 (transitive dependency of glamour via chroma) using go get -u ./... and go mod tidy.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#342)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-19T19:33:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "187db72a15dafccf1ceae0bfda447479e016cb8f",
"body": "Go modules:\n- github.com/github/copilot-sdk/go v1.0.6 -> v1.0.7\n- modernc.org/sqlite v1.53.0 -> v1.54.0\n- indirect: charmbracelet/ultraviolet, charmbracelet/x/exp/slice,\n dlclark/regexp2/v2, mattn/go-isatty, modernc.org/libc; adds indirect\n ebitengine/purego v0.10.1 (new dep of modernc.org/libc)\n\n\n[…]\nrabilities), gofumpt (clean), deadcode (OK), and\nastro build all pass.\n\n\nCopilot-Session: a11db554-391f-41d3-9be1-7fd3bc7739c3\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#333)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-19T17:45:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1b6790dcc0b9f8bde2464e2b43e56d6ab2bc98d2",
"body": "The demo git statuses cycle now includes 9 states instead of 6,\nadding entries that combine ahead/behind with local modifications\nso screenshots show realistic variety (sessions needing both push\nand pull with local changes alongside clean and single-concern\nstates).\n\n\nCopilot-Session: 3663d29f-d66d-450d-8730-9e6046ff1af3\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add combined push/pull + dirty states to demo git cycle (#328)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-19T10:37:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e6fee2f893d4d99d2d32f880f2e99c155e37828b",
"body": "…gs (#327)\n\nConfig-touching tests persisted config without redirecting the OS config\ndirectory, so running `go test ./...` - directly or via `mage install` -\noverwrote or deleted the developer's real config.json\n(%APPDATA%\\dispatch\\config.json on Windows, ~/.config/dispatch/config.json\non Linux/macO\n[…]\nh tests are\nunaffected.\n\nTest-only change; no production code is modified.\n\n\nCopilot-Session: a0396804-f73e-46d6-9062-02d625302301\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "test: isolate config dir in tests so the suite can't wipe real settin…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-19T10:07:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4101500fb357d81e0a5cb17fd59a25eaa7cf7895",
"body": "Nine screenshots referenced by the website were never generated, so they\n404'd across the homepage and Features page: git-badges, search-tokens,\npreview-redacted, session-notes, view-picker, file-picker,\nactivity-timeline, compare-sessions, and cmd-palette.\n\nThe scenes are defined in internal/tui/sc\n[…]\n5 PNGs) with the\nexisting screenshot pipeline. No existing images changed.\n\n\nCopilot-Session: 6f255bd9-fe36-4277-a665-5ee038554d0c\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(web): generate 9 missing feature screenshots (#326)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-19T00:58:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2560b1dc950ed57229a7bab2c73a9cc0637b3841",
"body": "The Pages deploy failed at npm ci with ERESOLVE: @astrojs/check@0.9.9 peers typescript ^5||^6, but web/package.json uses typescript ^7.0.2 (bumped in #306). npm@latest enforces the peer during npm ci. TypeScript 7 works for astro build (the only step Pages runs), so add a project .npmrc with legacy-\n[…]\ncally: npm ci and npm run build both succeed and the lockfile is unchanged.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b",
"is_bot": false,
"headline": "fix(web): allow legacy peer deps so Pages build resolves (#325)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T21:24:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8efef4cc3e37f2121a40b1f57b2a6fae5f4ec0c1",
"body": "cosign-installer was installing the latest cosign (v3.x), which auto-loads a signing config and forces the single-file bundle format. That broke the classic detached signing (sign-blob --output-signature/--output-certificate) with a chain of errors: first 'cannot specify service URLs and use signing\n[…]\nhich keeps classic behavior, and restore the classic goreleaser signs args.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b",
"is_bot": false,
"headline": "fix(release): pin cosign to v2.x to keep classic signing (#324)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T19:27:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "848993e7f8321672028bb2fc7ad0c7a7c064f0b2",
"body": "After removing --oidc-issuer, cosign got further but failed with 'create bundle file: open : no such file or directory': the newer cosign defaults to --new-bundle-format, which ignores --output-signature/--output-certificate and needs a --bundle path. Rather than switch to a single .bundle (which wo\n[…]\new bundle format so the classic .sig/.pem artifacts are produced as before.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b",
"is_bot": false,
"headline": "fix(release): keep cosign classic signature format (#323)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T18:57:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7d819f5056ab38c53a804dd985119a1170074b85",
"body": "Newer cosign (installed unpinned by cosign-installer) auto-loads a signing config and rejects explicitly-set service URLs, so sign-blob failed with 'cannot specify service URLs and use signing config' and no release was published. The ambient GitHub Actions OIDC and the signing config supply the issuer, so the flag is redundant. Remove it to restore keyless signing.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b",
"is_bot": false,
"headline": "fix(release): drop cosign --oidc-issuer flag that breaks signing (#322)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T18:18:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "50bc8e2f17461ab90fee0f9d7a8065b73c7f93a1",
"body": "Promote the Unreleased section to v0.14.0 (2026-07-18) so the release workflow's changelog check passes. Keep an empty Unreleased section for future work.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b",
"is_bot": false,
"headline": "docs(changelog): cut v0.14.0 (#321)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T15:19:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f0728c72bed9b8bf263c5662a1a001682557d709",
"body": "`mage install` added the dev bin dir to the User PATH but never said so:\nthe last PATH line users saw was \"Machine PATH failed (need admin), trying\nUser PATH...\" with no confirmation, and the User PATH fallback swallowed\nits error, so a genuine failure looked identical to success. Users\nreasonably c\n[…]\nminal, then `dispatch-dev`,\n since already-open shells keep the old PATH.\n\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(mage): report PATH changes clearly during install (#320)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T15:14:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d81bba189150531264b56356126cf87ab8e28409",
"body": "…atures (#319)\n\nA doc-check before the next release found the README, CHANGELOG, and the\nAstro website had drifted badly from the code that shipped since v0.13.0\n(the entire CLI command surface and several TUI features merged after the\nv0.13.0 tag but were never documented).\n\nREADME:\n- Fix the Key B\n[…]\ntus screenshot scene to the generator and render it for all\n five themes.\n\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: sync README, CHANGELOG, and website with shipped CLI and TUI fe…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T14:01:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "33afadda926b47f733c4daeb3690339edf88f43e",
"body": "Deep review of the swarm CLI commands (open, watch, stats, prune, tag)\nsurfaced correctness, safety, and injection issues. Fix them all with\nregression tests.\n\n- open: scoped resume now picks the most-recently-active match instead\n of the oldest (it reused stats' created-ascending ordering); add a\n\n[…]\nore.AllSessionIDs for existence checks that must include\n empty sessions.\n\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(cli): harden swarm commands found by max-quality review (#318)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-18T02:50:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a820b56e7e11812616081aa5907bb2ad88fdeeae",
"body": "…ats --csv, batch export (#317)\n\nAdd eight session-management CLI commands (integrated from parallel swarm work,\nrebased onto current main):\n\n- dispatch compare <a> <b> side-by-side session comparison as text/JSON (#264)\n- dispatch export --filter batch-export filtered sessions (#265)\n- dispatch \n[…]\n65\nCloses #271\nCloses #273\nCloses #275\nCloses #276\nCloses #277\nCloses #279\n\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add compare, watch, tag, prune, aliases, scoped resume, st…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-17T19:49:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "27b173d14f0fabd6b9493f11d37500b4ded3239a",
"body": "…ts (#316)\n\n* feat(tui): add git status overlay for session folders\n\nAdd an \"i\" keybinding (and command-palette entry) that opens a modal\noverlay showing the git status of the folder a session is mapped to:\ncurrent branch and upstream, the standard push/pull stats (commits ahead\nto push, behind to p\n[…]\nuthored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\nCopilot-Session: 524cf702-8922-4cfd-b23f-4069b734e09b\n\n---------\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): add git status overlay with inline + preview push/pull sta…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-17T17:13:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b3ee080a88dc6b5a0f870328609cb833c65c20fc",
"body": "* search: add table output\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n* style: gofumpt search.go\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add table output to dispatch search (#284)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T13:12:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a9344437260a9af849af318876db52c2c1e834a0",
"body": "* feat(open,new): add per-launch agent, model, and yolo overrides\n\nAdd --agent, --model, and --yolo flags to the open and new subcommands so a\nsingle launch can override the saved config values without editing config\nfirst. The overrides apply to every launch mode and to --print, and are never\nwritt\n[…]\nCopilot@users.noreply.github.com>\n\n* Merge remote-tracking branch 'origin/main' into idea/open-new-launch-overrides\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add per-launch agent, model, and yolo overrides for open and new (#299)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T13:09:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ae61c217bf87aa2d4db65b20d281ffd3a319cdb8",
"body": "…313)\n\n`export` dumps a whole session; there was no quick way to see just its\nshape. `info <id>` prints a one-screen summary: ID, summary, repository,\nbranch, directory, host, created/updated/last-active timestamps, and\ncounts for turns, files, checkpoints, and references grouped into\ncommits, PRs, \n[…]\nipe on a goroutine in TestPrintUsage_Output so\nthe grown usage banner cannot deadlock on the Windows pipe buffer.\n\nCloses #312\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(info): add `dispatch info <id>` for a concise session summary (#…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:57:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "078861b504bb9889a7fa35e91b180d78a287d32a",
"body": "Add a notes command to list, read, set, and clear session notes through the existing config file. Document the command and cover text, JSON, and mutation flows with tests.\\n\\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add session notes CLI (#291)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:54:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "53316021f6f2c46af175bf9ba4d6ff3ad3e74410",
"body": "Resume many sessions in one shot by piping IDs into `open --stdin`,\none per line. Composes with any command that emits session IDs, such\nas `search --ids`. Blank and `#` comment lines are skipped, only the\nfirst field of each line is read, and duplicate IDs are dropped while\npreserving order. Each I\n[…]\nipe on a goroutine in TestPrintUsage_Output so\nthe grown usage banner cannot deadlock on the Windows pipe buffer.\n\nCloses #310\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(open): add --stdin to batch resume sessions from piped IDs (#311)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:51:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ea4e7ad5ae8d8a5f6e39c347c94955f58a734132",
"body": "Add a views command to list configured named views and set or clear the active view. Document the workflow and test text, JSON, and activation behavior.\\n\\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add named views CLI (#292)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:49:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cf910dde8ea405737b8a5bb2a8bad8e896040357",
"body": "Add a 'man' subcommand that writes a section-1 roff man page to stdout so\npackagers and users can install offline docs:\n\n dispatch man > dispatch.1\n\nThe page mirrors the built-in usage banner (name, synopsis, description,\ncommands, flags, environment, examples). Wire 'man' into handleArgs, the\nus\n[…]\nbuffer (~4 KB) the write blocked and the test deadlocked.\nDrain the pipe on a goroutine so output size can no longer stall it.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add 'dispatch man' command to generate a roff man page (#309)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:46:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dd1a9b2355287b04619d49ddabbc33cccd560f44",
"body": "Add `--format html` to `dispatch export`, alongside the existing md and\njson formats. It writes a single self-contained HTML document with the\nstylesheet inlined, so the file opens in any browser with no external\nrequests or accompanying assets.\n\nRenderHTML mirrors the RenderMarkdown structure (meta\n[…]\nt markup. Message bodies use white-space: pre-wrap to keep\ntheir original formatting without a markdown renderer.\n\nCloses #297\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(export): add HTML output format for session export (#302)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:43:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "66f9da8f0dbc9c4e13e7477fd0ea4bc874d23341",
"body": "Accept a unique prefix of a session ID wherever open and export take a\nfull <id>, mirroring git short-SHA behavior. An exact full-ID match wins\noutright; a unique prefix expands to its full ID; an ambiguous prefix is\nrejected with the list of matching sessions.\n\nResolution lives in a new Store.Resol\n[…]\nted. LIKE\nwildcards in the prefix are escaped and matched literally. The usage\nbanner documents the new behavior.\n\nCloses #314\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(open,export): resolve short session-ID prefixes (#315)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:40:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9ad5dde8dd3847c1c000e1b6b6bd50d5eb640fe6",
"body": "Shell completion only offered static tokens before: command names,\nflags, shell names, and config subcommands. The values you actually\nreach for, session aliases for `dispatch open` and config keys for\n`dispatch config get`/`set`/`unset`, still had to be typed by hand.\n\nAdd a hidden `dispatch __comp\n[…]\nown kinds\nprint nothing and exit zero so a completer never breaks, and the command\nis left out of help and usage.\n\nCloses #298\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(completion): complete session aliases and config keys (#303)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:38:36Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9977fa57809a3a34255a8fd4f3069269ee561ca1",
"body": "dispatch config could list, get, set, edit, and print the path, but the\nonly way to clear one setting back to its default was to edit the file\nby hand or reset the whole config. Add config unset <key>, which applies\nthe value that key has in a freshly built default config and saves\nthrough the norma\n[…]\nthe pipe only after printUsage returned. The test now\ndrains the pipe from a goroutine so the write cannot block.\n\nCloses #296\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(config): add config unset to reset a setting to its default (#301)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:35:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d738fbc4e47a3a6442d72aed63693ebc5088efa1",
"body": "Add a --redact flag to dispatch export that masks common secret patterns before Markdown or JSON output is written. Document the flag and keep usage capture tests safe as usage text grows.\\n\\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add redacted session exports (#290)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-14T12:33:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f37bc9bf724bd6841ec38408a6f2008f3fb58368",
"body": "Set DISPATCH_CONFIG to an absolute file path to point dispatch at a\ndifferent config file, which makes it easy to keep separate profiles\nwithout editing JSON by hand. The override flows through configPath(),\nso config path/get/set/edit and doctor all follow it.\n\nA relative or UNC value is ignored and the default OS config location is\nused, matching the guard already applied to the log file path.\n\nCloses #295\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(config): honor DISPATCH_CONFIG to override config file path (#300)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-13T21:29:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3cddae175a4a219cbe1da9af9168bfdd9fa51920",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "stats: add top limit (#285)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-13T21:27:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "19ad40edd13d27d67eb95ba65a309dd0d38efb19",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "version: add json output (#286)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-13T21:26:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "edad1abac389ea87af8a8604a4ec5c36b2569cb4",
"body": "Bumps [typescript](https://github.com/microsoft/TypeScript) from 6.0.3 to 7.0.2.\n- [Release notes](https://github.com/microsoft/TypeScript/releases)\n- [Commits](https://github.com/microsoft/TypeScript/commits)\n\n---\nupdated-dependencies:\n- dependency-name: typescript\n dependency-version: 7.0.2\n dep\n[…]\nrect:development\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /web (#306)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-13T21:24:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c4de512ec3fe5d16f40877abfe99d92d11505097",
"body": "Bumps [marked](https://github.com/markedjs/marked) from 18.0.5 to 18.0.6.\n- [Release notes](https://github.com/markedjs/marked/releases)\n- [Commits](https://github.com/markedjs/marked/compare/v18.0.5...v18.0.6)\n\n---\nupdated-dependencies:\n- dependency-name: marked\n dependency-version: 18.0.6\n depen\n[…]\nirect:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): bump marked from 18.0.5 to 18.0.6 in /web (#307)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-13T21:22:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "462bdcf8936efda9af282fa15620fad9d149a12b",
"body": "Go indirect dependency refresh via `go get -u ./... && go mod tidy`:\n\n- github.com/dlclark/regexp2/v2: v2.3.0 -> v2.5.0\n- github.com/yuin/goldmark: v1.8.2 -> v1.8.4\n- github.com/charmbracelet/x/exp/slice: 20260705004817 -> 20260712004152\n\nnpm (web/) held back by the 7-day release-age cooldown:\n- typ\n[…]\nd\n\nValidation: gofmt, gofumpt, go mod tidy, deadcode, build, golangci-lint,\ngo vet, full test suite, and govulncheck all pass.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#305)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-12T19:34:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d099d7754c03f7f3353d9393aa8a5b0fc7617ff0",
"body": "Go indirect dependency refresh via `go get -u ./... && go mod tidy`:\n\n- github.com/dlclark/regexp2/v2: v2.3.0 -> v2.5.0\n- github.com/yuin/goldmark: v1.8.2 -> v1.8.4\n- github.com/charmbracelet/x/exp/slice: 20260705004817 -> 20260712004152\n\nnpm (web/) held back by the 7-day release-age cooldown:\n- typ\n[…]\nd\n\nValidation: gofmt, gofumpt, go mod tidy, deadcode, build, golangci-lint,\ngo vet, full test suite, and govulncheck all pass.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#304)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-12T19:23:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8e2656df5fa3c092ea2777062533bf757c1c02ea",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#293)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-11T19:42:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7fe06f1bb7b0157d126d63f132ad1583dc917a69",
"body": "Go:\n- golang.org/x/net: v0.56.0 -> v0.57.0\n\nnpm (web/) held this cycle:\n- typescript 6.0.3 -> 7.0.2 held: major bump, @astrojs/check peer-requires\n typescript ^5 || ^6 (TS7 not yet supported), and published <7 days ago.\n- marked 18.0.6 held: published <7 days ago (release-age cooldown).\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#280)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-09T19:34:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4bb155de06b8f47fb4f309a940c3cc2a208397ad",
"body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(search): add ID-only output (#267)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-09T02:59:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "100241ff6f2d5223b0613b3cce5cf5fd0ae6fdd6",
"body": "* feat(update): allow disabling background checks\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n* style: group package constants into a block\n\ngofumpt requires consecutive top-level const declarations to be grouped\ninto a single const block. Fixes the strict-formatting C\n[…]\n: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: jongio <jongio@users.noreply.github.com>",
"is_bot": false,
"headline": "Allow disabling background update checks (#268)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-09T02:52:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8f05805b489967d6a93fafc7216817bfb5d3fd55",
"body": "* deps: upgrade all dependencies to latest\n\nGo:\n- go directive 1.26.4 -> 1.26.5 (fixes GO-2026-5856 crypto/tls ECH stdlib vuln)\n- github.com/github/copilot-sdk/go 1.0.5 -> 1.0.6\n- golang.org/x/sync 0.21.0 -> 0.22.0\n- golang.org/x/sys 0.46.0 -> 0.47.0\n- golang.org/x/term 0.44.0 -> 0.45.0 (indirect)\n-\n[…]\n: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: jongio <jongio@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#269)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-09T02:42:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "179a652429044a99cf120184a1c15a1f1113d60a",
"body": "* Add startup filters for current repo and branch\n\nAdd CLI flags that seed the initial session list so developers can jump\nstraight to the sessions for the repo or branch they are working in:\n\n- --current reads the git repo and branch from the working directory\n- --cwd <path> filters to sessions und\n[…]\nilter case. Drop the method and its test.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add startup filters for current repo and branch (#252)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T20:21:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dd1bae2c9771a02f5ccddd7be6b825c874bba41e",
"body": "Adds a headless 'dispatch tags' command that prints every tag in use with the number of sessions that carry it, ordered by count. Counts are taken against the current session store, so tags on sessions that no longer exist are not counted. Supports --json for scripting, matching the shape of 'dispat\n[…]\n'.\n\nWires the command into arg dispatch, help text, shell completions (bash/zsh/fish/powershell), and the README.\n\nCloses #256\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add 'dispatch tags' to list tags with per-tag session counts (#257)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T20:06:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1027c1c33f1417c7748b2edeb55d02cbc4b37b84",
"body": "Go module updates:\n- golang.org/x/text: v0.38.0 -> v0.39.0\n- modernc.org/libc: v1.73.5 -> v1.74.0\n- go mod tidy pruned stale indirect entries (golang.org/x/tools, modernc.org/ccgo/v4)\n\nWeb (Astro) deps already at latest within the 7-day publish cooldown; no lockfile drift. glamour/lipgloss v1 pin intact (issue #59).\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#258)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T19:58:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b771579d1f83896fcc0b0380975efcb88f35c5e2",
"body": "Adds a 'dispatch config edit' subcommand that writes the current config to disk, opens it in \\/\\ (falling back to notepad on Windows, vi elsewhere), and re-validates the file after the editor exits so a broken edit is reported instead of silently applied.\n\nUpdates help text, shell completions (bash/zsh/powershell), and the README.\n\nCloses #254\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add 'config edit' to open the config file in your editor (#255)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T19:49:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9b2919ccf07a399d19f4ad1a7887f73b4ea5fb72",
"body": "Sessions whose working directory no longer exists on disk (for example\nafter a git worktree is removed) are now surfaced across the TUI:\n\n- Add a 'Missing workspace' row to the session status filter picker so\n users can isolate sessions with a removed working directory.\n- Show a 'Workspace: Missing\n[…]\n-state scan (GitStateMissing), so the state refreshes on reload\nand stays consistent with the session list badge.\n\nCloses #184\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): detect and surface missing session workspaces (#253)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T19:19:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "71d5c0bdcb21ddf6175913594b3cdbdbfcafa15a",
"body": "Add a headless 'dispatch search' command that queries the session store and prints matching sessions as a JSON array, without starting the TUI. Supports positional or --query text, --repo, --branch, --folder, --host, --since, --until, --deep, and --limit filters that reuse the existing data filter and sort code. Empty results print [] and exit 0; invalid flags or an unreadable store exit non-zero.\n\nCloses #182\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(search): add non-interactive search command with JSON output (#251)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-07T19:17:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f1767ca97bdf5689aceff41c398cb3ea6a86fb7",
"body": "Add a 'g' key binding and 'Open Reference' command palette action that\nopen the selected session's linked reference on github.com. The best\nreference is chosen in order: pull request, issue, then commit.\n\n- data.BestRef picks the most useful ref for a session\n- data.RefURL builds a github.com URL fr\n[…]\nd validates pr/issue numbers and commit SHAs\n- platform.OpenURL opens only http/https URLs in the default browser\n\nCloses #220\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: open a session's linked PR, issue, or commit in the browser (#224)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T09:08:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "998e6b24ce549723a0194e07f36ec0826979a769",
"body": "Adds a fish case to 'dispatch completion' with a completion script for\ndispatch and disp. Updates the bash/zsh/powershell shell lists so\n'completion <tab>' offers fish, and refreshes the usage and README docs.\n\nCloses #239\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(completion): add fish shell completion (#246)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T08:47:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "49f738bc118a41e602674ce7bc5310241b40d133",
"body": "…245)\n\nAdds a --print flag to 'dispatch open' that resolves the session and\nwrites the resume command to stdout instead of launching it. Useful for\nscripting, dry runs, and piping the command elsewhere.\n\nCloses #242\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(open): add --print to output resume command without launching (#…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T08:37:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "74ff33843553dc5fce23d567ace938096b27795a",
"body": "Add a 'dispatch new [dir]' subcommand that starts a brand-new Copilot\nsession directly from the command line, mirroring the TUI launch path.\nIt reuses the existing resume builders, which treat an empty session ID\nas a new session, and honors the configured agent, model, and launch\nmode. Supports an \n[…]\noverride.\n\nWired into handleArgs, the three shell completion scripts, and usage\noutput. Documented in the README.\n\nCloses #223\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add a dispatch new command to start a fresh session from the CLI (#228)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T08:18:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ba9c3e28184c1193d11213f8a1589714b1500192",
"body": "…#225)\n\nAdds 'dispatch export <id>' with --format md|json (default md),\n--stdout to print instead of writing a file, and --out <dir> to\nchoose the destination directory. Wires the command into arg\nhandling, shell completion, and usage output.\n\nCloses #221\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add a dispatch export command to save a session as Markdown or JSON (…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T08:08:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "63b69738114eb8671618a51b2ca380088719cd88",
"body": "Add a headless 'dispatch config' command with list, get, set, and path\nsubcommands so preferences can be read and changed without opening the\nTUI or hand-editing config.json. Set validates the value and persists\nthrough the existing config save path. Wired into handleArgs and the\nbash, zsh, and PowerShell completion scripts.\n\nCloses #212\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add config command to read and set preferences (#215)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:58:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6408e09bfc2642c3fb29fd3da7696f3650926c6b",
"body": "Adds a --last flag to the open command so users can resume their most\nrecently active session without looking up its ID. Reuses the existing\nlaunch path and honors --mode. Errors clearly when --last is combined\nwith an explicit ID and when the store has no sessions.\n\nCloses #208\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(cli): add open --last to resume the most recent session (#213)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:50:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d3d8fa693cccb72341b8e64971bcbcf1375a6ed6",
"body": "* Add an activity calendar heatmap to the stats command\n\nAdds a --calendar flag to 'dispatch stats' that renders a GitHub-style\ncontribution heatmap of sessions per day for the selected range. Days\nare grouped into a seven-row weekday grid with shaded intensity blocks\nand a legend. The default text \n[…]\npply gofmt/gofumpt formatting to stats.go\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add an activity calendar heatmap to the stats command (#227)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:42:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "428405a48d0f73c54ebc2d5a9791927ab4d2c4d0",
"body": "* Launch sessions in a tmux split when running inside tmux\n\nPane launch mode previously only worked in Windows Terminal. When\ndispatch runs inside a tmux session (TMUX is set), pane mode now\nroutes through 'tmux split-window' so macOS and Linux users get a\nsplit in their current tmux window instead \n[…]\ns and the Windows WSL tests can use them.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Launch sessions in a tmux split when running inside tmux (#226)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:36:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d4c5dfe7b3099bba0009793c5ba8755a87497671",
"body": "Adds two search tokens that filter the session list by last-active date:\nafter:<date> sets an inclusive lower bound and before:<date> an inclusive\nupper bound. Dates accept YYYY-MM-DD or RFC3339, matching the --since and\n--until flags on dispatch stats. Malformed dates are kept as free text.\n\nAn act\n[…]\nnce over the 1-4 time-range shortcuts;\nclearing the search restores the selected range and drops the upper bound.\n\nCloses #241\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add after:/before: date tokens to the search bar (#249)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:27:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bcb8c8a011de604581c1860265b62433292b2ad0",
"body": "…t (#248)\n\nAdds keyboard shortcuts to jump directly to the first or last session\nwithout holding the arrow keys. g/Home jumps to the top, G/End jumps to\nthe bottom. Both reset any active shift-selection and load the newly\nselected session's detail. Shortcuts are inert while the search bar is\nfocused so they don't collide with typing.\n\nCloses #243\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add g/G and Home/End jump-to-top/bottom navigation in the session lis…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:17:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "926ec59f8239a96fbf815d8e43c6473f5be9200d",
"body": "Extends 'dispatch doctor' (text and --json) with the detected Copilot CLI\nversion and the number of stored sessions. Both probes degrade gracefully:\nthe version falls back to 'unknown'/'not detected' and the count to 0 when\nthe CLI or store is unavailable, keeping doctor non-fatal.\n\nAdds Store.CountSessions for a cheap COUNT(*) query.\n\nCloses #240\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(doctor): report Copilot CLI version and stored session count (#247)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T07:03:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d31582e6644f94809a818174386cb6b8f6b9241f",
"body": "Let users choose which optional columns appear in the session list (repo, folder, turns, host) via toggles in the settings panel. Defaults show every column so existing users see no change, and the session name and attention indicator are always visible. Hidden columns persist in config.json as hidden_columns and the row reflows to reclaim the space.\n\nCloses #234\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): configurable session-list columns (#244)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T06:56:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "96bf3273b53df8565a29f1a1dcadc47004a78b89",
"body": "Add a fullscreen preview mode toggled with z that expands the preview to fill the content area and hides the session list, making long conversations easier to read. Press z again or Esc to return to the split layout. Paging with PgUp/PgDn works in fullscreen, and toggling on shows the preview even when the split preview is hidden.\n\nCloses #233\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): add fullscreen preview zoom (z) (#238)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T06:44:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1b8c596c406e0cc2d8059d3c685536297a4d8497",
"body": "Adds a unique per-session alias editable with A, shown in the preview, and resolved by dispatch open <alias> with a fallback to session ID lookup. Aliases persist in config only.\n\nCloses #232\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add session aliases and open by alias (#237)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T06:30:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "96628e740f2ae678be812784c1616cb05a04c01e",
"body": "Adds per-session tags editable with g, a distinct row marker, and a tag: search token for filtering. Tags persist in config only.\n\nCloses #231\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add session tags with tag: search token (#236)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T06:13:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4a2c89a69447ee5d0b179ff44faceb5f2403b8d7",
"body": "…ecency (#235)\n\nRecords a launch count and last-launched time per session from the TUI and\ndispatch open, then adds a frecency sort field that blends launch frequency\nwith a recency decay. Sessions with no launch history keep updated-time order.\n\nCloses #230\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add frecency sort that ranks sessions by launch frequency and r…",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T06:00:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "760653dff2e807f3f61947341221f1e510e07951",
"body": "* feat(tui): add configurable keybindings via config\n\nAdd a \"keybindings\" config map that remaps keyboard shortcuts. Keys are\naction names (search, quit, cmd_palette, etc.) and values are\ncomma-separated key lists. Listed actions replace their default keys;\nunlisted actions keep their defaults. Unkn\n[…]\nom keybindingEntries in the test instead.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): add configurable keybindings via config (#217)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T05:52:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "be02564f6ced4464bae11b8e98253eec3c867a7a",
"body": "Add a notify_on_waiting setting that rings the terminal bell and shows a\nfooter message when a session transitions into the waiting state (the AI\nhas responded and is waiting for user input).\n\nThe bell fires once per transition into waiting, not on every scan, and\nsessions already waiting when dispa\n[…]\ntifies again. The setting is off by default and\ncan be toggled from the Settings panel (,) or set in config.json.\n\nCloses #209\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): notify when a session enters the waiting state (#216)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T05:44:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "62407b30318517ab80bc602b02f6d5a0a694fa51",
"body": "When one or more sessions are marked with Space, Y now copies a resume\ncommand for each selected session, one per line, ordered to match the\nlist. With no selection the single-session behavior is unchanged.\n\nCloses #211\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): copy resume commands for all selected sessions (#214)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-06T05:35:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "185c343345260109be23e8b57e07b5e0d64b7758",
"body": "* deps: upgrade all dependencies to latest\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n* deps(web): upgrade npm transitive dependencies to latest\n\nRegenerated web/package-lock.json (npm update). PR #250 covered only the\nGo modules; this adds the missing web/ (Astro sit\n[…]\n build pass, npm audit 0 vulnerabilities.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#250)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-05T19:43:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4d0c76127d0a59abdb9617a1df87a7d9929a0e81",
"body": "- charm.land/bubbles/v2 v2.1.0 -> v2.1.1\n\nGo module (go get -u ./... && go mod tidy) and web/ npm deps checked;\nweb/ Astro deps already at latest (npm-check-updates: all match latest).\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#229)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-04T19:43:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "785d566959d6fd290397a74699fcccaa42eca000",
"body": "Go:\n- charm.land/bubbletea/v2: v2.0.7 -> v2.0.8\n- charm.land/lipgloss/v2: v2.0.4 -> v2.0.5\n- github.com/charmbracelet/ultraviolet: 20260622092850 -> 20260703014108\n\nWeb (Astro site):\n- astro: ^7.0.4 -> ^7.0.6\n- @types/node: ^26.0.1 -> ^26.1.0\n\nBuild, vet, gofmt, gofumpt, golangci-lint, deadcode, govulncheck, and\nfull Go test suite all pass; astro check + build clean.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: upgrade all dependencies to latest (#218)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T19:38:15Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0ac4f8372cb82b0ff51873164c154e65175c98dc",
"body": "Space-selection already drives bulk launching. Route the hide (h) and\nfavorite (*) actions through the same marked set so a whole selection can\nbe hidden or starred in one keystroke. With no selection, both keys still\nact on the cursor session.\n\nBatch target state is deterministic: hide the set if a\n[…]\ne skipped when favoriting,\nand a bulk hide drops those sessions from favorites. Config is written\nonce per batch.\n\nCloses #196\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(tui): apply hide and favorite to all selected sessions (#203)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T03:04:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0244f99e4ceb32fb60c3484a2bdbe904ab0deb48",
"body": "Closes #162\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add resume command copy shortcut (#165)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:55:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7976f1947068c0f29656673f8130d91c06cb6001",
"body": "Add an `O` keybinding that opens the selected session's working directory in the system file manager. Reuses the platform opener (explorer, open, xdg-open) with a new OpenDir helper that validates the path is an existing directory before spawning, and reports the result through the status line.\n\nCloses #197\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: open session working directory in file manager (#204)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:43:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a7c66010cb6333d5affe213604fca95d014f371e",
"body": "Treat a leading non-flag, non-subcommand token (or several) as an initial search query so `dispatch auth` or `dispatch fix auth bug` opens the TUI with the search box pre-filled and the list filtered. The query seeds the same search state as typing it interactively: quick search runs immediately with a deep search scheduled to follow.\n\nCloses #198\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: accept a search query as a command-line argument (#205)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:34:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f611e4cfbd75eee79773af41ab9912494c50845",
"body": "Add a --json flag to the doctor command that emits diagnostics as a\nsingle JSON object. Diagnostics are collected once into a doctorReport\nstruct that both the text and JSON renderers consume, so the two outputs\ncannot drift apart. The default text output is unchanged.\n\nCloses #199\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add machine-readable doctor --json output (#206)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:25:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "64503faf93f2ef58b5229bd96ee4437e08c21f36",
"body": "* Add copy path action for session working directory\n\nAdd a Copy Path action that copies the selected session's working directory\nto the clipboard, bound to C and listed in the command palette and help. When\na folder row is selected under a folder or repo pivot, the folder's path is\ncopied instead. \n[…]\n wastedassign failure in the CI test job.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add copy path action for session working directory (#202)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:16:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4a98d407df926fa1cfb57d22dde2e534ee8049f6",
"body": "* Add search query history recall\n\nKeep a short in-memory ring of recently submitted search queries. While the\nsearch box is focused, Up recalls the previous query and Down walks back\ntoward the most recent, clearing the box past the newest entry. Submitting a\nquery moves a repeat to the most recent\n[…]\nad. Removing it unblocks the CI test job.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add search query history recall (#201)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:15:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "39add1f7874f01f46f61bb32f9880448930b1df3",
"body": "* Add open command to resume a session by ID\n\nAdds a non-interactive 'dispatch open <id>' subcommand that resumes a stored session without entering the TUI. Supports --mode to pick inplace, tab, window, or pane, and falls back to the configured default launch mode.\n\nCloses #189\n\nCo-authored-by: Copi\n[…]\nhe builtin cap(); rename it to `capture`.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add open command to resume a session by ID (#193)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T02:15:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "da34a2575e91b23cf999da9cf7738b74180d645b",
"body": "Adds a non-interactive 'dispatch stats' subcommand that reads the session store and prints totals (sessions, turns, files), the date range covered, and counts grouped by repository, branch, and host type. A --json flag prints the same data as one JSON object, and repo, branch, folder, since, and until flags reuse the existing data filters.\n\nCloses #188\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add stats command for session totals and breakdowns (#194)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T01:19:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "09ef7d92560178eee9d0f221757a8921652626eb",
"body": "Group and pivot sessions by host type (GitHub, Azure DevOps) in the TUI,\nalongside the existing folder/repo/branch/date pivots. Adds the host pivot\nto the cycle order, a dedicated host icon, and friendly group labels at\nrender time. Falls back safely when the store schema predates host_type.\n\nCloses #190\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add host-type pivot to session grouping (#195)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T01:19:13Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "451f5ad8ddc3ecc2f3b80344f1d6e34edeacc86b",
"body": "Add auto_refresh_seconds config so the session-list poll interval can be\ntuned or disabled. Unset keeps the current 2s default, 0 turns polling\noff (list still refreshes on r and reindex), and a positive value sets\nthe interval clamped to a one-second minimum. Exposed in the settings\npanel and wired through the DB watcher.\n\nCloses #200\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: make session-list auto-refresh interval configurable (#207)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-03T01:19:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f177c6d0ab24196a6d356934aa7dc0b533052298",
"body": "The lockfile was generated with npm 11 which has structural differences\nfrom npm 10 (shipped with Node 22). CI was failing because npm 10 couldn't\nresolve @emnapi peer deps from the npm 11 lockfile format.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(web): regenerate lockfile and use npm@latest in Pages workflow",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-01T22:32:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b077119cd672bee02fbecfbd5eff876d21257684",
"body": null,
"is_bot": false,
"headline": "fix(web): sync package-lock.json esbuild peer flag",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-01T22:17:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1272c1edca03b9aa79140eba98df18792b6bd8f3",
"body": "Bumps:\n- github.com/github/copilot-sdk/go: v1.0.4 → v1.0.5\n- npm: eligible direct dependencies already latest under 7-day cooldown; refreshed package-lock.json and pruned stale optional entries\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "deps: update all dependencies to latest (#187)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-01T20:11:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a77866c3a5df13c0d427a26e23af42fa35db0bd5",
"body": "Closes #164\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add shell completion command (#167)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-01T11:29:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "274b2aab08285faf6eb112c75ec1844cf8991510",
"body": "* Add doctor diagnostics command\n\nCloses #163\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\n* Fix doctor lint warning\n\nCloses #163\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Add doctor diagnostics command (#166)",
"author_name": "Jon Gallant",
"author_login": "jongio",
"committed_at": "2026-07-01T11:14:01Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 30,
"commits_last_year": 403,
"latest_release_at": "2026-07-18T19:36:04Z",
"latest_release_tag": "v0.14.0",
"releases_from_tags": false,
"days_since_last_push": 1,
"active_weeks_last_year": 12,
"days_since_latest_release": 5,
"mean_days_between_releases": 4.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 100,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "github.com/jongio/dispatch",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/jongio/dispatch",
"is_deprecated": false,
"latest_version": "v0.14.0",
"repository_url": "https://github.com/jongio/dispatch",
"versions_count": 36,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-18T15:19:36Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 4,
"stars": 19,
"watchers": 1,
"fork_history": {
"days": [
{
"date": "2026-03-14",
"count": 2
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-04-18",
"count": 1
}
],
"complete": true,
"collected": 4,
"total_forks": 4
},
"star_history": null,
"open_issues_and_prs": 28
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"web/tsconfig.json"
],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 151766,
"source_files_sampled": 254,
"oversized_source_files": 5,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 814
},
"dependencies": {
"manifests": [
"go.mod",
"web/package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go",
"npm"
],
"dependencies": [
{
"name": "charm.land/bubbles/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.1.1"
},
{
"name": "charm.land/bubbletea/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.8"
},
{
"name": "charm.land/lipgloss/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.5"
},
{
"name": "github.com/UserExistsError/conpty",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.1.4"
},
{
"name": "github.com/atotto/clipboard",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.1.4"
},
{
"name": "github.com/charmbracelet/glamour",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/x/ansi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.11.7"
},
{
"name": "github.com/creack/pty",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.24"
},
{
"name": "github.com/github/copilot-sdk/go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.7"
},
{
"name": "github.com/lucasb-eyer/go-colorful",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.4.0"
},
{
"name": "golang.org/x/sync",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.22.0"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.47.0"
},
{
"name": "modernc.org/sqlite",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.54.0"
},
{
"name": "astro",
"manifest": "web/package.json",
"ecosystem": "npm",
"version_constraint": "^7.1.1"
},
{
"name": "marked",
"manifest": "web/package.json",
"ecosystem": "npm",
"version_constraint": "^18.0.6"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 129,
"open_issues": 27,
"closed_ratio": 0.866,
"closed_issues": 174,
"closed_unmerged_prs": 20
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "jongio",
"commits": 377,
"avatar_url": "https://avatars.githubusercontent.com/u/2163001?v=4"
},
{
"type": "User",
"login": "wbreza",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/6540159?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.992
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"pages.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 8,
"reason": "25 out of 29 merged PRs checked by a CI test -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/29 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 3 contributing companies or organizations -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 8,
"reason": "dependency not pinned by hash detected -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 8,
"reason": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 8,
"reason": "2 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "933439772785b88fe6ad5791a28397eb58795631",
"ran_at": "2026-07-24T15:17:35Z",
"aggregate_score": 6.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-20T19:41:55Z",
"oldest_open_prs": [
{
"number": 359,
"created_at": "2026-07-20T19:32:01Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-20T19:37:43Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 129,
"created_at": "2026-06-09T05:16:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 130,
"created_at": "2026-06-09T05:16:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 131,
"created_at": "2026-06-09T05:16:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 132,
"created_at": "2026-06-09T05:16:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 133,
"created_at": "2026-06-09T05:17:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 134,
"created_at": "2026-06-09T05:17:38Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 135,
"created_at": "2026-06-09T05:17:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 136,
"created_at": "2026-06-09T05:18:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 137,
"created_at": "2026-06-09T05:18:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 138,
"created_at": "2026-06-09T05:18:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 139,
"created_at": "2026-06-09T05:19:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 140,
"created_at": "2026-06-09T05:19:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 141,
"created_at": "2026-06-09T05:19:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 142,
"created_at": "2026-06-09T05:20:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 143,
"created_at": "2026-06-09T05:20:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 144,
"created_at": "2026-06-09T05:21:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 178,
"created_at": "2026-06-29T17:14:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 179,
"created_at": "2026-06-29T17:14:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 181,
"created_at": "2026-06-30T14:11:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 183,
"created_at": "2026-06-30T14:11:18Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/jongio/dispatch",
"host": "github.com",
"name": "dispatch",
"owner": "jongio"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"security": 62,
"vitality": 82,
"community": 56,
"governance": 62,
"engineering": 92
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 82,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"commits_last_year": 403,
"human_commit_share": 0.97,
"days_since_last_push": 1,
"active_weeks_last_year": 12
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 1
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "12/52 weeks with commits",
"points": 8.3,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 12
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "403 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 403
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"releases_count": 30,
"latest_release_tag": "v0.14.0",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 4.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "30 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 30
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~4.7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 4.7
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 56,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 24,
"inputs": {
"forks": 4,
"stars": 19,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "19 stars",
"points": 20.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 19
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "4 forks",
"points": 4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 4
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 62,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.992
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 99% of commits",
"points": 0.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 99
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"merged_prs": 129,
"open_issues": 27,
"closed_issues": 174,
"issue_closed_ratio": 0.866,
"closed_unmerged_prs": 20
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "87% of issues closed",
"points": 40.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 87
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "129/149 decided PRs merged",
"points": 33.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 129,
"decided": 149
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 67,
"inputs": {
"followers": 375,
"owner_type": "User",
"is_verified": null,
"owner_login": "jongio",
"public_repos": 57,
"account_age_days": 5090
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "375 followers of jongio",
"points": 18.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 375,
"login": "jongio"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "57 public repos, account ~13 yr old",
"points": 24.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 57
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/jongio/dispatch"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "36 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 36
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 92,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 86,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "25 out of 29 merged PRs checked by a CI test -- score normalized to 8",
"points": 16,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"copilot",
"github",
"dprun",
"dx-idea"
],
"has_wiki": true,
"homepage": "https://jongio.github.io/dispatch",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://jongio.github.io/dispatch",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 62,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 6.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "25 out of 29 merged PRs checked by a CI test -- score normalized to 8",
"points": 2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 3 contributing companies or organizations -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 8",
"points": 4,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "2 existing vulnerabilities detected",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "excellent",
"name": "AI Readiness",
"value": 91,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 814
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md, AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md, AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "97 of 97 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 97,
"sampled": 97
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 93,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum",
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"web/tsconfig.json"
],
"agent_commit_share": 0.96,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.03
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "go.mod (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "go.mod"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "web/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "web/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "96 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 96,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "3 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 3,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 8",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 151766,
"source_files_sampled": 254,
"oversized_source_files": 5
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "5/254 source files over 60KB",
"points": 53.9,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 254,
"oversized": 5
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-24T15:17:58.649246Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jongio/dispatch.svg",
"full_name": "jongio/dispatch",
"license_state": "standard",
"license_spdx": "MIT"
}