Skip to content

feat: group dashboard projects by git remote with workspaces under each - #239

Merged
antonbabenko merged 1 commit into
masterfrom
t3/dashboard-repo-project-tree
Oct 8, 2026
Merged

antonbabenko merged 1 commit into
masterfrom
t3/dashboard-repo-project-tree

Conversation

@antonbabenko

Copy link
Copy Markdown
Owner

What

The dashboard groups runs by the git remote (org/repo) and lists each checkout as a workspace under it. Before, a separate clone or a checkout in /tmp showed up as its own project named after its folder, and there was no way to look at one workspace.

  • core/project.js reads the origin remote (else the first remote) from the main git dir's config. It reads files only and never runs git.
    • name is org/repo and id hashes host plus path.
    • A new ws field hashes the checkout path.
    • Only the parsed org/repo is stored, never the URL, because https remotes can carry tokens.
    • Repos without a usable remote keep their old id.
  • Runs recorded before ws existed are regrouped when the dashboard reads them, as long as their root still exists. The journal is not rewritten.
  • ?project= now matches every workspace of a repo. The new ?ws= matches one workspace and wins over ?project=. Both work on /api/runs and /api/analyzer.
  • UI:
    • The project dropdown is a tree (repo, then its workspaces) and is shared by the Runs and Analyzer tabs. A selection saved before this change maps to its repo.
    • The Runs column shows org/repo (path).
    • The Analyzer Projects table has expandable workspace rows, and clicking a name filters to it.
  • Docs updated: README, TECHNICAL, SETUP, tool-guide, design-decisions, and the regenerated host files.

Testing

  • npm run check (typecheck and 1192 tests) and npm run sync:check pass.
  • New tests cover remote URL parsing, grouping of clones and worktrees, falling back when there is no remote, regrouping older runs, the ws filter, nested Analyzer numbers, the ?ws= 400 response, and the dropdown tree.
  • Checked by hand against a real journal of 379 runs: the worktrees of one repo merged under its org/repo row.

Not done

  • The pre-PR consensus review from AGENTS.md has not been run yet.
  • The Stats tab still has no project filter, because it reads the debug log, which records no project.

Runs now record the repo group from the git remote (org/repo) and the checkout
as a workspace (ws), so every clone and worktree of one repo shares a group.
The Runs and Analyzer tabs filter by a whole repo or one workspace, and the
Analyzer projects table expands each repo into its workspaces.
@antonbabenko
antonbabenko merged commit f19442d into master Oct 8, 2026
1 check passed
@antonbabenko
antonbabenko deleted the t3/dashboard-repo-project-tree branch October 8, 2026 15:20
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

This PR is included in v3.28.0 🎉

Claude Code

/plugin marketplace update antonbabenko
/reload-plugins

If the update still shows the old version, the marketplace re-pin is a few minutes behind; run it again shortly.

Codex, Kiro, Cursor, OpenCode plugins: update deliberation from your host's plugin manager.

MCP server (any host): @antonbabenko/deliberation-mcp@3.28.0 is published. Restart your host to pick it up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant