223 Commits

Author SHA1 Message Date
hsiegeln
cebaa2c55c chore: add vite-plugin-dts and ignore dist/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:24:50 +01:00
hsiegeln
2c427a31a1 docs: add implementation plan for design system packaging
8-task plan covering: git remote, vite-plugin-dts, library entry point,
Vite lib config, package.json, Gitea Actions CI/CD, consumer docs, push.

Fixes from review: deterministic output filename, .npmrc echo instead of
heredoc, dist/ in .gitignore, prerequisite for untracked files, dts
verification, worktree guidance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:19:16 +01:00
hsiegeln
727a5de9dc docs: fix spec issues from review
- Add tokens.css/reset.css imports to entry point (critical: CSS tokens would be missing)
- Add font loading docs for consumers (DM Sans, JetBrains Mono)
- Add publishConfig for Gitea registry (npm publish would target npmjs.org)
- Fix exports map: types condition first
- Add scoped registry line to CI .npmrc
- Note vite-plugin-dts as required devDependency
- Add repository field to package.json spec
- Note tsconfig.node.json update needed
- CSS Module scoping strategy for debuggable class names
- Note CI auth requirements for consuming apps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:12:28 +01:00
hsiegeln
45c35b59fe docs: add design spec for design system packaging
Covers Vite library mode build, Gitea npm registry publishing,
snapshot + tag-based versioning, and consumer setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:07:28 +01:00
hsiegeln
5de97dab14 feat: unified global search & filter system with Cmd-K navigation
Replace per-page filtering with a single GlobalFilterProvider (time range +
status) consumed by a redesigned TopBar across all pages. Lift CommandPalette
to App level so Cmd-K works globally with filtered results that navigate to
exchanges, routes, agents, and applications. Sidebar auto-reveals and selects
the target entry on Cmd-K navigation via location state.

- Extract shared time preset utilities (computePresetRange, DEFAULT_PRESETS)
- Add GlobalFilterProvider (time range + status) and CommandPaletteProvider
- Add TimeRangeDropdown primitive with Popover preset list
- Redesign TopBar: breadcrumb | time dropdown | status pills | search | env
- Add application category to Cmd-K search
- Remove FilterBar and local DateRangePicker from Dashboard/Metrics pages
- Filter AgentHealth EventFeed by global time range
- Remove shift/onSearchClick props from TopBar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 20:06:25 +01:00
hsiegeln
7cd8864f2c refactor: move Dashboard to /apps, add Metrics sidebar entry, scope by app
- Route / redirects to /apps, Dashboard serves both /apps and /apps/:id
- When appId is present, exchanges/routes/agents/search are scoped to that app
- Remove Dashboards sidebar link, add Metrics link
- Sidebar section labels (Applications, Agents) are now clickable nav links
  with separate chevron for collapse toggle
- Update all breadcrumbs from Dashboard/href:'/' to Applications/href:'/apps'
- Remove AppDetail page (replaced by scoped Dashboard)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 19:26:27 +01:00
hsiegeln
674444682e feat: enhance EventFeed timeline and Agent Health page styling
- EventFeed: 28px icon circles with severity colors, stacked message/timestamp,
  search input with clear button, ReactNode message support with searchText field
- Agent Health: timeline wrapped in card panel, instance listing as proper table,
  colored Badge pills for live counts, removed shift pill
- Input primitive: onClear prop with × button for all search fields
- Sidebar: Agents section collapsible like Applications, collapse state persisted
  to localStorage
- FilterBar/Sidebar: clear buttons on all search inputs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 19:11:58 +01:00
hsiegeln
e7668e8144 docs: add GroupCard to decision tree and agent health composition pattern
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 18:26:13 +01:00
hsiegeln
8f93ea41ed feat: Agent Health page with progressive filtering and GroupCard component
Add URL-driven Agent Health page (/agents, /agents/:appId,
/agents/:appId/:instanceId) that progressively narrows from all
applications to a single instance with trend charts. Create
generic GroupCard composite for grouping instances by application.
Expand mock data to 8 instances across 4 apps with varied states.
Split sidebar Agents header into navigable link + collapse chevron.
Update agent tree paths to /agents/:appId/:instanceId. Add EventFeed
with lifecycle events. Change SidebarAgent.tps from string to number.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 18:22:14 +01:00
hsiegeln
e69e5ab5fe feat: redesign Sidebar with hierarchical trees, starring, and collapsible sections
Replace flat app/route/agent lists with expandable tree navigation.
Apps contain their routes and agents hierarchically. Add localStorage-
backed starring with composite keys for uniqueness. Persist expand
state to sessionStorage across page navigations. Add collapsible
section headers, remove button on starred items, and parent app
context labels. Create stub pages for /apps/:id, /agents/:id,
/admin, /api-docs. Consolidate duplicated sidebar data into
shared mock. Widen sidebar from 220px to 260px.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:50:41 +01:00
hsiegeln
4aeb5be6ab refactor: apply Exchanges terminology to merged gap-fill files
Update Inventory page sections and COMPONENT_GUIDE.md to use
"exchange/exchangeCount" instead of "execution/execCount".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:55:54 +01:00
hsiegeln
5acb275ce9 Merge branch 'feature/design-system-gap-fill' 2026-03-18 15:54:32 +01:00
hsiegeln
73f6bdb36c refactor: unify "Executions" → "Exchanges" terminology
Rename all references from "Execution/executions/execCount" to
"Exchange/exchanges/exchangeCount" to align with Apache Camel's
native Exchange concept. Java class names (CamelExecutionException,
HttpOperationFailedException) are preserved as-is.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:54:27 +01:00
hsiegeln
b30bb4dcdd fix: ProgressBar indeterminate animation and AvatarGroup key collision
- Use translateX instead of left for indeterminate shimmer (left doesn't
  work on non-absolutely-positioned elements)
- Use index-based key in AvatarGroup to prevent duplicate name collisions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:33:40 +01:00
hsiegeln
c05681176b fix: remove unused variables in test files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:24:10 +01:00
hsiegeln
2e78655179 docs: update design spec with 14 new components
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:22:48 +01:00
hsiegeln
254680237a docs: add project CLAUDE.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:19:42 +01:00
hsiegeln
9e57c543ca docs: add COMPONENT_GUIDE.md for Claude reference
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:19:16 +01:00
hsiegeln
15cc27b299 feat: add Inventory page — composites and layout sections
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:17:40 +01:00
hsiegeln
61391621b3 feat: add Component Inventory page — primitives section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:12:28 +01:00
hsiegeln
4b3599c70f chore: update composites barrel export with 6 new components
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:06:25 +01:00
hsiegeln
d0bb2b2b70 feat: add TreeView composite
Implements a fully-featured accessible tree view with recursive node
rendering, controlled/uncontrolled expand state, keyboard navigation
(ArrowUp/Down/Left/Right/Home/End/Enter), ARIA roles, selected-node
amber accent styling, meta text, icons, and 32 passing tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:05:15 +01:00
hsiegeln
3f328ec570 feat: add Accordion composite
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:01:49 +01:00
hsiegeln
222c24cc9a feat: add AvatarGroup composite
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:00:11 +01:00
hsiegeln
73bfab757f feat: add Popover composite
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:59:38 +01:00
hsiegeln
a4e32cc02f feat: add AlertDialog composite
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:57:28 +01:00
hsiegeln
c247256d8a feat: add Toast composite (ToastProvider + useToast)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:35:04 +01:00
hsiegeln
59923ed132 chore: update primitives barrel export with 8 new components
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:42:01 +01:00
hsiegeln
ae72c399e9 feat: add FormField primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:41:01 +01:00
hsiegeln
ab5b792648 feat: add Pagination primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:39:46 +01:00
hsiegeln
45d56262ea feat: add Alert primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:00:13 +01:00
hsiegeln
b6fcdada8a feat: add Skeleton primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:58:40 +01:00
hsiegeln
ba48f677d9 feat: add ProgressBar primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:56:34 +01:00
hsiegeln
afe1abf7a1 feat: add Textarea primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:54:11 +01:00
hsiegeln
4d420dfa6d feat: add Radio primitive (RadioGroup + RadioItem)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:52:33 +01:00
hsiegeln
10a9ccfd42 feat: add Label primitive
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:50:24 +01:00
hsiegeln
ce3203c842 chore: add .worktrees/ to .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:35:11 +01:00
hsiegeln
883e4b565d fix: add page navigation to Sidebar + wire in camel SVG logo
- Add Navigation section (Dashboard, Metrics, Agents) with useNavigate
- Route items now navigate to /routes/:id
- Active state highlights current page based on location.pathname
- Replace inline CamelIcon with actual camel-logo.svg asset

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:01:40 +01:00
hsiegeln
dee4b681d3 asset: add camel SVG logo with currentColor fill
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:30:10 +01:00
hsiegeln
da4dd55209 feat: Cameleer3 design system — complete standalone implementation
Wires up all 5 routes in App.tsx (/, /metrics, /routes/:id,
/exchanges/:id, /agents). Fixes pre-existing build errors: vite.config.ts
now uses vitest/config defineConfig so the test property is typed
correctly; removes unused imports in Collapsible.tsx and _chart-utils.ts;
removes unused parameter in metrics.ts generateTimeSeries.

Build: tsc -b && vite build passes clean. Test suite: 72/72 pass.
Bundle: 334kB JS (101kB gzip) + 54kB CSS (10kB gzip).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:22:23 +01:00
hsiegeln
82f7f88820 feat: ExchangeDetail and AgentHealth pages
ExchangeDetail (/exchanges/:id): exchange header card with ID/route/
status/duration, ProcessorTimeline for the specific exchange, step-by-
step exchange inspector using Collapsible+CodeBlock for headers/body at
each processor step, and error details block for failed exchanges.

AgentHealth (/agents): 6-card system overview strip, 2-column grid of
agent cards (StatusDot, name, version, tps, uptime, last-seen, CPU/mem
usage, active routes), expandable per-agent LineCharts for throughput
and error rate trends. Both pages use AppShell + shared Sidebar layout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:22:11 +01:00
hsiegeln
ebf653e848 feat: RouteDetail page
Implements the /routes/:id route with route header card (name, status
badge, description), 5-card KPI strip (total executions, success rate,
p50/p99 latency, inflight count), ProcessorTimeline showing aggregate
processor stats across all executions, filtered DataTable of recent
executions for the route, and error patterns section grouped by
exception class. Uses useParams() to get route ID and navigates to
/exchanges/:id on row click.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:22:02 +01:00
hsiegeln
9dd78a7d2e feat: Metrics dashboard page
Implements the /metrics route with DateRangePicker bar, 5 KPI StatCards
with sparklines (throughput, latency p99, error rate, success rate,
active routes), per-route DataTable with trend sparklines, and a 2x2
chart grid (AreaChart throughput, LineChart latency with SLA threshold,
BarChart errors, AreaChart volume). Uses AppShell + Sidebar + TopBar
layout with mock data from src/mocks/metrics.ts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:21:52 +01:00
hsiegeln
5f6bcd374d feat: Dashboard page composing full design system
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:06:41 +01:00
hsiegeln
cd0d02a61b feat: static mock data for executions, routes, agents, metrics
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:06:38 +01:00
hsiegeln
332cf18d1d feat: AppShell, Sidebar, TopBar layout components
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:06:32 +01:00
hsiegeln
a44e93383c feat: composites barrel export
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:58:17 +01:00
hsiegeln
d106dfd275 feat: CommandPalette composite with search, filtering, keyboard navigation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:58:13 +01:00
hsiegeln
e86fecbd00 feat: ProcessorTimeline and EventFeed composites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:58:09 +01:00
hsiegeln
f88e83dd0a feat: AreaChart, LineChart, BarChart SVG composites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:58:03 +01:00