Skip to content

feat: expand dashboard UX and enrich stem observability metadata#18

Merged
kingwill101 merged 14 commits intomasterfrom
dashboard_refresh
Feb 26, 2026
Merged

feat: expand dashboard UX and enrich stem observability metadata#18
kingwill101 merged 14 commits intomasterfrom
dashboard_refresh

Conversation

@kingwill101
Copy link
Owner

@kingwill101 kingwill101 commented Feb 25, 2026

Summary

  • Expand stem_dashboard into a multi-view operations console (tasks, jobs, workflows, workers, failures, audit, events, namespaces, search) with modular UI rendering and a Tailwind-driven layout system.
  • Improve navigation and Turbo/frame behavior to reduce stale content transitions and improve responsiveness.
  • Enrich Stem tracing metadata propagation across enqueue/consume/execute spans with task/run lineage, worker/host, namespace, and workflow-step identifiers.
  • Preserve optional payload signing when worker retries republish deliveries.
  • Extend workflow metadata helpers/getters and add coverage for tracing/workflow metadata behavior.
  • Refresh the microservice example with richer workload generation, updated demo schedules, and observability stack wiring (Prometheus/Grafana/Jaeger through nginx).
  • Provision Grafana Stem dashboards with datasource-safe references and update package changelogs in current version sections.

Validation

  • dart test packages/stem/test/unit/tracing/tracing_test.dart
  • dart test packages/stem/test/unit/worker/worker_test.dart

Summary by CodeRabbit

  • New Features

    • Major dashboard redesign: Tasks, Jobs, Workflows, Failures, Audit, Search, Namespaces, inline/detail views, richer overview panels, and mounting with configurable base path.
    • Alerts with webhook delivery and audit logging; task controls for enqueue, replay, and revoke.
    • New Tailwind-based styling and improved responsive layout.
  • Bug Fixes

    • Reduced stale-content flashes during navigation; improved graceful shutdown and webhook timeout handling.
  • Documentation

    • README: DASHBOARD_BASE_PATH and embedding guidance.
  • Tests

    • Expanded unit and integration coverage for dashboard and tracing.

…gic to dedicated files

- Moved event rendering logic to `events.dart` and created `buildEventsContent` function.
- Created `options.dart` for task and worker page options classes.
- Moved overview content rendering to `overview.dart` with `buildOverviewContent` function.
- Added shared utility functions to `shared.dart` for metric cards and queue table rows.
- Implemented task rendering in `tasks.dart` with `buildTasksContent` function.
- Created worker rendering logic in `workers.dart` with `buildWorkersContent` function.
@coderabbitai
Copy link

coderabbitai bot commented Feb 25, 2026

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

Adds basePath mounting and routing to the dashboard, alerting and auditing in dashboard state, expanded dashboard models and data-source APIs (task/workflow queries, replay/revoke), a modular Tailwind-based UI split into page builders, runtime/resiliency improvements in Stem dashboard service, and many example/config/test updates.

Changes

Cohort / File(s) Summary
Dashboard server & public API
packages/dashboard/bin/dashboard.dart, packages/dashboard/lib/dashboard.dart, packages/dashboard/lib/src/server.dart
Introduce DASHBOARD_BASE_PATH/basePath, DashboardMountOptions, basePath-aware routing/registering (mountDashboard, registerDashboardRoutes), turbo partials, graceful shutdown, many new route handlers and option parsers.
Config & state (alerts/audit)
packages/dashboard/lib/src/config/config.dart, packages/dashboard/lib/src/state/dashboard_state.dart
Add alert-related config/env parsing, alert thresholds/cooldown/webhook support, audit entries and recordAudit, alert evaluation, webhook POST with timeout, signature-based change detection and refresh signaling.
Data models & service surface
packages/dashboard/lib/src/services/models.dart, packages/dashboard/lib/src/services/stem_service.dart
New Dashboard* models (audit, task snapshots, namespace/job/workflow summaries), extend DashboardDataSource API (fetchTaskStatuses/fetchTaskStatus/fetchWorkflow*/replayTaskById/revokeTask), StemDashboardService runtime context, workflow store wiring, envelope signing/publish, replay/revoke implementations.
UI core, paths & layout
packages/dashboard/lib/src/ui/content.dart, packages/dashboard/lib/src/ui/layout.dart, packages/dashboard/lib/src/ui/paths.dart, packages/dashboard/lib/src/ui/options.dart, packages/dashboard/lib/src/ui/shared.dart
Refactor monolithic rendering into modular builders; add dashboardRoute, prefixDashboardUrlAttributes, basePath-aware nav and streamPath support, page enum variants, shared UI utilities and formatting, and exported options types.
Page builders (many)
packages/dashboard/lib/src/ui/{overview,tasks,task_detail,workers,namespaces,workflows,jobs,failures,search,audit,events}.dart, .../event_templates.dart
Add page-specific builders (Overview, Tasks, Task Detail, Workers, Namespaces, Workflows, Jobs, Failures, Search, Audit, Events) with filtering, grouping, inline panels, DLQ replay flows, and HTML escaping.
UI paths tests & escaping
packages/dashboard/test/ui_paths_test.dart, packages/dashboard/test/ui_escape_test.dart
Add tests verifying basePath prefix rewriting and HTML escaping across UI renderers.
Styling & Tailwind
packages/dashboard/web/tailwind.input.css, packages/dashboard/tailwind.config.js
Add Tailwind input CSS and Tailwind config (stem palette, font), component utility classes and responsive layout.
Server & client tests
packages/dashboard/test/*
Extend test doubles to implement new DashboardDataSource methods, add tests for search, mounting/basePath behavior, alert webhook timeout, turbo partials, many route/stream behaviors, and dashboard state polling.
Stem core & tracing
packages/stem/lib/src/core/contracts.dart, packages/stem/lib/src/core/stem.dart
Add typed TaskStatus metadata getters, enrich enqueue metadata and span attributes, propagate producer parent context into tracing, and include host/tracing attributes.
Worker/observability/workflow
packages/stem/lib/src/worker/worker.dart, packages/stem/lib/src/observability/{metrics.dart,tracing.dart}, packages/stem/lib/src/workflow/core/{run_state.dart,workflow_watcher.dart}
Add per-envelope span attribute helpers, optional signing on retry publishes, append envelope meta to spans, enable OTel trace exporter (BatchSpanProcessor), change trace-context fallback, and add RunState/WorkflowWatcher suspension getters.
Example apps, docker & grafana
packages/stem/example/microservice/**, docker-compose.yml, nginx.conf, grafana/**, schedules.example.yaml
Rework example app behaviors (auto-fill, dynamic task specs, observability init), update Dockerfile/workdir and PATH usage, adjust compose/nginx paths, add Grafana dashboards and provisioning, and update schedules.
Pubspec / workspace / deps
packages/dashboard/pubspec.yaml, pubspec.yaml, packages/{stem_cli,stem_postgres,stem_sqlite}/pubspec.yaml
Add dashboard to workspace, update dashboard dependency_overrides, bump artisanal to ^0.2.0 in several packages.
Tests (stem & services)
packages/stem/test/**, packages/dashboard/test/**, packages/dashboard/test/services/*
Add/extend unit and integration tests for metadata getters, tracing behaviors (new-trace/no-parent), signed retry scenarios, sqlite dashboard service fetchTaskStatuses, and many dashboard route/feature tests.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant Browser as Client (Browser)
participant Engine as Engine/Server
participant Server as Dashboard Server
participant DS as DashboardDataSource
participant State as DashboardState
participant WS as WorkflowStore/ResultBackend

Browser->>Engine: HTTP request (GET/POST) to basePath route
Engine->>Server: dispatch basePath-aware route handler
Server->>State: read/update state (audit, alerts)
Server->>DS: fetchTaskStatuses / fetchWorkflowRun / replay/revoke
DS->>WS: query workflow store or backend (optional)
DS-->>Server: return data/results
Server-->>Engine: render HTML / Turbo-stream (prefix URLs with basePath)
Engine-->>Browser: response (HTML / Turbo stream)

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

Poem

🐰 I hopped through routes and mounted every path,
I logged an audit, chased a webhook's laugh,
Tasks and runs now wear metadata crowns,
Spans trace their journeys through retries and downs,
Oh hop! the dashboard blooms — widgets, charts, and graphs.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: expand dashboard UX and enrich stem observability metadata' accurately reflects the main changes: dashboard UI expansion (multiple new views, Tailwind styling, modular components) and observability improvements (trace attributes, metadata propagation, worker signing).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dashboard_refresh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

Package publishing

Package Version Status Publish tag (post-merge)
package:stem 0.1.1 ready to publish stem-v0.1.1
package:stem_adapter_tests 0.1.1 ready to publish stem_adapter_tests-v0.1.1
package:stem_builder 0.1.0 ready to publish stem_builder-v0.1.0
package:stem_cli 0.1.0 already published at pub.dev
package:stem_memory 0.1.0 ready to publish stem_memory-v0.1.0
package:stem_postgres 0.1.0 already published at pub.dev
package:stem_redis 0.1.1 ready to publish stem_redis-v0.1.1
package:stem_sqlite 0.1.1 ready to publish stem_sqlite-v0.1.1

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3f8b0c9ffd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// Use explicit wire headers as the only source of producer parent context.
// This avoids accidental context bleed from unrelated async operations
// while still supporting distributed parent propagation via traceparent.
final producerParentContext = tracer.extractTraceContext(headers);

Choose a reason for hiding this comment

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

P1 Badge Keep enqueue spans attached to ambient trace context

This uses only wire headers to derive the enqueue span parent. When Stem.enqueue is called inside an active span without a prefilled traceparent header (the common in-process producer path), extractTraceContext falls back to a fresh context and stem.enqueue starts a new root span, breaking parent-child trace continuity from request/workflow spans unless every caller manually injects headers first.

Useful? React with 👍 / 👎.

Comment on lines 106 to 108
final queueFuture = service.fetchQueueSummaries();
final workerFuture = service.fetchWorkerStatuses();
final taskFuture = service.fetchTaskStatuses(limit: 120);

Choose a reason for hiding this comment

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

P2 Badge Await poll fetches as a group

The poll loop now starts three futures and awaits them sequentially; if the first await throws, the remaining futures are left unawaited, and any later exception from them is emitted as an uncaught async error in the zone. In periodic polling this can generate background uncaught errors and destabilize refresh behavior; awaiting these together (or explicitly handling all failures) avoids leaked exceptions.

Useful? React with 👍 / 👎.

request = await client.postUrl(uri);
request.headers.contentType = ContentType.json;
request.add(utf8.encode(jsonEncode(payload)));
final response = await request.close();

Choose a reason for hiding this comment

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

P2 Badge Add timeout to alert webhook HTTP calls

Alert delivery awaits request.close() without any timeout and is in the synchronous _poll() path. If a webhook endpoint hangs (for example, slow connect or stalled response), that poll cycle blocks until transport timeout, and because polls are serialized, dashboard refresh/alert processing is effectively paused for that period. A bounded timeout around the HTTP request/response is needed to keep polling responsive.

Useful? React with 👍 / 👎.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR broadens Stem’s operational UX and observability story by expanding the dashboard into a multi-view console, enriching trace/span metadata propagation across enqueue/consume/execute, and updating the microservice example + Grafana provisioning to showcase the new capabilities.

Changes:

  • Expanded stem_dashboard into a modular, Tailwind-styled operations console (overview, tasks, jobs, workflows, workers, failures, audit, events, namespaces, search) with base-path mounting support.
  • Enriched tracing metadata and span attributes across Stem.enqueue and Worker consume/execute paths; improved trace-context handling when headers are missing.
  • Updated worker retry republish flow to preserve optional payload signing; extended workflow/status metadata getters and added/updated unit tests.

Reviewed changes

Copilot reviewed 64 out of 68 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
pubspec.yaml Adds the dashboard package to the workspace.
packages/stem_sqlite/pubspec.yaml Bumps artisanal dependency version.
packages/stem_postgres/pubspec.yaml Bumps artisanal dependency version.
packages/stem_cli/pubspec.yaml Bumps artisanal dependency version.
packages/stem/test/unit/workflow/workflow_metadata_views_test.dart Adds tests for new workflow watcher/run-state metadata getters.
packages/stem/test/unit/worker/worker_test.dart Adds coverage for signed retry republish behavior.
packages/stem/test/unit/tracing/tracing_test.dart Expands tracing tests to assert richer metadata + missing-header trace behavior.
packages/stem/test/unit/core/contracts_test.dart Adds tests for new TaskStatus typed metadata getters.
packages/stem/lib/src/workflow/core/workflow_watcher.dart Adds watcher/resolution metadata getters and JSON parsing helpers.
packages/stem/lib/src/workflow/core/run_state.dart Adds suspension metadata getters for workflow runs.
packages/stem/lib/src/worker/worker.dart Adds span-phase attributes, richer span metadata, and optional signing on retry republish.
packages/stem/lib/src/observability/tracing.dart Avoids ambient context chaining when trace headers are missing.
packages/stem/lib/src/observability/metrics.dart Wires OTLP gRPC span exporter into the metrics runtime initialization.
packages/stem/lib/src/core/stem.dart Enriches enqueue span attributes, propagates metadata, and tightens parent context extraction.
packages/stem/lib/src/core/contracts.dart Adds typed metadata getters on TaskStatus + parsing helpers.
packages/stem/example/microservice/worker/pubspec.yaml Adds local override wiring for stem_memory.
packages/stem/example/microservice/worker/bin/worker.dart Expands demo worker tasks/queues and improves progress + env configurability.
packages/stem/example/microservice/worker/Dockerfile Fixes working directory for monorepo layout and ensures Dart is on PATH.
packages/stem/example/microservice/schedules.example.yaml Updates demo schedules and adds richer workload args/meta.
packages/stem/example/microservice/nginx.conf Improves reverse-proxy behavior for Grafana/Prometheus/Jaeger subpaths.
packages/stem/example/microservice/grafana/provisioning/dashboards/stem.yml Adds Grafana provisioning for Stem dashboards.
packages/stem/example/microservice/grafana/dashboards/stem-workers-queues.json New Grafana dashboard for worker/queue metrics.
packages/stem/example/microservice/grafana/dashboards/stem-scheduler.json New Grafana dashboard for scheduler metrics.
packages/stem/example/microservice/grafana/dashboards/stem-overview.json New Grafana overview dashboard for system-level metrics.
packages/stem/example/microservice/grafana-datasources.yml Updates datasource URLs to align with nginx base paths.
packages/stem/example/microservice/enqueuer/pubspec.yaml Adds local override wiring for stem_memory.
packages/stem/example/microservice/enqueuer/bin/main.dart Adds auto-fill workload generator + multi-task/workflow demo enqueuing.
packages/stem/example/microservice/enqueuer/Dockerfile Fixes working directory for monorepo layout and ensures Dart is on PATH.
packages/stem/example/microservice/docker-compose.yml Updates paths, adds base-path config for Jaeger/Grafana, and configures workers/enqueuer env.
packages/stem/example/microservice/dashboard/Dockerfile Updates dashboard Docker build paths for monorepo layout.
packages/stem/example/microservice/beat/pubspec.yaml Adds local override wiring for stem_memory.
packages/stem/example/microservice/beat/bin/beat.dart Applies observability exporters/config in the beat demo.
packages/stem/example/microservice/beat/Dockerfile Fixes working directory for monorepo layout and ensures Dart is on PATH.
packages/stem/example/microservice/README.md Updates docs for new paths, Grafana dashboards, and auto-fill demo traffic.
packages/stem/CHANGELOG.md Documents the new tracing metadata, retry signing behavior, and example/dashboard updates.
packages/dashboard/web/tailwind.input.css Introduces Tailwind base/components/utilities and dashboard styling primitives.
packages/dashboard/test/services/sqlite_dashboard_service_test.dart Adds coverage for task status fetching + filters.
packages/dashboard/test/server_test.dart Expands server tests for new routes, basePath mounting, tasks pages, and actions.
packages/dashboard/test/dashboard_state_property_test.dart Updates test datasource implementation for new dashboard datasource API surface.
packages/dashboard/test/dashboard_browser_test.dart Extends browser tests for new search UX content and datasource API changes.
packages/dashboard/tailwind.config.js Adds Tailwind configuration targeting Dart UI templates.
packages/dashboard/pubspec.yaml Switches to workspace resolution and updates overrides accordingly.
packages/dashboard/lib/src/ui/workflows.dart Adds workflows view rendering.
packages/dashboard/lib/src/ui/workers.dart Adds workers view rendering + controls and recovery sections.
packages/dashboard/lib/src/ui/task_detail.dart Adds task detail view with workflow timeline rendering and actions.
packages/dashboard/lib/src/ui/shared.dart Introduces shared UI helpers (formatting, tables, pills, actions).
packages/dashboard/lib/src/ui/search.dart Adds global search view with saved views + scoped search.
packages/dashboard/lib/src/ui/paths.dart Adds basePath URL/route helpers for mounting and link rewriting.
packages/dashboard/lib/src/ui/overview.dart Adds overview view + derived metrics/latency summaries.
packages/dashboard/lib/src/ui/options.dart Adds strongly-typed per-page options models for query/form state.
packages/dashboard/lib/src/ui/namespaces.dart Adds namespaces rollup view.
packages/dashboard/lib/src/ui/jobs.dart Adds jobs/task-family rollup view.
packages/dashboard/lib/src/ui/failures.dart Adds failures diagnostics grouping view + replay controls.
packages/dashboard/lib/src/ui/events.dart Adds events feed view.
packages/dashboard/lib/src/ui/event_templates.dart Tweaks event item template rendering used by events feed.
packages/dashboard/lib/src/ui/audit.dart Adds audit log view.
packages/dashboard/lib/src/state/dashboard_state.dart Adds polling + signatures + refresh signaling + audit/alerts/webhook delivery.
packages/dashboard/lib/src/config/config.dart Adds config parsing for alert webhooks and thresholds.
packages/dashboard/lib/dashboard.dart Expands public exports for embedding/mounting dashboard engine.
packages/dashboard/bin/dashboard.dart Adds DASHBOARD_BASE_PATH support to standalone runner.
packages/dashboard/README.md Documents dashboard usage and embedding/mounting support.
packages/dashboard/CHANGELOG.md Changelog entry describing dashboard expansion and refactors.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

if (normalizedBasePath.isEmpty) return html;

return html.replaceAllMapped(
RegExp(r'''(href|action|value)=("')/(?!/)([^"']*)\2'''),
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

prefixDashboardUrlAttributes regex looks wrong: (href|action|value)=("')/...\2 won't match either quote type because group 2 is the literal string "'. This likely prevents basePath prefixing from working. Consider changing the quote capture to something like (["']) and reusing that group in the backreference.

Suggested change
RegExp(r'''(href|action|value)=("')/(?!/)([^"']*)\2'''),
RegExp(r'''(href|action|value)=(["'])/(?!/)([^"']*)\2'''),

Copilot uses AI. Check for mistakes.
final queues = status.queues.isEmpty
? '<span class="muted">—</span>'
: status.queues
.map((queue) => '<span class="pill">${queue.name}</span>')
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

buildWorkerRow injects queue.name into HTML without escaping. Queue names can originate from brokers/config and should be HTML-escaped to avoid XSS in the dashboard UI.

Suggested change
.map((queue) => '<span class="pill">${queue.name}</span>')
.map((queue) => '<span class="pill">${escapeHtml(queue.name)}</span>')

Copilot uses AI. Check for mistakes.
.join(' ');
return '''
<tr>
<td class="font-semibold text-slate-100">${status.workerId}</td>
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

buildWorkerRow injects status.workerId into HTML without escaping. Worker IDs can be environment-controlled and should be passed through escapeHtml before rendering to prevent XSS.

Suggested change
<td class="font-semibold text-slate-100">${status.workerId}</td>
<td class="font-semibold text-slate-100">${escapeHtml(status.workerId)}</td>

Copilot uses AI. Check for mistakes.
<tbody>
${filteredWorkers.isEmpty ? '''
<tr>
<td colspan="7" class="muted">No heartbeats detected for namespace "${options.namespaceFilter ?? 'stem'}".</td>
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

The empty-state message interpolates options.namespaceFilter directly into HTML (No heartbeats detected for namespace "..."). This should be HTML-escaped to avoid XSS if a crafted namespace is provided via query params.

Suggested change
<td colspan="7" class="muted">No heartbeats detected for namespace "${options.namespaceFilter ?? 'stem'}".</td>
<td colspan="7" class="muted">No heartbeats detected for namespace "${escapeHtml(options.namespaceFilter ?? 'stem')}".</td>

Copilot uses AI. Check for mistakes.
Comment on lines 12 to 19
return '''
<tr class="queue-row group" data-queue-row="${summary.queue}">
<td><span class="pill">${summary.queue}</span></td>
<td class="font-medium text-slate-100">${formatInt(summary.pending)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.inflight)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.deadLetters)}</td>
</tr>
<tr class="queue-detail" data-queue-detail="${summary.queue}">
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

buildQueueTableRow renders summary.queue into both element content and data-* attributes without HTML-escaping. Since queue names can come from external systems, this can enable XSS/injected attributes; use escapeHtml consistently for queue values.

Suggested change
return '''
<tr class="queue-row group" data-queue-row="${summary.queue}">
<td><span class="pill">${summary.queue}</span></td>
<td class="font-medium text-slate-100">${formatInt(summary.pending)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.inflight)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.deadLetters)}</td>
</tr>
<tr class="queue-detail" data-queue-detail="${summary.queue}">
final escapedQueue = escapeHtml(summary.queue);
return '''
<tr class="queue-row group" data-queue-row="$escapedQueue">
<td><span class="pill">$escapedQueue</span></td>
<td class="font-medium text-slate-100">${formatInt(summary.pending)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.inflight)}</td>
<td class="font-medium text-slate-100">${formatInt(summary.deadLetters)}</td>
</tr>
<tr class="queue-detail" data-queue-detail="$escapedQueue">

Copilot uses AI. Check for mistakes.
Comment on lines 516 to 540
HttpClientRequest? request;
try {
final client = HttpClient();
request = await client.postUrl(uri);
request.headers.contentType = ContentType.json;
request.add(utf8.encode(jsonEncode(payload)));
final response = await request.close();
if (response.statusCode >= 200 && response.statusCode < 300) {
recordAudit(
kind: 'alert',
action: key,
status: 'sent',
actor: 'system',
summary: 'Alert delivered to $url.',
);
} else {
recordAudit(
kind: 'alert',
action: key,
status: 'error',
actor: 'system',
summary: 'Webhook returned HTTP ${response.statusCode} for $url.',
);
}
client.close(force: true);
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

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

_sendAlertWebhooks creates an HttpClient inside the try and only closes it on the success path. If an exception is thrown after the client is created (e.g., DNS/handshake/write), the client is never closed. Consider creating the client outside the try (or using try/finally) and always closing it; also consider draining/consuming the response body before close to avoid socket/resource leaks.

Copilot uses AI. Check for mistakes.
@kingwill101
Copy link
Owner Author

Addressed the inline review concerns in follow-up commits:

  • f14ac22: preserve enqueue span parent continuity by using ambient context fallback when wire headers are absent, plus a tracing regression test.
  • dfbb33d: harden dashboard polling/webhook behavior (group await + webhook timeout/cleanup) and escape user-controlled UI fields in workers/queues/events, with regression tests.
  • b2a93a7: switch Grafana dashboards to datasource UID references and set explicit datasource UIDs in provisioning.

Validation run:

  • dart test packages/stem/test/unit/tracing/tracing_test.dart
  • dart test packages/dashboard/test/ui_paths_test.dart packages/dashboard/test/ui_escape_test.dart packages/dashboard/test/dashboard_state_poll_test.dart
  • dart analyze in packages/stem and packages/dashboard

@coderabbitai
Copy link

coderabbitai bot commented Feb 25, 2026

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
{"name":"HttpError","status":500,"request":{"method":"PATCH","url":"https://api.github.com/repos/kingwill101/stem/issues/comments/3960010941","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit.js/0.0.0-development octokit-core.js/7.0.6 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":{"body":"<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nAdds mounting/basePath routing and alerting/auditing to the dashboard, expands dashboard data models and data-source APIs (task/workflow queries, replay/revoke), rewrites UI into modular Tailwind-backed builders, and augments Stem with richer metadata getters and tracing/OTel export. Example apps, Docker/nginx, Grafana provisioning, and tests were updated.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Dashboard server & mount** <br> `packages/dashboard/bin/dashboard.dart`, `packages/dashboard/lib/dashboard.dart`, `packages/dashboard/lib/src/server.dart`|Introduce `DASHBOARD_BASE_PATH`/basePath, `DashboardMountOptions`, mount/register routes under basePath, basePath-aware redirects/URL helpers, graceful shutdown, and turbo-partials rendering.|\n|**Dashboard config & state** <br> `packages/dashboard/lib/src/config/config.dart`, `packages/dashboard/lib/src/state/dashboard_state.dart`|Parse alert-related env vars, add alert webhook/duration thresholds, add audit storage and recordAudit, alert evaluation, webhook POSTing with timeout and cooldown, polling/signature-based refresh signaling.|\n|**Dashboard data models & service** <br> `packages/dashboard/lib/src/services/models.dart`, `packages/dashboard/lib/src/services/stem_service.dart`|Add Dashboard* models (audit, task snapshots, namespace/job/workflow summaries), extend `DashboardDataSource` with fetchTaskStatuses/fetchTaskStatus/fetchWorkflow*/replayTaskById/revokeTask; StemDashboardService implements runtime reconnect, workflow store wiring, replay/revoke and signed envelope publishing.|\n|**UI core & layout** <br> `packages/dashboard/lib/src/ui/layout.dart`, `packages/dashboard/lib/src/ui/paths.dart`, `packages/dashboard/lib/src/ui/content.dart`, `packages/dashboard/lib/src/ui/options.dart`, `packages/dashboard/lib/src/ui/shared.dart`|Replace monolithic rendering with modular builders, add page enum variants, basePath-aware nav, `dashboardRoute`/`prefixDashboardUrlAttributes`, common UI utilities and formatting, page options classes.|\n|**Page-specific UI modules** <br> `packages/dashboard/lib/src/ui/{overview,tasks,task_detail,workers,namespaces,workflows,jobs,failures,search,audit,events}.dart`, `.../event_templates.dart`|Add page builders for Overview, Tasks (filters/pagination/inline), Task Detail, Workers (controls/coverage/recovery), Namespaces, Workflows, Jobs, Failures (grouping & DLQ replay), Search, Audit, Events; apply HTML escaping and compose content.|\n|**Styling & assets** <br> `packages/dashboard/web/tailwind.input.css`, `packages/dashboard/tailwind.config.js`|Add Tailwind input CSS and config with stem color palette and utility/components for dashboard layout and responsive behavior.|\n|**Tests (dashboard)** <br> `packages/dashboard/test/*`|Extend test doubles to implement new DashboardDataSource methods, add tests for search, mounting/basePath behavior, alerts/webhook timeout, UI escaping, and many route/stream cases.|\n|**Stem — core metadata & tracing** <br> `packages/stem/lib/src/core/contracts.dart`, `packages/stem/lib/src/core/stem.dart`|Add typed TaskStatus metadata getters (taskName, queueName, namespace, startedAt/completedAt/etc.), enrich enqueue metadata and span attributes, merge scope meta, and pass producer parent context into tracing.|\n|**Stem — worker/workflow & observability** <br> `packages/stem/lib/src/worker/worker.dart`, `packages/stem/lib/src/workflow/core/{run_state.dart,workflow_watcher.dart}`, `packages/stem/lib/src/observability/{metrics.dart,tracing.dart}`|Add per-envelope span attribute builders, optional signing on retry publishing, helpers to append envelope meta to spans, add RunState/WorkflowWatcher suspension getters, enable OTel gRPC trace exporter with BatchSpanProcessor and change trace-context fallback behavior.|\n|**Microservice examples & provisioning** <br> `packages/stem/example/microservice/{enqueuer,worker,beat}/bin/*`, `Dockerfile` paths, `docker-compose.yml`, `nginx.conf`, `grafana/**`, `schedules.example.yaml`|Rework example apps: add observability init, dynamic task registry and auto-fill controller, env-driven worker/task names, update Dockerfile build contexts and PATH, add Grafana dashboards/provisioning, adjust nginx/proxy paths and compose services.|\n|**Example Dockerfile & compose tweaks** <br> `packages/stem/example/microservice/*/Dockerfile`, `packages/stem/example/microservice/docker-compose.yml`, `packages/stem/example/microservice/nginx.conf`|Update WORKDIRs to `packages/*` paths, add PATH env for Dart, adjust grafana/jaeger/prometheus proxy paths and volumes, add environment variables used by examples.|\n|**Pubspec / workspace / deps** <br> `packages/dashboard/pubspec.yaml`, `pubspec.yaml`, `packages/{stem_cli,stem_postgres,stem_sqlite}/pubspec.yaml`|Add dashboard to root workspace, adjust dashboard dependency overrides (add artisanal ^0.2.0), bump artisanal to ^0.2.0 in several packages.|\n|**Tests (stem)** <br> `packages/stem/test/unit/**`, `packages/stem/test/services/*`|Add/extend unit tests for metadata getters, tracing behavior (new-trace when missing headers, parent context usage), signed retries, and sqlite dashboard service fetchTaskStatuses tests.|\n\n## Sequence Diagram(s)\n\nmermaid\nsequenceDiagram\n    participant Browser as Client (Browser)\n    participant Engine as Engine/Server\n    participant Server as Dashboard Server\n    participant DS as DashboardDataSource (service/backend)\n    participant State as DashboardState\n    participant WS as WorkflowStore/ResultBackend\n\n    Browser->>Engine: HTTP request (GET/POST) to basePath route\n    Engine->>Server: dispatch route handler (basePath-aware)\n    Server->>State: read/update state (audit, alerts)\n    Server->>DS: fetchTaskStatuses / fetchWorkflowRun / replay/revoke\n    DS->>WS: query workflow store or backend (optional)\n    DS-->>Server: return data/results\n    Server-->>Engine: render HTML/Turbo-stream (prefix URLs with basePath)\n    Engine-->>Browser: response (HTML / Turbo stream)\n\n## Estimated code review effort\n\n🎯 5 (Critical) | ⏱️ ~120 minutes\n\n## Possibly related PRs\n\n- kingwill101/stem#17: touches `packages/dashboard/lib/src/services/models.dart` and WorkerStatus timing; overlaps with dashboard model and status handling changes.\n\n## Poem\n\n> 🐰 I hopped through routes and mounted every path,  \n> I logged an audit, chased a webhook's laugh,  \n> Tasks and runs now wear metadata crowns,  \n> Spans trace their journeys through retries and downs,  \n> Oh hop! the dashboard blooms — widgets, charts, and graphs.\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 3</summary>\n\n<details>\n<summary>✅ Passed checks (3 passed)</summary>\n\n|     Check name     | Status   | Explanation                                                                                                                                                                                                 |\n| :----------------: | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|  Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled.                                                                                                                                                 |\n|     Title check    | ✅ Passed | The title 'feat: expand dashboard UX and enrich stem observability metadata' accurately summarizes the main changes: dashboard UI expansion with new views and improved observability metadata propagation. |\n| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.                                                                                                  |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n- [ ] <!-- {\"checkboxId\": \"7962f53c-55bc-4827-bfbf-6a18da830691\"} --> 📝 Generate docstrings (stacked PR)\n- [ ] <!-- {\"checkboxId\": \"3e1879ae-f29b-4d0d-8e06-d12b7ba33d98\"} --> 📝 Generate docstrings (commit on current branch)\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Create PR with unit tests\n- [ ] <!-- {\"checkboxId\": \"07f1e7d6-8a8e-4e23-9900-8731c2c87f58\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Post copyable unit tests in a comment\n- [ ] <!-- {\"checkboxId\": \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Commit unit tests in branch `dashboard_refresh`\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=kingwill101/stem&utm_content=18)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.\n\n<details>\n<summary>❤️ Share</summary>\n\n- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)\n- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)\n- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)\n- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)\n\n</details>\n\n<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>\n\n<!-- tips_end -->\n\n<!-- internal state start -->\n\n\n<!-- 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 -->\n\n<!-- internal state end -->"},"request":{"retryCount":3,"retries":3,"retryAfter":16}}}

@kingwill101 kingwill101 merged commit 8035fe4 into master Feb 26, 2026
10 checks passed
@kingwill101 kingwill101 deleted the dashboard_refresh branch February 26, 2026 16:37
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.

2 participants