Skip to main content

Nexus UI review — 24 September 2026

This review covers all 35 page routes in nexus-ui/src/app: 33 operator surfaces, sign-in, and the /trading redirect. It combines a source inventory with local browser checks. Changes described as implemented refer to the local workspace; this document does not assert that they have been deployed.

Historical scope

This audit and its screenshots precede the portfolio-only navigation refocus. See the portfolio console guide for the current page inventory and removed workflows.

Design direction​

Nexus is an operator console. The interface should make the next action, the source of each number, and the difference between missing data and an empty result immediately understandable.

The shared design now uses a slate background, distinct raised surfaces, restrained violet accents, clearer muted text, larger page titles, consistent section borders, rounded cards, and more legible table headers. Dense data stays in horizontally scrollable tables. Page actions wrap on narrow screens. Light mode has white cards on a softly tinted canvas; reduced-motion preferences apply to animations and transitions.

The desktop sidebar stays within the viewport and scrolls independently. Page search filters both section and page names. Trading goals and task goals have distinct labels. Squads ceremony is discoverable, and the footer links to the operator documentation. Mobile navigation, modals, and drawers use Radix Dialog for focus containment, Escape handling, accessible titles, and scroll locking. The shell has a skip-to-content link and active navigation has aria-current. Shared form fields associate labels and hints with direct input, select, and textarea controls.

Visual examples​

These local screenshots use synthetic review fixtures, not production balances or activity.

Nexus dashboard in dark mode with fleet metrics, workspace shortcuts and usage chart

Nexus dashboard in light mode with the same synthetic review data

Information integrity fixes​

  • Failed reads have a visible retry state across the main lists, settings, learning tables, oracle views, and trading catalogs. They no longer take the same branch as “no records”.
  • The dashboard no longer shows a permanent “Live” badge or endless skeletons after an error. Its workspace cards link to approvals, treasury, cycle health, and agent management. Usage failures remain visible.
  • Selected page headers show the source and last successful response receipt time. This is not the upstream observation time and is explicitly described as such in the timestamp tooltip.
  • Missing execution status is “unknown”, not “dry-run”. The compact header retains execution status on narrow screens. The on-chain estimate requires all of its request sources to succeed and is labeled separately from consolidated treasury NAV.
  • The hard-coded half-hour countdown was removed. Actual cadence belongs on Cycles, using persisted output and schedule data.
  • Lending supply is shown as raw token base units. The old six-decimal conversion incorrectly labeled every asset's supply as dollar TVL. Human units and dollar valuation need explicit mint decimals and valuation prices.
  • Telegram is labeled as a command reference, not a queried registration list. Static integration cards no longer imply a monitored connection status.
  • Analysis copy no longer describes the decision officer as a daily job; Scope explains monitored markets without implying execution trades all of them.

Page-by-page coverage​

All operator pages inherit the shell, page-header, theme, card, and applicable shared-table improvements. This table distinguishes additional changes from remaining review findings. Follow-ups are proposals, not implemented features.

RouteReviewed surface / implemented changeRemaining information or interaction gap
/Fleet KPIs, request state, usage, workspace linksA combined incident inbox and time-window selection would make triage faster.
/agentsAgent table, editor, search, retry, receipt timeCross-links from an agent to recent runs and explicit ownership would improve diagnosis.
/skillsSkill list/editor and proposed skills, retry, receipt timeA version comparison and list of consuming agents would make edits easier to assess.
/memoryScope/status filters, review actions, drawer, retryEntry provenance, expiry, and memory-use evidence deserve a consistent summary.
/boardsProject cards and editor, retry, receipt timeSurface sync health and last successful sync per project.
/boardBoard selection, creation, drag-and-drop, error stateProvide a keyboard alternative to dragging; distinguish filtered counts from project totals.
/goalsTask dependency graph, clarification, retry; renamed Task goalsHighlight blocked dependency, owner, and age together; offer a text equivalent to the graph.
/schedulesSchedules, worker/queue sections, retry, receipt timeStandardize timezone display and expose misfire policy and scheduler heartbeat.
/runsEpisode history, traces and knowledge, retry, receipt timeMake loaded-list limits and links to related jobs consistent.
/approvalsPending queue, retry, named approve/reject controls, receipt timeShow the full action diff, resource target, expiry, and durable decision history.
/hostsHost topology/cards, retry, receipt timeSeparate configured/enabled state from measured heartbeat and running version.
/mobsMob/host list, independent failure states, receipt timeRunning state is derived from host assignment; an actual heartbeat is still needed.
/mobs/[id]Roster, versions, loadouts and learning detail; retry statesSome secondary sections still need consistent source timestamps and partial-failure treatment.
/registryArtifact tabs, searchable lists, body readers, retryAdd explicit version comparison, promotion audit, and rollback eligibility.
/jobsHistory, status filter, execution detail, retry, receipt timeRow selection needs a keyboard affordance; add correlation links to schedules/runs.
/learningOverview, seven tabs, per-tab retry, refresh includes all tabsCounts are based on loaded lists (up to 500), not authoritative platform totals. Add coverage and attribution-window metadata.
/portfolioExchange balances, positions, orders; clarified relationship to TreasuryStandardize per-source valuation time and reconciliation to consolidated NAV.
/treasuryNAV, exposure, benchmarks, earning, P&L, flows; shared designPreserve existing coverage/dispute semantics; add a single freshness summary across component sources.
/tradingRedirect verifiedContinues to land on Harvest.
/trading/goalsMandate, caps, sleeve targets, ladders; renamed Trading goals; mandate error stateDistinguish decision acceptance time from observation and expiry; explain missing budget/headroom fields consistently.
/trading/harvestPlane status, arming, prices, ladders, lending; unknown/error statesSome health/reconciliation cards still conflate loading, missing configuration, and service failure.
/trading/analysisThesis, order plan, briefs, dream, decisions; error/loading states and cadence copyStructured parse failures and schema versions need explicit diagnostic metadata.
/trading/lendingRanked markets, supply/APY/utilization, retry, rescan failures, receipt timeAPI needs mint decimals, price and valuation time before USD TVL can be shown. Explain score version and available withdrawal liquidity.
/trading/liquidityPositions, pool and vault catalogs, retry, receipt timeKeep pool APR distinct from realized position return. Standardize catalog/vault refresh errors and observation windows.
/trading/oracleFeature table, sort/history, retry, receipt timeAdd sortable coverage/missing-feature counts and consistent observation-age semantics.
/trading/oracle-healthFamily coverage and age, retry, receipt timeFreshest observation alone can hide stale members; report oldest age and missing symbols.
/trading/inspectorPer-symbol feature provenance and failure stateSymbol selection is hard-coded; derive available symbols from the managed scope.
/trading/cyclesPersisted flow health and alerts; shared visual treatmentShow scheduler timezone and next scheduled execution from an authoritative source.
/trading/scopeManaged markets and coverage, retry, receipt time, corrected copySummarize the impact of a scope change on coverage and consumers before applying it.
/trading/ceremonySpending-limit ceremony; now reachable in navigationPreflight needs a clearly persistent network, signer, amount, expiry and transaction-summary presentation. Hardware signing was not exercised.
/logsFilters, live toggle and detail, retry, receipt timeShow retention, stream/reconnect state, and correlation navigation.
/integrationsTaiga configuration failure state; honest static-card labelsNeed live health, last sync, failure reason and ownership for each adapter.
/telegramClearly labeled command referenceActual registered commands, bot identity, allowed chats and last delivery are not queried here.
/settingsLLM/memory/cycle settings; errors no longer leave permanent skeletonsAdd revision, last editor/time, dirty-state navigation protection and effective-vs-requested values.
/sign-inNew brand/typography hierarchy and access guidanceKeep identity-provider errors actionable; live OIDC flow was not exercised.

Prioritized follow-up​

P1 — information needed for trustworthy operations​

  1. Unified freshness contract. Each relevant API response should expose observation time, source, completeness, error/degraded reason, and expected cadence. Receipt time cannot prove upstream freshness.
  2. Authoritative valuation contract. Lending must expose decimals and valuation price/time. The header's on-chain estimate still needs explicit unknown-asset coverage and should eventually share the treasury's canonical accounting model.
  3. Integration and execution health. Return measured heartbeats, actual running version, sync/delivery status, and role-scoped capabilities. Static configuration must not be used as proof that a service is healthy.
  4. Decision/action audit context. Approvals, promotions, settings and ceremonies need the target, before/after values, requester, reviewer, timestamps, and durable outcome in a consistent presentation.

P2 — faster navigation and complete reporting​

  • Server-side totals and pagination for truncated learning/run lists; consistent time-range, timezone and filter persistence across analytical pages.
  • Keyboard-operable data-row actions and Kanban moves; text alternatives for graphs, chart descriptions, and accessible names for remaining custom controls.
  • A dashboard incident summary linked to affected hosts, schedules, jobs and decisions; consistent links between related records.
  • Separate loading, empty, stale, partial and failed states in remaining bespoke trading and secondary detail panels.

Validation boundaries​

Validation uses local development with a synthetic local session and intercepted API responses. No production credentials, mutations, deployment, trading actions, or hardware signing are required. Failed-service checks exercise rendering and navigation; they do not validate production data correctness or every populated chart and detail drawer. Shared changes must retain Treasury's existing accounting tests and the proxy/session boundary.

Verification results​

  • UI production build and TypeScript checking passed. The build retains the existing Next.js middleware-convention deprecation warning.
  • All 174 existing tests passed, including accounting and proxy-header checks.
  • All 35 route entries were opened in Chromium at 1440 × 1000 and 390 × 844 with unavailable upstreams. No page exceptions or document-level horizontal overflow were observed; /trading redirected to Harvest.
  • Synthetic populated dashboard and agent data were checked in dark and light themes. Search with no matches, failed refresh followed by retry recovery, mobile table containment, drawer focus containment/restoration, field labeling, mobile navigation search and Escape/focus return passed.
  • Documentation builds successfully. Existing broken-anchor warnings remain in older roadmap, security and audit links; no new review-page link errors were reported.

These are targeted rendering and interaction checks, not full accessibility certification or end-to-end verification of every production workflow.