-
Notifications
You must be signed in to change notification settings - Fork 528
feat: DHT Provide Sweep Diagnostic Screen #2463
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Chayan Das <01chayandas@gmail.com>
|
Thank you for submitting this PR!
Getting other community members to do a review would be great help too on complex PRs (you can ask in the chats/forums). If you are unsure about something, just leave us a comment.
We currently aim to provide initial feedback/triaging within two business days. Please keep an eye on any labelling actions, as these will indicate priorities and status of your contribution. |
Signed-off-by: Chayan Das <01chayandas@gmail.com>
|
HI @lidel, could you confirm the UI design? |
Signed-off-by: Chayan Das <01chayandas@gmail.com>
- use teal uppercase card titles (ttu tracked f6 fw4) - replace help tooltips with muted GlyphInfo icons - add muted opacity to progress bars - hide TourHelper on diagnostics pages - add className prop to IconTooltip component - prevent uppercase text in tooltips with ttn class
reorganize cards to match `ipfs provide stat -a --compact`: - rename cards: Connectivity, Queues, Schedule, Operations, Network, Workers - update labels to match CLI terminology (Peers swept, Avg record holders, etc.) - remove Timings card, redistribute content to Connectivity and Schedule - group Operations by temporal flow (live stats, then cumulative) - add visual separators for logical grouping in Workers and Operations - Schedule: inline last cycle count, add reprovide interval, compact progress - extract shared formatting utilities to format-utils.ts
replace page title with short description explaining this is a visual summary, linking to `ipfs provide stat` command documentation
- add null/undefined checks with optional chaining across all components - extract shared formatting utilities to format-utils.ts with safe defaults - improve Workers tooltip to explain periodic vs burst worker types
…ndicator - rename region_reprovide_duration to reprovide_duration - add Accelerated DHT client (FullRT) indicator to Network card
includes provide API support for DHT provide stats
- use i18n.language instead of browser locale for Intl.NumberFormat - add formatInteger helper for thousand separators - update all components to use locale-aware formatting
storybook doesn't resolve the src/ path alias from tsconfig
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @Chayandas07 for putting this together!
The foundations you built were solid (kubo-rpc-client v6.1 includes support for ipfs.provide.stat) + the GUI here did not require significant changes 👍
I pushed some follow-up commits to adjust the presentation and fix a few papercuts:
- Made the page robust to potential breaking API changes (defensive null handling)
- Wired up translations and locale-specific number formatting
- Aligned labels with ipfs provide stat CLI output
- Added links to configuration and metric documentation
- Minor UI polish (tooltips, layout tweaks)
This is a great addition to the webui and if there are no concerns during review, we're excited to ship it with Kubo 0.40 in a few weeks!
@guillaumemichel could you do a quick sanity check on the layout and labels? We can always move things around later, but want to catch any awkward phrasing before release.
UI Preview
In the middle of schedule
After reboot
67297f8 to
c54aaab
Compare
- add e2e tests for the DHT provide diagnostic screen - fix global-setup.js to use page.evaluate instead of addInitScript (addInitScript registers for future page loads, so localStorage values were not captured by storageState before browser closed) - enable DHT in test backend: Routing.Type=autoclient, Provide.Strategy=pinned+mfs - bump kubo dependency to 0.39.0 (required for provide stats API) - add 10 minute timeout to e2e workflow - remove --repeat-each 10 from e2e workflow (no longer needed)
c54aaab to
511ec39
Compare
- grid-view: add focusGrid() helper that tries multiple approaches to establish keyboard focus before tests - grid-view: reload page after creating test folder to ensure clean state - grid helper: wait for files view before checking mode in selectViewMode() - files: only verify uploaded files, not all MFS contents (avoids test pollution from parallel runs)
without this, Kubo tries to connect to bootstrap peers which hangs on CI where network access may be restricted
adfb890 to
1ea2cd8
Compare
1ea2cd8 to
b0c7c6d
Compare
- add timeout wrappers to kubo spawn (30s) and setup (60s) - add logging to global-setup and ipfs-backend for debugging - remove all process.env.CI checks from playwright config - add globalTimeout (5min) to catch runaway test suites - use --reporter=list in CI for better output
b0c7c6d to
e4f7abe
Compare
|
CI is broken for reasons unrelated to this PR. |


#2459
Summary
This PR adds a new DHT Provide diagnostics screen to the IPFS WebUI, providing a graphical view of
ipfs provide statdata for the DHT Sweep provider (enabled by default in Kubo v0.39+).The screen gives node operators a clear overview of:
This makes it possible to monitor DHT provide health without relying on the CLI.
Key Features
Screenshots
Initial DHT Provide Screen
Technical Details
Data Source
POST /api/v0/provide/statipfs.provide.stat()through context (ProvideProvider)Architecture
ProvideStatcontext for data fetching and refresh lifecycleReprovideCycleCurrentBatchQueueStatusWorkersNetworknext
Checklist