Skip to content

feat: add an Issues panel for the runtime's diagnostics - #28

Open
lxsmnsyc wants to merge 2 commits into
mainfrom
feat/warnings-panel
Open

lxsmnsyc wants to merge 2 commits into
mainfrom
feat/warnings-panel

Conversation

@lxsmnsyc

@lxsmnsyc lxsmnsyc commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Adds an Issues tab that lists what the Solid runtime reports on OBSERVE.diagnostics, such as a signal read outside a tracking scope. Today these findings only appear in the console. This PR is based on #27, since the panel uses its copy button.

warnings-detail

Changes

  • An Issues tab sits after Errors. It is not named Warnings, since it lists errors, warnings and info. Its badge counts every time a finding was reported.
  • Equal findings, such as the same read in each render of a component, are one row with a count. Entries are capped at 200, newest first.
  • Rows can be filtered by severity (errors, warnings, info), or searched by code, message and owner.
  • The detail shows the kind, owner path, node name and when it was first and last seen.
  • Show in the ownership tree and Show in the reactivity graph select the owner or node the finding is about. The graph link only shows for signals and computations.
  • Open the repair guide links to the code's section, from DEV.guideUrl.
  • The copy button puts a Markdown report of the finding on the clipboard, with sensitive data redacted.
  • The toolbar joins the channel during setup instead of in onSettled, so findings from the first render are kept even while the dock is closed.
  • The runtime calls the listener inside the scope that misbehaved, where a signal write would be a finding itself. Findings are batched and written on a microtask.
  • Owner paths start at the app's first component. The toolbar's own owners (<DevToolbar> › <Errored> › … › <AppScope>) are dropped.
  • An entry holds its node weakly and keeps the latest one, since an earlier node can be disposed.
  • The test fixture has an "emit warning" button that renders a component reading a signal in its body.

Findings from server rendering (SSR_*) are reported on the server, so they do not reach this panel.

Testing

  • Unit tests in src/dev-toolbar/issues/tracker.test.ts cover grouping, the limit, owner path trimming and the report.
  • A new e2e test emits a real STRICT_READ_UNTRACKED, then checks the count, the trimmed owner path, the severity filter, the repair guide link, the jump to <DraftReader> in the ownership tree, and clearing.
  • pnpm test, pnpm typecheck, pnpm format:check, pnpm build, pnpm check and the full e2e suite pass locally.
  • Checked by hand in Chromium against the fixture.

🤖 Generated with Claude Code

@lxsmnsyc lxsmnsyc changed the title feat: add a Warnings panel for the runtime's diagnostics feat: add an Issues panel for the runtime's diagnostics Oct 24, 2026
@lxsmnsyc
lxsmnsyc added this pull request to stack #36 October 27, 2026 08:49
Base automatically changed from feat/agent-reports to main October 27, 2026 08:49
lxsmnsyc and others added 2 commits October 27, 2026 16:49
- A Warnings tab lists the findings Solid reports on its diagnostics channel, such as a signal read outside a tracking scope.
- Equal findings are one row with a count. The tab shows the total.
- Rows can be filtered by severity, or searched by code, message and owner.
- The detail shows the kind, owner path, node and when it was seen. It links to the owner in the ownership tree, the node in the reactivity graph, and the code's section of the repair guide.
- The copy button puts a report of the finding on the clipboard for an agent.
- The panel listens from the moment the toolbar mounts, so findings from the first render are kept.
- Owner paths start at the app's first component, without the toolbar's own owners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The panel lists errors, warnings and info, so a tab named after one of its severities read oddly next to its own filters.
- The tab, its empty state, the clear and copy buttons, and the report title say "issue" now.
- The code moves from warnings/ to issues/, with the data attributes, the icon and the report renamed to match.
- The severity filters still read Errors, Warnings and Info.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lxsmnsyc
lxsmnsyc force-pushed the feat/warnings-panel branch from f8b3815 to f900c3c Compare October 27, 2026 08:49
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