6 Commits

Author SHA1 Message Date
92d3b4dc1b feat(frontend): OIDC login + runtime env (FABRIC_OIDC_ONLY/FIX_TO_CENTER)
- Runtime container env injected by docker/entrypoint.sh -> runtime-env.js
  (loaded before the bundle); src/lib/runtime-env.ts reads it.
  FABRIC_OIDC_ONLY hides the password form; FIX_TO_CENTER pins the
  Center base and hides its input. Dockerfile ENTRYPOINT + ENV defaults.
- LoginPage: 'Sign in with SSO' when /auth/oidc/status enabled; password
  form gated by OIDC_ONLY; center input gated by FIX_TO_CENTER.
- /oidc route (OidcCallback) redeems the fragment ticket via
  /auth/oidc/exchange and adopts the session (AuthContext.adoptSession).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 09:44:49 +01:00
4892af55e8 feat(frontend): terminal restyle + dm + grouping + brand override
- Restyle: ink 'blueprint' surfaces + IBM Plex Mono / Major Mono
  Display, hairline borders, restrained motion, 12px radii. Fabric
  purple accent kept. Layout unchanged.
- Brand override (build-time VITE_ only): VITE_APP_NAME / VITE_LOGO_URL
  / VITE_FAVICON_URL via src/lib/brand.ts (applyBrand in main.tsx);
  login wordmark/logo + title + favicon. .env.example documented.
- dm x-type: create modal participant becomes single-select (radio)
  for dm and forces private; member right-click menu gains 'Create
  new DM channel' (non-unique, fresh channel each time).
- Channels sidebar grouped by x-type with group headers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 09:18:21 +01:00
0d3a333409 fix(brand): bolder strokes + cache-bust favicon
- Thicken the mark's strokes (mask dilation ~2.2%) so it reads at
  tab size; SVG re-traced + all PNGs regenerated, deeper green
  #1DB800 kept.
- The tab kept showing a stale icon because the favicon URL never
  changed across edits (browsers cache favicons very aggressively).
  Version the hrefs (?v=3) to force a refetch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 11:21:39 +01:00
68e60de3b4 feat(brand): vector SVG favicon + deeper green
- favicon.svg: the mark vectorized (OpenCV contour trace of the
  artwork, even-odd fill) -> crisp at any tab size, ~3KB. Set as the
  primary <link rel=icon type=image/svg+xml> with PNG fallbacks.
- Deepen the green: same hue, full saturation, ~72% value
  (#1DB800) and embolden faint anti-aliased strokes (alpha gamma)
  so it no longer looks washed-out at favicon size.
- All PNGs (16/32/256, apple-touch, icon-512) regenerated to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 11:16:57 +01:00
1574efb010 feat(brand): apply Fabric app icon (favicon set, title)
Replace placeholder favicon.svg with the designed Fabric icon as a PNG
favicon set (16/32/256), apple-touch-icon (180), icon-512; document
title -> 'Fabric'; theme-color black to match the icon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 11:04:26 +01:00
root
196535ba5a feat: bootstrap React frontend shell with API and realtime wiring 2026-05-12 12:58:39 +00:00