Skip to content

feat(dashboard): "Friendly ops" redesign#228

Merged
pratyush618 merged 17 commits into
masterfrom
feat/dashboard-friendly-ops-redesign
Jun 1, 2026
Merged

feat(dashboard): "Friendly ops" redesign#228
pratyush618 merged 17 commits into
masterfrom
feat/dashboard-friendly-ops-redesign

Conversation

@pratyush618
Copy link
Copy Markdown
Collaborator

@pratyush618 pratyush618 commented May 31, 2026

Summary

A full visual revamp of the dashboard from the generic cold blue-gray developer-tool look to a warmer, friendlier identity ("Friendly ops"), while keeping the same information architecture, data model, and component vocabulary. This is a re-skin, not a rewrite — every TanStack Query hook, route loader, mutation, and search-param schema is preserved; only presentation changed.

Covers the app shell (sidebar + header + command palette) and all 13 views: Overview, Jobs, Queues, Workers, Resources, Dead letters, Circuit breakers, System, Metrics, Logs, Tasks, Webhooks, Settings.

What changed

  • Design tokens (globals.css): warm-paper light / warm-espresso dark neutrals, emerald accent, warmed status colors — all oklch, theme-switching via @theme inline. The "warm" vibe + "regular" density are baked in as token defaults (no user-facing vibe/density switcher; the light/dark toggle and custom-accent override are kept and made coherent with the new token set).
  • Fonts: IBM Plex Sans/Mono/Serif self-hosted via @fontsource (latin subsets) so the bundled dashboard renders offline. Mono is used structurally for all stat numbers / IDs / counts; serif for page + section titles.
  • New shared primitives: Switch, QueueBar (live mix bar), MeterBar, Segmented, Stepper, KvList, Callout, LiveDot, StatusBadge, BrandMark, SectionHeading; Badge gains an optional dot, Button gains asChild + an accent-strong primary.
  • Restyled the shared shell (card, stat-card, table, data-table, page-header, sidebar with the brand mark + live dead-letter count, header) and every page — including new card-grid layouts for Circuit breakers / Resources / Webhooks, a KvList + strategy bar for System, and a pulse health banner + workers card + busiest-queues mix table on Overview.

Honest fidelity notes

A few prototype elements have no backing API, so they were not faked: System has no Runtime/Autoscaler card (no /api/scaler or system-info endpoint), webhook cards show created time instead of delivery stats (the API exposes none), and Settings has no danger zone (no purge/reset mutation). Everything rendered is wired to a real endpoint.

Verification

pnpm run ci is green — biome (223 files), typecheck, 106 vitest tests, and the production build all pass.

Notes for reviewers

  • 9 focused commits, ordered foundation → shared shell → page-by-page (the pre-commit hook runs a whole-tree typecheck, so each commit compiles independently).
  • The design handoff lives in the untracked taskito dashboard/design_handoff_taskito_redesign/ folder and is not part of this PR.

Summary by CodeRabbit

  • New Features

    • Live/pause toggle for logs; configurable webhook retry settings; searchable tasks
  • UI Improvements

    • Overview: health metrics, worker status, busiest queues, stat tiles
    • Many lists converted to card/grid views (circuits, resources, webhooks, proxies)
    • New status visuals: badges, live dots, progress/meter bars, segmented controls, steppers, switches
  • Styling & Animation

    • New warm “taskito” theme, IBM Plex fonts, updated page-rise animation and responsive tokens

Replace the cold blue-gray theme with warm-paper neutrals, emerald,
and IBM Plex, and add the shared primitives the redesign builds on
(Switch, QueueBar, MeterBar, Segmented, Stepper, KvList, Callout,
LiveDot, StatusBadge, BrandMark, SectionHeading).
Add the pulse health banner, busiest-queues mix table, and workers
card; throughput chart gains a failure line, gridlines, and legend.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 31, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 72039725-d132-4441-abe8-158e57b90159

📥 Commits

Reviewing files that changed from the base of the PR and between 4784819 and a525eec.

📒 Files selected for processing (8)
  • dashboard/src/components/ui/button.tsx
  • dashboard/src/components/ui/kv-list.tsx
  • dashboard/src/components/ui/stepper.tsx
  • dashboard/src/features/logs/page.tsx
  • dashboard/src/features/settings/derived.ts
  • dashboard/src/globals.css
  • dashboard/src/routes/dead-letters.tsx
  • dashboard/src/routes/tasks.tsx
🚧 Files skipped from review as they are similar to previous changes (4)
  • dashboard/src/features/settings/derived.ts
  • dashboard/src/features/logs/page.tsx
  • dashboard/src/components/ui/button.tsx
  • dashboard/src/components/ui/kv-list.tsx

📝 Walkthrough

Walkthrough

This PR implements a comprehensive redesign of the Taskito dashboard, introducing a new "warm" design system (IBM Plex typography, oklch color palette, CSS variables), expanding the UI component library with 10+ new components, refreshing all layout structures, and refactoring data tables into responsive card grids across feature pages.

Changes

Dashboard Design System and Feature Overhaul

Layer / File(s) Summary
Design System Foundation
dashboard/package.json, dashboard/src/globals.css, dashboard/src/main.tsx, dashboard/src/lib/status.ts
Self-hosted IBM Plex fonts added to dependencies; globals.css replaces prior design tokens with new "warm" paper/emerald theme using oklch values and extensive CSS variable set; TONE_VAR maps tone types to CSS variables for component styling.
Core UI Component Library: Visual Indicators
dashboard/src/components/ui/live-dot.tsx, dashboard/src/components/ui/meter-bar.tsx, dashboard/src/components/ui/status-badge.tsx
LiveDot renders pulsing status indicators with configurable tone/size; MeterBar displays tone-tinted percentage bars; StatusBadge wraps Badge for job status rendering with dot indicator.
Core UI Component Library: Form Controls
dashboard/src/components/ui/segmented.tsx, dashboard/src/components/ui/switch.tsx, dashboard/src/components/ui/stepper.tsx, dashboard/src/components/ui/queue-bar.tsx
Segmented single-select, Switch toggle, Stepper increment/decrement control, and QueueBar proportional queue-state visualization.
Core UI Component Library: Containers and Data Display
dashboard/src/components/ui/callout.tsx, dashboard/src/components/ui/kv-list.tsx, dashboard/src/components/ui/index.ts
Callout renders tone-tinted alert containers; KvList renders key/value pairs in a responsive <dl>; UI barrel exports updated components and types.
Core UI Component Library: Existing Component Updates
dashboard/src/components/ui/badge.tsx, dashboard/src/components/ui/button.tsx, dashboard/src/components/ui/card.tsx, dashboard/src/components/ui/table.tsx, dashboard/src/components/ui/stat-card.tsx, dashboard/src/components/ui/data-table.tsx
Badge adds optional leading dot and chip styling; Button adds asChild support and revised variants; Card components and table cells switch to CSS-variable-driven padding/border/surface tokens; StatCard uses tone-based chip backgrounds; DataTable wrapper uses tokenized styling.
Layout System: AppShell and Brand Identity
dashboard/src/components/layout/app-shell.tsx, dashboard/src/components/layout/brand-mark.tsx, dashboard/src/components/layout/header.tsx
AppShell uses reduced max-width and animate-page-rise; BrandMark SVG component added; Header search sizing/responsiveness adjusted.
Layout System: Sidebar Redesign
dashboard/src/components/layout/sidebar.tsx
Sidebar redesigned to use BrandMark, "Queue console" label, updated nav active indicator, dead-letter count from statsQuery(), and footer health line with LiveDot.
Layout System: Headers and Section Titles
dashboard/src/components/layout/page-header.tsx, dashboard/src/components/layout/section-heading.tsx, dashboard/src/components/layout/last-refreshed.tsx, dashboard/src/components/layout/index.ts
PageHeader typography/spacing updated; new SectionHeading component exported; LastRefreshed uses LiveDot; layout index re-exports SectionHeading.
Page: Overview with Workers and Refresh
dashboard/src/routes/index.tsx, dashboard/src/features/overview/components/busiest-queues.tsx, dashboard/src/features/overview/components/pulse.tsx, dashboard/src/features/overview/components/workers-card.tsx, dashboard/src/features/overview/components/index.ts
Overview prefetches workers, adds Refresh action, replaces queue section with BusiestQueues, adds Pulse health banner, and WorkersCard with online count.
Page: Throughput Sparkline to Area Chart
dashboard/src/features/overview/components/throughput-sparkline.tsx
ThroughputSparkline refactored into AreaChart with runs (filled area) and failures (stroke), Legend, and enriched hover tooltip showing both series.
Page: Metrics with Stat Cards
dashboard/src/features/metrics/page.tsx, dashboard/src/features/metrics/components/metrics-table.tsx
Metrics page adds summarize helper and StatCard totals grid; metrics table renders success rate via MeterBar with derived tone and mono percent.
Page: Circuit Breakers to Card Grid
dashboard/src/routes/circuit-breakers.tsx, dashboard/src/features/circuit-breakers/components/circuit-breakers-table.tsx
Circuit breakers page adds StatCard grid and replaces DataTable with a responsive card grid per breaker (state badge, MeterBar, formatted durations).
Page: Dead Letters Table and Stats
dashboard/src/routes/dead-letters.tsx, dashboard/src/features/dead-letters/components/dead-letter-list.tsx, dashboard/src/features/dead-letters/components/dead-letter-table.tsx, dashboard/src/features/dead-letters/components/index.ts
Dead-letters page adds stat cards (items, affected tasks, oldest failure) and new DeadLetterTable with job link, truncated error tooltip, relative time, and Replay action.
Page: Resources to Card Grid
dashboard/src/routes/resources.tsx, dashboard/src/features/resources/components/resources-table.tsx
Resources page adds StatCard grid and replaces ResourcesTable with responsive ResourceCard grid showing health, pool MeterBar, and metadata.
Page: Tasks with Search and Stats
dashboard/src/routes/tasks.tsx, dashboard/src/features/tasks/components/task-list-table.tsx
Tasks page adds header search, memoized filtering, StatCard totals, and TaskListTable wrapped in Card with reworked columns and duration formatting.
Page: Workers and Staleness Utility
dashboard/src/routes/workers.tsx, dashboard/src/features/workers/components/workers-table.tsx, dashboard/src/features/workers/utils.ts, dashboard/src/features/workers/index.ts
Workers page computes online/stale via isWorkerStale; new utils export threshold and predicate; WorkersTable adds status column and consistent time cell styling.
Page: Queues with QueueBar
dashboard/src/routes/queues.tsx, dashboard/src/features/queues/components/queues-table.tsx
Queues page updates header eyebrow; QueuesTable uses QueueBar for mix visualization, warning-tone paused badge with dot, and standardized numeric NUM_CELL.
Page: Webhooks with Stat Cards and Card Grid
dashboard/src/routes/webhooks.tsx, dashboard/src/features/webhooks/components/webhook-list-table.tsx, dashboard/src/features/webhooks/components/create-webhook-dialog.tsx, dashboard/src/features/webhooks/components/secret-reveal.tsx, dashboard/src/features/webhooks/components/webhook-row-actions.tsx
Webhooks page adds StatCards, replaces list with WebhookCard grid (enable Switch, event badges, Test), CreateWebhookDialog adds Stepper retry config and Switch for signing secret, SecretReveal adds Callout, RowActions prunes actions to rotate/delete.
Page: Settings with Segmented Control and Color Picker
dashboard/src/routes/settings.tsx, dashboard/src/features/settings/components/refresh-interval-section.tsx, dashboard/src/features/settings/components/branding-section.tsx, dashboard/src/features/settings/derived.ts
Settings page adds eyebrow/description; RefreshIntervalSection uses Segmented control; BrandingSection adds color swatch + hex input; useApplyAccent manages --accent token set via color-mix.
Page: System with SectionHeadings and Table Updates
dashboard/src/routes/system.tsx, dashboard/src/features/system/components/proxy-table.tsx, dashboard/src/features/system/components/interception-table.tsx
System page uses SectionHeading components; ProxyTable replaced with explicit table including "Checksum fails"/"Max" and formatDuration; InterceptionTable renders meta metrics and strategy breakdown card.
Page: Logs with Segmented Filter and Live Toggle
dashboard/src/features/logs/*
Logs page adds live/paused state and toggle, useLogs gains live param to conditionally poll, LogFilters uses Segmented control for levels, LogStream uses 24h time formatting and refreshed row layout.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

  • ByteVeda/taskito#213: Related change touching last-refreshed timing behavior and re-render cadence.

Poem

🐰 I nibble tokens, stitch a theme so warm,
Fonts bundled close, and components transform.
Cards bloom where tables once stood in line,
LiveDots blink softly — the dashboard looks fine.
Hop, refresh, and watch the insights swarm.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dashboard-friendly-ops-redesign

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (3)
dashboard/src/globals.css (1)

257-262: ⚡ Quick win

Add reduced-motion fallback for global animation utilities.

These classes always animate; please disable them under prefers-reduced-motion to avoid motion-triggered UX issues.

Proposed patch
 .animate-page-rise {
   animation: page-rise 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
 }
 .pulse-ring {
   animation: pulse-dot 2.4s infinite;
 }
+
+@media (prefers-reduced-motion: reduce) {
+  .animate-fade-in,
+  .animate-slide-up,
+  .animate-page-rise,
+  .pulse-ring,
+  .animate-shimmer {
+    animation: none !important;
+  }
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dashboard/src/globals.css` around lines 257 - 262, The global animation
utilities (.animate-page-rise and .pulse-ring) always animate; add a
reduced-motion fallback by wrapping a rule in a prefers-reduced-motion media
query that disables these animations (set animation: none and any related
animation properties as needed, using !important if required) so
.animate-page-rise and .pulse-ring do not animate for users who prefer reduced
motion.
dashboard/src/components/ui/stepper.tsx (1)

46-48: ⚡ Quick win

Announce value changes to assistive tech.

The readout updates on +/- but isn't announced, and the button aria-labels ("Increase"/"Decrease") carry no value, so screen-reader users can't perceive the new number after activating a button. Add aria-live="polite" to the readout (or model the control as a role="spinbutton").

♿ Proposed minimal fix
-      <span className="min-w-[48px] px-1 text-center font-mono text-[0.85rem] tabular-nums">
+      <span
+        aria-live="polite"
+        className="min-w-[48px] px-1 text-center font-mono text-[0.85rem] tabular-nums"
+      >
         {format ? format(value) : value}
       </span>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dashboard/src/components/ui/stepper.tsx` around lines 46 - 48, The value
readout in the Stepper component (the span rendering {format ? format(value) :
value}) isn't announced to assistive tech; update that element to be accessible
by either adding aria-live="polite" to the span so screen readers announce
updates, or alternatively change the control to a proper accessible widget
(e.g., give the outer control role="spinbutton" and manage
aria-valuenow/aria-valuetext using the value/format logic). Ensure you reference
the span that renders the value and the value/format variables when making the
change so the updated value is announced.
dashboard/src/features/logs/page.tsx (1)

51-54: ⚡ Quick win

Optional: expose toggle state to assistive tech.

The live/paused button is a toggle but communicates state only via text/dot. Adding aria-pressed={live} lets screen readers announce the on/off state.

♿ Proposed tweak
-          <Button variant={live ? "default" : "outline"} onClick={() => setLive((v) => !v)}>
+          <Button
+            variant={live ? "default" : "outline"}
+            aria-pressed={live}
+            onClick={() => setLive((v) => !v)}
+          >
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dashboard/src/features/logs/page.tsx` around lines 51 - 54, The toggle Button
rendering in page.tsx currently conveys state only via visual text and LiveDot;
update the Button (the element using live, setLive, and LiveDot) to expose its
pressed state to assistive tech by adding aria-pressed={live} (and optionally a
clear aria-label if needed) so screen readers announce on/off; ensure the prop
is placed on the same Button that handles onClick and uses setLive.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@dashboard/src/components/ui/button.tsx`:
- Around line 44-47: The asChild branch returns a Slot which may wrap non-button
elements (e.g., Link) that don't honor :disabled styles; update the asChild
rendering to propagate accessible disabled semantics and prevent interaction:
when disabled is true, ensure the Slot receives aria-disabled="true",
tabIndex={-1}, role="button" (if child isn't natively interactive), and
override/strip onClick/ href activation by passing a no-op or preventing default
(so clicks do nothing); also still apply the buttonVariants className (including
pointer-events-none or a disabled class) so visual styling matches. Locate the
asChild branch (Slot ref={ref} className={cn(buttonVariants(...))} {...props})
and modify the props spread to explicitly set aria-disabled, tabIndex, role and
neutralize event handlers when props.disabled is true.

In `@dashboard/src/components/ui/kv-list.tsx`:
- Around line 22-23: The last-row border removal currently uses a fixed selector
"[&>div:nth-last-of-type(-n+2)]:border-b-0" which strips borders from the last
two items even when columns===1; change the generated classname to apply
different selectors based on the columns prop: when columns === 2 keep
"[&>div:nth-last-of-type(-n+2)]:border-b-0", but when columns === 1 use
"[&>div:nth-last-of-type(1)]:border-b-0" (or equivalent nth-last-of-type(1)) so
only the final row in single-column mode loses its bottom border; update the
classnames array in kv-list.tsx where columns is used to choose the appropriate
selector.

In `@dashboard/src/features/settings/derived.ts`:
- Around line 91-95: The current useApplyAccent() implementation sets CSS
variable --accent-ink to the raw accent value, removing the intended lightness
shift used by badges/segmented controls; update useApplyAccent() so it derives
--accent-ink separately (instead of root.style.setProperty("--accent-ink",
value)) by applying a color-mix or a lightness-adjusted transformation (e.g.,
color-mix(in oklch, ${value} <percent> , transparent) or an oklch lightness
tweak) and keep --accent set to value; modify the lines that set --accent-ink
and --accent-dim/--ring together to compute and set an adjusted color for
--accent-ink to restore the original contrast for badge/segmented components.

In `@dashboard/src/routes/tasks.tsx`:
- Around line 41-46: The search Input currently uses only a placeholder
(value={query}, onChange={(e) => setQuery(e.target.value)}) and the decorative
Search icon is aria-hidden, so add an accessible name and semantic type: update
the <Input> instance to include an aria-label like aria-label="Search tasks" (or
aria-labelledby if you prefer) and add type="search" to the same component so
screen readers recognize it; keep existing value and onChange (query and
setQuery) intact.

---

Nitpick comments:
In `@dashboard/src/components/ui/stepper.tsx`:
- Around line 46-48: The value readout in the Stepper component (the span
rendering {format ? format(value) : value}) isn't announced to assistive tech;
update that element to be accessible by either adding aria-live="polite" to the
span so screen readers announce updates, or alternatively change the control to
a proper accessible widget (e.g., give the outer control role="spinbutton" and
manage aria-valuenow/aria-valuetext using the value/format logic). Ensure you
reference the span that renders the value and the value/format variables when
making the change so the updated value is announced.

In `@dashboard/src/features/logs/page.tsx`:
- Around line 51-54: The toggle Button rendering in page.tsx currently conveys
state only via visual text and LiveDot; update the Button (the element using
live, setLive, and LiveDot) to expose its pressed state to assistive tech by
adding aria-pressed={live} (and optionally a clear aria-label if needed) so
screen readers announce on/off; ensure the prop is placed on the same Button
that handles onClick and uses setLive.

In `@dashboard/src/globals.css`:
- Around line 257-262: The global animation utilities (.animate-page-rise and
.pulse-ring) always animate; add a reduced-motion fallback by wrapping a rule in
a prefers-reduced-motion media query that disables these animations (set
animation: none and any related animation properties as needed, using !important
if required) so .animate-page-rise and .pulse-ring do not animate for users who
prefer reduced motion.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: faf961f5-260f-4d72-9c2f-edebf200c1d6

📥 Commits

Reviewing files that changed from the base of the PR and between c7104f9 and 4784819.

⛔ Files ignored due to path filters (1)
  • dashboard/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (71)
  • dashboard/package.json
  • dashboard/src/components/layout/app-shell.tsx
  • dashboard/src/components/layout/brand-mark.tsx
  • dashboard/src/components/layout/header.tsx
  • dashboard/src/components/layout/index.ts
  • dashboard/src/components/layout/last-refreshed.tsx
  • dashboard/src/components/layout/page-header.tsx
  • dashboard/src/components/layout/section-heading.tsx
  • dashboard/src/components/layout/sidebar.tsx
  • dashboard/src/components/ui/badge.tsx
  • dashboard/src/components/ui/button.tsx
  • dashboard/src/components/ui/callout.tsx
  • dashboard/src/components/ui/card.tsx
  • dashboard/src/components/ui/data-table.tsx
  • dashboard/src/components/ui/index.ts
  • dashboard/src/components/ui/kv-list.tsx
  • dashboard/src/components/ui/live-dot.tsx
  • dashboard/src/components/ui/meter-bar.tsx
  • dashboard/src/components/ui/queue-bar.tsx
  • dashboard/src/components/ui/segmented.tsx
  • dashboard/src/components/ui/stat-card.tsx
  • dashboard/src/components/ui/status-badge.tsx
  • dashboard/src/components/ui/stepper.tsx
  • dashboard/src/components/ui/switch.tsx
  • dashboard/src/components/ui/table.tsx
  • dashboard/src/features/circuit-breakers/components/circuit-breakers-table.tsx
  • dashboard/src/features/dead-letters/components/dead-letter-list.tsx
  • dashboard/src/features/dead-letters/components/dead-letter-table.tsx
  • dashboard/src/features/dead-letters/components/index.ts
  • dashboard/src/features/jobs/components/job-filters.tsx
  • dashboard/src/features/jobs/components/job-table.tsx
  • dashboard/src/features/logs/components/log-filters.tsx
  • dashboard/src/features/logs/components/log-stream.tsx
  • dashboard/src/features/logs/hooks.ts
  • dashboard/src/features/logs/page.tsx
  • dashboard/src/features/metrics/components/metrics-table.tsx
  • dashboard/src/features/metrics/page.tsx
  • dashboard/src/features/overview/components/busiest-queues.tsx
  • dashboard/src/features/overview/components/index.ts
  • dashboard/src/features/overview/components/pulse.tsx
  • dashboard/src/features/overview/components/recent-jobs.tsx
  • dashboard/src/features/overview/components/throughput-sparkline.tsx
  • dashboard/src/features/overview/components/workers-card.tsx
  • dashboard/src/features/queues/components/queues-table.tsx
  • dashboard/src/features/resources/components/resources-table.tsx
  • dashboard/src/features/settings/components/branding-section.tsx
  • dashboard/src/features/settings/components/refresh-interval-section.tsx
  • dashboard/src/features/settings/derived.ts
  • dashboard/src/features/system/components/interception-table.tsx
  • dashboard/src/features/system/components/proxy-table.tsx
  • dashboard/src/features/tasks/components/task-list-table.tsx
  • dashboard/src/features/webhooks/components/create-webhook-dialog.tsx
  • dashboard/src/features/webhooks/components/secret-reveal.tsx
  • dashboard/src/features/webhooks/components/webhook-list-table.tsx
  • dashboard/src/features/webhooks/components/webhook-row-actions.tsx
  • dashboard/src/features/workers/components/workers-table.tsx
  • dashboard/src/features/workers/index.ts
  • dashboard/src/features/workers/utils.ts
  • dashboard/src/globals.css
  • dashboard/src/lib/status.ts
  • dashboard/src/main.tsx
  • dashboard/src/routes/circuit-breakers.tsx
  • dashboard/src/routes/dead-letters.tsx
  • dashboard/src/routes/index.tsx
  • dashboard/src/routes/queues.tsx
  • dashboard/src/routes/resources.tsx
  • dashboard/src/routes/settings.tsx
  • dashboard/src/routes/system.tsx
  • dashboard/src/routes/tasks.tsx
  • dashboard/src/routes/webhooks.tsx
  • dashboard/src/routes/workers.tsx

Comment thread dashboard/src/components/ui/button.tsx
Comment thread dashboard/src/components/ui/kv-list.tsx Outdated
Comment thread dashboard/src/features/settings/derived.ts
Comment thread dashboard/src/routes/dead-letters.tsx
Comment thread dashboard/src/routes/tasks.tsx
@pratyush618 pratyush618 self-assigned this Jun 1, 2026
@pratyush618 pratyush618 merged commit 55d9c34 into master Jun 1, 2026
15 checks passed
@pratyush618 pratyush618 deleted the feat/dashboard-friendly-ops-redesign branch June 1, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant