Repository navigation
fix(dashboard): add error boundaries for Combos and MITM Proxy pages - #5788
Conversation
Both pages currently have no route-segment error boundary, so a render crash (e.g. during hydration in production builds) shows a blank page instead of a recoverable fallback. Add error.tsx for each, following the existing pattern used by providers/error.tsx and settings/error.tsx: role="alert" fallback with a dev-only error message, digest display, and a "Try Again" button wired to reset(). Co-authored-by: wahyuzero <wahyuzero@users.noreply.github.com> Inspired-by: decolua/9router#2245
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Code Review
This pull request updates the changelog to document a comprehensive set of new features and bug fixes. Key features include CLI profile auto-sync, flat-rate provider cost classification, an LLM-tier compression engine, typed memory decay, and several compression pipeline enhancements. Bug fixes span compression telemetry, proxy pool synchronization, provider setup links, storage daemon OOM crashes, and dashboard UI improvements. Since no review comments were provided, I have no feedback to evaluate.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
…heaper-inference#5788) Integrated into release/v3.8.43
Summary
The Combos (
/dashboard/combos) and MITM Proxy (/dashboard/system/mitm-proxy) dashboard pages had no Next.js route-segment error boundary. A render crash — e.g. during hydration in production builds — showed a blank page with no way to recover.This adds an
error.tsxfor each segment, so a render error now shows a recoverable fallback with a Try Again button (callsreset()) instead of a blank page.Both files mirror OmniRoute's existing error-boundary pattern (
providers/error.tsx,settings/error.tsx):"use client"with typed props{ error: Error & { digest?: string }, reset: () => void }role="alert"/aria-live="assertive"for accessibilityNODE_ENV === "development") error message display +digest(Error ID) when presentFiles:
src/app/(dashboard)/dashboard/combos/error.tsx(new)src/app/(dashboard)/dashboard/system/mitm-proxy/error.tsx(new)Attribution
Ported from an upstream idea by @wahyuzero (thanks!). Adapted to OmniRoute's existing error-boundary conventions and TypeScript, scoped to the two segments that were actually missing a boundary.
Testing
Added
.test.tsxregression guards (run under vitest-ui):tests/unit/ui/combos-error-boundary.test.tsxtests/unit/ui/mitm-proxy-error-boundary.test.tsxEach renders the boundary with a mock
Error+ aresetspy, asserts the fallback heading/message renders (not a throw), then clicks Try Again and assertsreset()is called exactly once.Confirmed failing before the components existed (unresolved import) and passing after.