Skip to content

🐛 Fix 7 data refresh verification bugs#169

Merged
clubanderson merged 2 commits intomainfrom
fix/data-refresh-bugs
Jan 29, 2026
Merged

🐛 Fix 7 data refresh verification bugs#169
clubanderson merged 2 commits intomainfrom
fix/data-refresh-bugs

Conversation

@clubanderson
Copy link
Copy Markdown
Collaborator

Summary

Fixes 7 bugs discovered during comprehensive data refresh verification testing of the KubeStellar Console UI:

  • Namespace dedup: NamespaceManager used raw clusters (with duplicates) instead of deduplicatedClusters, causing failed API calls to long context names
  • Deployment Progress stuck spinner: Card showed infinite spinner when API was slow, instead of rendering available data
  • Deployments stats show "-": Stats blocks showed "-" instead of "0" when no deployments existed
  • Dashboard Namespaces stat: Showed node count with "nodes" sublabel instead of namespace count
  • "Never refreshed" badge: Cards with initial/demo data showed "Never refreshed" while first fetch was in flight
  • Deployment "unknown" cluster: Deployment objects from API lacked cluster field, showing "unknown" in UI
  • Dead code removal: Deleted 450-line ResourceDetailModal.tsx that was never imported anywhere

Also adds agent API endpoint testing documentation to consistency.md.

Changes

File Change
web/src/components/namespaces/NamespaceManager.tsx Use deduplicatedClusters for API calls
web/src/components/cards/DeploymentProgress.tsx Only show spinner when no data available
web/src/components/deployments/Deployments.tsx Fix hasData to use !isLoading
web/src/components/dashboard/Dashboard.tsx Fix namespaces stat computation
web/src/lib/cache/index.ts Set lastRefresh when no IDB entry exists
web/src/hooks/useCachedData.ts Enrich deployments with cluster field
web/src/hooks/useMCP.ts Enrich deployments in 3 fetch paths
web/src/components/dashboard/ResourceDetailModal.tsx Deleted (dead code)
consistency.md Added Phase 5 agent API endpoint testing

Test plan

  • npm run build passes cleanly
  • /namespaces page shows only deduplicated cluster names in errors
  • /deployments stats show "0" instead of "-"
  • No "Never refreshed" badges on cards with data
  • No stuck spinners on Deployment Progress card
  • Verified via Chrome DevTools MCP interactive testing

🤖 Generated with Claude Code

clubanderson and others added 2 commits January 28, 2026 21:45
1. Namespace dedup: Use deduplicatedClusters in NamespaceManager to
   avoid fetching from duplicate long context names
2. Deployment Progress spinner: Only show loading spinner when no
   data at all, not when demo/initial data is available
3. Deployments stats: Show "0" instead of "-" when no deployments
   by using hasData={!isLoading} instead of hasData={count > 0}
4. Dashboard Namespaces stat: Return actual namespace count with
   "namespaces" sublabel instead of node count with "nodes"
5. "Never refreshed" badge: Set lastRefresh in CacheStore when no
   IndexedDB data exists so cards don't show stale badge
6. Deployment "unknown" cluster: Enrich deployment objects with
   cluster name in all three fetch paths (agent, kubectl, REST API)
7. Dead code: Remove unused ResourceDetailModal.tsx (450 lines,
   never imported anywhere)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Add Phase 5 section documenting all 13 HTTP + WebSocket agent
endpoints with auth requirements and test protocol.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Jan 29, 2026
@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign clubanderson for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify
Copy link
Copy Markdown

netlify Bot commented Jan 29, 2026

Deploy Preview for kubestellarklaudeconsole ready!

Name Link
🔨 Latest commit eacd29f
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarklaudeconsole/deploys/697acbe6bd104b0008d3266d
😎 Deploy Preview https://deploy-preview-169.console-deploy-preview.kubestellar.io
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Copy Markdown
Contributor

Welcome to KubeStellar! 🚀 Thank you for submitting this Pull Request.

Before your PR can be merged, please ensure:

DCO Sign-off - All commits must be signed off with git commit -s to certify the Developer Certificate of Origin

PR Title - Must start with an emoji: ✨ (feature), 🐛 (bug fix), 📖 (docs), 🌱 (infra/tests), ⚠️ (breaking change)

Getting Started with KubeStellar:

Contributor Resources:


🌟 Help KubeStellar Grow - We Need Adopters!

Our roadmap is driven entirely by adopter feedback. Whether you're using KubeStellar yourself or know someone who could benefit from multi-cluster Kubernetes:

📋 Take our Multi-Cluster Survey - Share your use cases and help shape our direction!


A maintainer will review your PR soon. Feel free to ask questions in the comments or on Slack!

@kubestellar-prow kubestellar-prow Bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Jan 29, 2026
@clubanderson clubanderson merged commit c2348b5 into main Jan 29, 2026
21 of 29 checks passed
@kubestellar-prow kubestellar-prow Bot deleted the fix/data-refresh-bugs branch January 29, 2026 02:58
@github-actions
Copy link
Copy Markdown
Contributor

🎉 Thank you for your contribution! Your PR has been successfully merged.


🌟 Help KubeStellar Grow - We Need Adopters!

Our roadmap is driven entirely by adopter feedback - nothing else. Whether you're using KubeStellar yourself or know organizations that could benefit from multi-cluster Kubernetes, we need your help:

📋 Take our Multi-Cluster Survey - Share your use cases and help shape our direction!

🗣️ Spread the word - Tell colleagues, write blog posts, present at meetups

💬 Share feedback on Slack #kubestellar-dev

Every adopter story helps us prioritize what matters most. Thank you for being part of the KubeStellar community!

@github-actions
Copy link
Copy Markdown
Contributor

❌ Playwright Tests Failed

📊 View Full Report

Download the playwright-report artifact from the workflow run for screenshots and detailed traces.

To view the report locally:

# Download and extract playwright-report.zip
npx playwright show-report path/to/playwright-report

clubanderson added a commit that referenced this pull request Feb 13, 2026
* 🐛 Fix 7 data refresh verification bugs

1. Namespace dedup: Use deduplicatedClusters in NamespaceManager to
   avoid fetching from duplicate long context names
2. Deployment Progress spinner: Only show loading spinner when no
   data at all, not when demo/initial data is available
3. Deployments stats: Show "0" instead of "-" when no deployments
   by using hasData={!isLoading} instead of hasData={count > 0}
4. Dashboard Namespaces stat: Return actual namespace count with
   "namespaces" sublabel instead of node count with "nodes"
5. "Never refreshed" badge: Set lastRefresh in CacheStore when no
   IndexedDB data exists so cards don't show stale badge
6. Deployment "unknown" cluster: Enrich deployment objects with
   cluster name in all three fetch paths (agent, kubectl, REST API)
7. Dead code: Remove unused ResourceDetailModal.tsx (450 lines,
   never imported anywhere)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>

* 📖 Add agent API endpoint testing to consistency.md

Add Phase 5 section documenting all 13 HTTP + WebSocket agent
endpoints with auth requirements and test protocol.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Andrew Anderson <andy@clubanderson.com>

---------

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates the PR's author has signed the DCO. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant