Skip to content

feat: dashboard UI polish, metrics latency, import cleanup#135

Merged
pratyush618 merged 41 commits into
masterfrom
feat/dashboard-polish
May 5, 2026
Merged

feat: dashboard UI polish, metrics latency, import cleanup#135
pratyush618 merged 41 commits into
masterfrom
feat/dashboard-polish

Conversation

@pratyush618
Copy link
Copy Markdown
Collaborator

Summary

  • Comprehensive dashboard UI/UX polish pass covering design primitives, global chrome, all major pages, and two pre-existing API contract fixes
  • Backend metrics endpoint now emits p50/p95/p99 latency per bucket alongside the existing avg
  • 14 commits hoisting function-scoped imports to module level across the Python codebase, plus one module extraction to break a circular dependency

Changes

Design-system foundations

  • StatCard now renders the previously-dead trend prop and gained a sparkline slot
  • New TableSkeleton primitive replaces flat <Skeleton> blocks throughout
  • useDeleteSetting now toasts on success

Global chrome

  • Sidebar gains accent left-bar + aria-current="page" indicator
  • Page-header title bumped to text-2xl
  • Route-change fade-in re-fires on every navigation (was a one-time mount animation)
  • Thin top progress bar tied to TanStack Query mutations (not poll cycles)

Overview homepage

  • Stats grid shows trend deltas + mini sparklines for completed/failed (derived from existing throughput buckets, no new API)
  • Throughput chart gains hover tooltip + edge time labels
  • Plain-string empty states replaced with <EmptyState> components

Jobs list + detail

  • Error column auto-hides when no row has an error
  • Created column gains an absolute-time tooltip
  • Table-shaped skeleton, tab content fades on switch
  • Definition-list label column widened to 140 px

Metrics page

  • metrics_timeseries backend endpoint now emits `p50_ms`/`p95_ms`/`p99_ms` per bucket (previously only `avg_ms`)
  • Latency chart plots all four series with click-to-toggle legend + zoom brush
  • Throughput chart gets a brush; metrics table groups columns into Volume/Latency sections

Secondary pages

  • Worker heartbeat dot pulses when active
  • System tables use `EmptyState` with icons; dead-letter rows highlight on hover
  • Queues and circuit-breakers pages use `TableSkeleton`
  • Queues and workers pages gain small stats banners

Bug fixes

  • `/api/proxy-stats` type was `Record<string, ...>` but backend returns `list[dict]` — corrected
  • `/api/interception-stats` type was `Record<strategy, {count, avg_ms}>` but backend returns totals + `strategy_counts` — corrected
  • Recharts re-animated on every 2s poll cycle causing visible jitter — fixed with `isAnimationActive={false}`
  • Top progress bar was strobing on every poll cycle — scoped to mutations only

Settings reorganization

  • Refresh-interval toggle moved from the header into a dedicated card on the Settings page

Python inline-import cleanup

  • 14 commits hoisting function-scoped imports to module top across `cli`, `app`, `task`, `testing`, `locks`, `mixins/inspection`, `prefork/child`, `proxies/reconstruct`, `resources/runtime`, all of `interception/`, `workflows/{builder,run,visualization}`, `async_support/{executor,mixins}`, and `contrib/{otel,flask,django}`
  • Extracted `_ActiveContext` to `taskito/_active_context.py` to break the one legitimate circular import so `taskito.context` can import from `taskito.async_support.context` at module level

Test plan

  • `pnpm --dir dashboard run ci` — Biome CI, typecheck, 97 Vitest tests, Vite build all green
  • `uv run ruff check py_src/` — clean
  • `uv run mypy py_src/taskito/ --no-incremental` — 0 issues across 121 files
  • `uv run python -m pytest tests/python/` — 496 passed, 9 skipped
  • `cargo check --workspace` — clean

pratyush618 added 30 commits May 5, 2026 13:12
@pratyush618 pratyush618 merged commit 9212216 into master May 5, 2026
28 of 34 checks passed
@pratyush618 pratyush618 deleted the feat/dashboard-polish branch May 5, 2026 12:00
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