Skip to content

Activity: filters, search, request details and model-name fixes - #145

Merged
skyfallwastaken merged 2 commits into
neofrom
activity-page
Sep 26, 2026
Merged

skyfallwastaken merged 2 commits into
neofrom
activity-page

Conversation

@skyfallwastaken

@skyfallwastaken skyfallwastaken commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

Fixes several Activity issues and adds filters, search and a per-request detail view.

What changed

  • Filters and search. A search box (models, error codes, request-ID prefixes) plus Result, API key and Model filters. Filtering runs server-side in ClickHouse, lives in the URL (/activity?q=…&status=error), and "Load more" pages within the filter.
  • Request details. Clicking a row (or Enter on a focused row) opens a sheet with status, HTTP code, duration, time to first byte, throughput, tokens, cost, provider, endpoint, key, IP and user agent, plus a copy button for the request ID. Request and response bodies are never shown or searched.
  • Routing variants show the right model. openai/gpt-oss-120b:nitro used to render as "nitro", because displayModelName splits on :. A variant is now named and linked after its base model, and the variant appears as a badge.
  • No more 404 links. Jev, OCR, Exa and Replicate rows link to their own dashboard pages. OpenRouter models missing from the listing are plain text instead of a link to /models/<id>.
  • No empty-state flash. Rows were copied into state inside an $effect, so the server-rendered HTML always said "No requests… yet" until hydration. They're now a writable $derived of the page data.

Screenshots

Before / after. Note the :nitro row.

Before (neo) After
before after

Request detail

detail

Search ("gemini") and the Errors filter

Search Errors
search errors

Empty-state flash. This is the server-rendered HTML with JS blocked, which is what shows until hydration.

Before (neo) After
ssr before ssr after

Recording: search, open a row, filter by result and model (mp4)

recording

Testing

  • src/dashboard/read-model.test.ts (real PostgreSQL and ClickHouse):
    • variant naming and provider links;
    • each filter, search, and paging within a filter;
    • the filter options;
    • request detail, including owner-only access.
  • bun run typecheck, bun run check: 0 errors. bun test: 0 fail.
  • Screenshots come from a local dev server on throwaway hcai_demo databases, with a fake "Orpheus" account and real requests through OpenRouter.

🤖 Generated with Claude Code

@skyfallwastaken
skyfallwastaken merged commit e364cfc into neo Sep 26, 2026
3 checks passed
@skyfallwastaken
skyfallwastaken deleted the activity-page branch September 26, 2026 19:47
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.

1 participant