Files
cameleer-server/ui
hsiegeln fe283674fb
All checks were successful
CI / cleanup-branch (push) Has been skipped
CI / build (push) Successful in 1m22s
CI / docker (push) Successful in 1m11s
CI / deploy-feature (push) Has been skipped
CI / deploy (push) Successful in 43s
fix: use relative asset paths with always-injected <base> tag
Switch Vite base back to './' (relative paths) and always inject
<base href="${BASE_PATH}"> in the entrypoint, even when BASE_PATH=/.

This fixes asset loading for both deployment modes:
- Single-instance: <base href="/"> resolves ./assets/x.js to /assets/x.js
- SaaS tenant: <base href="/t/slug/"> resolves to /t/slug/assets/x.js

Previously base:'/' produced absolute /assets/ paths that the <base>
tag couldn't redirect, breaking SaaS tenants. And base:'./' without
<base> broke deep URLs in single-instance mode. Always injecting the
tag makes relative paths work universally.

The patched server-ui-entrypoint.sh in cameleer-saas (which rewrote
absolute href/src attributes via sed) is no longer needed and can be
removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:30:00 +02:00
..

Cameleer3 UI

React SPA built with @cameleer/design-system v0.1.28, TanStack Query, and Zustand.

Development

npm install
npm run dev

By default the dev server proxies /api/* to http://localhost:8081. To proxy to a remote server instead:

VITE_API_TARGET=http://192.168.50.86:30081 npm run dev

No CORS issues — Vite's proxy makes API calls server-side.

Build

npm run build

API Types

Regenerate TypeScript types from a running backend:

npm run generate-api   # Requires backend running on :8081

Key Features

  • Composable sidebar with accordion behavior (Applications / Starred / Admin sections)
  • Context-aware cmd-k search: shows apps/routes/exchanges on operational pages, users/groups/roles on admin pages
  • LIVE mode toggle: when ON, queries poll at intervals (5s-30s); when OFF, sidebar clicks trigger manual refresh
  • Route control bar with state-aware buttons (start/stop/suspend/resume) and confirmation dialogs
  • Event-type icons in agent timeline with severity-based coloring