Replace the legacy UI with the dark, mono-accent design language from
design/23-sentry.html across every non-canvas surface.
- PlatformShell: fixed 252px sidebar with grouped nav (Platform /
Operate / Workspace), brand mark, user card, and a topbar with
search (Cmd+K palette), env badge, upgrade, notifications, and
theme toggle; mobile collapses to a top bar with horizontal nav
- New shared component kit in shared/components/sentry.tsx:
SPageHead, SStat, SCard, STable, SSection, SPill, Ticks, Seg,
GhostBtn/QuietBtn/IconBtn, status tone helpers
- New DashboardPage at / — stats row, per-node CPU chart with
1h/24h/7d ranges, resource usage tick strips, anomaly box,
node summary table, recent deployments and project cards;
real API data with demo-mode fixtures
- Landing page moved to /landing and rebuilt: live host telemetry
window, install strip, feature grid, template catalog, docs
- Every page (Projects, Templates, Builds, Databases, HA,
Operations, Activity, Security, Usage, Docs, People, Settings,
Audit Logs, Webhooks, Admin, NodeDetail, ServiceDetail, auth,
setup, not-found) migrated to the new kit and tokens
- Nav active state resolves by longest matching href
- Canvas internals intentionally untouched — separate pass
Verified: tsc --noEmit, eslint, vite build, Playwright walkthrough
of every route at desktop and mobile widths (demo + live session).
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
- Replace purple isometric illustration with a flat brand mark: pink
gradient tile, ribbed container glyph, ground rail — reads at 32px
- Favicon now uses containr.svg instead of vite.svg
- Auth: drop the split panel for a centered layout — dot-grid, ambient
pink glow, logo + wordmark above a compact card, real Google mark,
labeled OAuth divider
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Backend:
- GET /services/:id/metrics with real Docker container stats
- DELETE /git/providers/:id and GET repo branches endpoint
Frontend:
- Service detail shows real telemetry or honest empty states
- Live status distinguishes idle/polling/reconnecting
- Git providers section in Settings; repo+branch pickers in Add Service
- Real logo, compact Projects header, canvas fitView fix
- index.css deduplicated (1725 -> 1384 lines)
- Fixed smoke tests, lint errors, ToastProvider/context unification
Repo hygiene:
- Added LICENSE (MIT), CONTRIBUTING.md, SECURITY.md; rewrote README
- Untracked .env.prod and data/letsencrypt secrets; fixed .gitignore
- Removed legacy root src/internal/cmd and stale configs/docs/artifacts
- Moved guides and design references under docs/
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>