microsoft / microsoft/vscode-documentdb
Cluster Dashboard: follow-up work deferred from #823
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 31
- Forks
- 22
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 21
Description
Follow-up work for the Cluster Dashboard, deliberately deferred out of #823 rather than forgotten.
#823 went through the CONTRIBUTING §6 AI pre-review with two independent cold reviews (Claude Opus 5 and GPT-5.6 Sol, run in parallel so neither could anchor on the other). They produced 27 findings between them. Each was re-checked against the code before disposition; the ones fixed in #823, the ones left, and the reasoning for each are recorded in the review file:
docs/ai-and-plans/features/cluster-dashboard/iterations/01-poc/ai-pre-review.md— findings, verdicts, and the §6.2 author decisionsdecisions.md— 0010 to 0013 cover what was built and why the alternatives were rejected
Those links resolve once #823 merges. The review file is the authoritative list; this issue exists so the work is visible from the tracker rather than only from a document, and so items can be split off as they are picked up.
The largest gap: no collection-level navigation
The Storage tab expands a database to list its collections, and stops there. There is no drill-in, search, or create flow below the database level. PR #753 would have covered that surface and was abandoned, so it has no owner.
This is the most user-visible thing missing from the feature, and the parts of it are independently useful — a reasonable place to start for someone new to the codebase.
Correctness
- A
listCollectionsfailure renders as an empty database. Same class as the failed-currentOppoll fixed in #823: "the server did not answer" is being shown as "there is nothing here". The error needs to reach the panel. (review: S11) - One-shot RPC failures leave a permanent loading state. No data-correctness consequence, but a spinner that never resolves reads as a hang. (S12)
- Expanded collection figures never refresh and can contradict the database row above them after the 60 s storage refresh. (F11)
Conventions not yet met
- Dashboard failures bypass
ConnectionDiagnosticsService, so an infrastructure cause — a stopped container, a dead port-forward — is reported as a raw driver error instead of being translated. See theerror-translationskill. Mechanical but wide. (S13)
Design decisions worth revisiting
- Command previews carry query literals. Redaction removes credential-bearing commands and secret-shaped field names; it cannot remove application data under arbitrary names. #823 warns at the export boundary rather than redacting, because the tooltip's value is seeing the real query — see decision 0012 for the reasoning. The structural summary both reviewers proposed (keep field names and types, drop literals) is the open question. (S1 rest, S2, F12)
- The Activity tab has no hysteresis by design — decision 0008 says a tab exists only when the server can answer it. #823 made a transient
serverStatusfailure recoverable; whether "unsupported" and "failed repeatedly" should be distinguished further is a change to that decision, not a bug fix. (S9)
Performance
- The operation history is re-serialized on every poll — up to 200 entries with 2 000-character previews, every 5 s, with no diffing. Needs a watermark protocol. (F10)
Out of scope, noted here so it is not lost
VCoreBranchDataProvider populates nodeCount from properties.sharding.shardCount. That predates #823 (introduced in 659b9b5b) and was left alone under the rule against fixing unrelated pre-existing issues in a feature PR, but a reviewer flagged it as a mislabel and it is worth confirming. (S14)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/ai-and-plans/features/cluster-dashboard/iterations/01-poc/ai-pre-review.md, then read decisions.md, especially decisions 0008 and 0012. Choose one independently useful gap, such as collection navigation or an S11-S13 correctness issue, and split it into a focused task with clear acceptance criteria before implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100