Skip to content

Conversation

SgtPooki
Copy link
Member

@SgtPooki SgtPooki commented Jul 28, 2025

Adds diagnostics screen to the webui.

The page has tabs support, but only the logs tab is implemented currently.

  • Add expandable log viewer window with icon
  • Add pause/resume button when in that view
  • fix mobile view for log viewer
  • Fix IPFSConnected functionality when node shuts down while viewing diagnostics screen
  • Fix forward ref error in console (see comment)

refs

With unsupported kubo versions:

image

Main view

image

Demo

2025-09-02.at.19.16.08.-.Salmon.Cheetah.webm

@SgtPooki SgtPooki changed the base branch from main to feat/connect-provider July 28, 2025 19:41
@SgtPooki SgtPooki force-pushed the feat/diagnostics-screen branch from 2d2e976 to 6e04400 Compare July 28, 2025 19:45
@lidel
Copy link
Member

lidel commented Sep 15, 2025

@SgtPooki https://check.ipfs.network updated to v0.7.0 🚀

* feat: add ipfs-check tab to diagnostics screen
* fix: useDebouncedCallback doesnt lose function call on delay change
* feat: add retrieval check tab with ipfs-check iframe

- integrate ipfs-check as iframe in diagnostics page
- support passing CID parameter from URL
- improve tab styling and fix linting issues

NOTE: this requires ipfs-check#102 to be deployed to prod.
Preview at ipfs/ipfs-check#102 (review)

* security: add iframe sandboxing

- add sandbox attribute with minimal required permissions
- allow-scripts for check functionality
- allow-forms for form submission
- allow-same-origin for postMessage communication
- update iframe title to be more descriptive
- extract URL constants for reuse and origin validation

* feat: add loading state and ARIA attributes

- add loading indicator while iframe loads
- hide loading state on first postMessage from iframe
- use aria-busy and role=status for accessibility
- position loading message to avoid layout shift
- match existing UI style (charcoal-muted, f5, centered)
- fix typo: intial -> initial

* feat: set iframe initial height to 80vh

- show browser error messages when iframe fails
- height adjusts via postMessage when content loads

* feat: make ipfs-check service URL configurable

- add retrieval diagnostic service settings section
- create IpfsCheckForm component for URL configuration
- store ipfs-check URL in local storage with default fallback
- update CheckScreen to use configurable URL from redux store
- add translations for new settings UI

users can now configure a custom ipfs-check instance URL via settings
to use self-hosted or alternative diagnostic services

Closes #2434

---------

Co-authored-by: Marcin Rataj <[email protected]>
- adds 'Check Retrieval' action to files context menu
- triggers background provide when checking retrieval
- renamed doFilesCopyCidProvide to generic doFilesCidProvide
- simplified dispatchAsyncProvide to remove context logging
- only log PUT_VALUE events during provide operations
upload-artifact@v4 requires unique artifact names when multiple
jobs upload artifacts. adds shard index to artifact name.
fixes all 21 TypeScript errors by adding JSDoc type annotations.
the errors were exposed when we started importing DEFAULT_IPFS_CHECK_URL
from TypeScript files, bringing gateway.js into the TypeScript check scope.
- properly wait for async state updates to complete
- remove incorrect expectations for onErrorChange calls
- add test-results/ to .gitignore
- show tooltip on initial load for 6 seconds
- add pulsating animation to play button before first interaction
- add breathing animation to pause icon when streaming
- enhance tooltip styling with better padding and non-selectable content
- show different message when streaming but no logs appear
- add "Clear all logs" resets to initial state with tooltip
- stop streaming when clearing logs
- use muted color for empty state messages
- use single column layout for better consistency
- add consistent label and input styling matching webui patterns
- add htmlFor/id attributes for accessibility
- use shared button labels from app translations
- remove unused translation keys
- simplify and clarify all log-related labels and descriptions
- rename confusing translation keys (description → placeholder)
- add Default button to quickly set log level to error
- rename Reset to Cancel for clarity (only cancels unsaved changes)
- use consistent button labels from app translations
- remove redundant main description, merge into log config section
- make descriptions more user-friendly with practical examples
- fix unused imports and linting errors
@lidel
Copy link
Member

lidel commented Sep 16, 2025

Pushed some cosmetic changes improving UX, cleaning up some labels

Preview

Moved Diagnostics to the end of navbar to not disturb muscle memory people have after half of decade :)

Opening log screen...

..now has visual indicator what to click + button to restore default error level, and more user friendly header

2025-09-16_02-25 2025-09-16_02-25_1

Retrieval check integrated with Files screen

Clicking on context menu now has "Check Retrieval" option which will open ipfs-check with CID prefilled:

2025-09-15_23-00 2025-09-15_23-02 2025-09-15_23-01

Copy link
Member

@lidel lidel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm, thank you @SgtPooki I think this is as good as we could make it given the time allocated.

Once CI is green, I'm going to merge it to give translators more time before we cut a release later this week (I hope to dogfood it bit more in Kubo 0.38 RC1)

@SgtPooki
Copy link
Member Author

@lidel Awesome. I was going to open up a follow up for the check retrieval action you added.. very nice.

@SgtPooki SgtPooki merged commit f3a8179 into main Sep 16, 2025
38 of 41 checks passed
@SgtPooki SgtPooki deleted the feat/diagnostics-screen branch September 16, 2025 12:47
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.

feat: ipfs-check iframe URL should be configurable feat: settings screen - allow adjusting kubo log level Feature: Diagnostics view
2 participants