Commit Graph
283 Commits
Author SHA1 Message Date
kyle 895737febc style: trim comments to load-bearing invariants only 2026-08-25 22:13:41 -07:00
kyle 5e9d030297 fix(telemetry): enable client tracking in dev 2026-08-25 22:11:09 -07:00
kyle 2b02de2193 fix(telemetry): start scheduler from admin dashboard too, not only health probes 2026-08-25 22:09:08 -07:00
kyle 13481936f0 feat(start): csrf middleware for server functions 2026-08-25 22:05:25 -07:00
kyle 603d5a6f7f i18n: translate telemetry and admin strings for de/es/ja 2026-08-25 21:58:59 -07:00
kyle eb3dbe048b i18n: extract catalogs for telemetry and admin redesign strings 2026-08-25 21:54:51 -07:00
kyle a52872bea8 feat(admin): dashboard home, telemetry section, enrollment ops screen
- mission-control dashboard: now strip, tournament quick actions, usage
  sparklines, error feed, live activity, tools list
- /admin/telemetry with functions/events/errors/players/usage child routes,
  hand-rolled svg chart primitives, decomposed activities table
- error browser with grouping and mark-resolved
- consolidated per-tournament enrollment screen; hub simplified with
  run tournament promoted
- /admin/activities redirects to /admin/telemetry/functions
2026-08-25 21:54:21 -07:00
kyle 06fe1f4ed7 feat(telemetry): rollups, alerts, scheduler, health checks, admin server fns
- pure rollup accumulators with tests; daily upserts keyed date/metric/dim
- alert checks with db-backed cooldown and push to admin players
- in-process scheduler started from health probes
- health endpoint checks pb + supertokens, stale-while-revalidate, always 200
- sse connection counter moved to emitter
- telemetry feature server fns: events/errors/groups/rollups/alerts/status
2026-08-25 21:38:08 -07:00
kyle e2863c1f6c feat(telemetry): collections, universal server-fn coverage, beacon, client tracker
- activities indexes + client_events/client_errors/rollups/alerts collections
- global function middleware via createStart; reads skipped on success
- actor stash, denial dedup, control-flow error guards
- api route logging, auth event overrides, beacon endpoint, web vitals
- centralized admin role checks, shared skeletons, award-badges fix
- extracted deriveRunState with tests
2026-08-25 21:33:25 -07:00
kyle 15aeb64b19 pwa fixes
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / i18n Catalog Check (push) Successful in 40s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m6s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m27s
2026-08-23 21:51:38 -07:00
kyle 8a894e8365 Merge branch 'deep-ketch' into development
CI/CD Pipeline / i18n Catalog Check (push) Successful in 38s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 3m11s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 14s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m31s
2026-08-23 20:31:49 -07:00
kyle e3fea18ab2 badges improvements 2026-08-23 20:31:44 -07:00
kyle 58702da156 style: trim narration comments from recent changes 2026-08-23 20:06:05 -07:00
kyle c342b91029 feat(header): shrink long titles to fit instead of wrapping
The header keeps its size; a title that would overflow scales down to a
floor of 55% and ellipsizes only past that. Re-measures on title change,
resize, and web-font load.
2026-08-23 20:06:05 -07:00
kyle 792425a83e fix(i18n): hydrate in the SSR locale instead of regressing to en
The client's message cache held only en at hydration, so a non-en user
rendered English until the locale's catalog chunk loaded — and stayed
English if that import failed or lost a race. __root beforeLoad now
dehydrates the active locale's compiled catalog with the page and the
provider primes its cache from that payload, so first paint is already in
the user's locale with no dependency on a client-side chunk load.
ensureMessages dedupes concurrent loads and drops rejected ones so a
retry can succeed, and the provider's fallback loader retries instead of
silently stranding the UI in en.
2026-08-23 19:47:31 -07:00
kyle ac2e61731c Merge branch 'theme-discovery-presets' into development 2026-08-23 19:26:37 -07:00
kyle 62cbca4a9d theme tooltip 2026-08-23 19:26:21 -07:00
kyle 11bb70316a fix(pwa): simplify the install prompt copy 2026-08-23 19:03:57 -07:00
kyle 9fc79dfc07 fix(audit): readable names, single writer, denial rows, redacted args
The activity log recorded Start's hashed function id (a sha256 URL
segment) as the name; the middleware now reads compile-time
serverFnMeta.name with the path segment as fallback. toServerResult
resolves { success:false } instead of throwing, so the middleware logged
failures as successes while toServerResult wrote a duplicate row with its
own dead name parser — the middleware is now the single writer and reads
the envelope's success flag. Admin denials, which threw before the logging
middleware ran, get their own audit row. Arguments are redacted
(phone/otp/token keys) and truncated at 2KB. The admin activities search
binds its filter parameters (likePattern escaping) instead of
interpolating raw input. Adds vitest with node-env tests for the
middleware, redaction, and filter utils, and extends logging coverage to
mutating fns that lacked it.
2026-08-23 18:27:53 -07:00
kyle 60e91d1371 fix(pocketbase): self-heal admin auth instead of stranding requests
beforeSend now skips its gate for the auth endpoints (no self-await
deadlock), swallows a rejected authPromise and re-authenticates when the
store is invalid, re-stamps Authorization after the gate so requests built
mid-auth carry the fresh token, and guards startTokenRefresh against
stacking intervals. A failed boot auth logs a diagnostic instead of
crashing the process; recovery happens on the next request.
2026-08-23 18:27:45 -07:00
kyle a45c2aeafa fix(pwa): reword the install prompt and keep it off the bottom nav
The banner sat fixed at the viewport bottom at z-index 1000, covering the
authed shell's mobile nav; it now offsets above the nav's geometry when a
signed-in mobile user has one. New casual copy replaces the Twilio line,
the dismiss button gains a localized aria-label, and de/es/ja catalogs
carry the new strings.
2026-08-23 18:27:40 -07:00
kyle f63dfde85d fix(ui): defer the visual-viewport read out of render
Reading window during render made the client's first render disagree with
the SSR markup; start at zero and fill in after mount, matching Mantine's
useViewportSize contract.
2026-08-23 18:27:35 -07:00
kyle 5ac39ac7a2 Merge branch 'development' into player-picker-single-sele
# Conflicts:
#	src/locales/de/messages.po
#	src/locales/en/messages.po
#	src/locales/es/messages.po
#	src/locales/ja/messages.po
2026-08-23 17:59:55 -07:00
kyle 733615b9e0 redesign h2h player picker: single slot + Me quick-select 2026-08-23 17:59:24 -07:00
kyle d0507481cb harden sse errors 2026-08-23 17:35:45 -07:00
kyle 98343e55d1 Merge branch 'themes' into development 2026-08-23 17:17:12 -07:00
kyle 6f575d6a23 themes lol 2026-08-23 17:17:04 -07:00
kyle 24756128e0 i18n ci fix
CI/CD Pipeline / i18n Catalog Check (push) Successful in 39s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 6m43s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m27s
2026-08-08 16:33:02 -07:00
kyle 19dc698f46 i18n ci fix
CI/CD Pipeline / i18n Catalog Check (push) Failing after 9s
CI/CD Pipeline / Build and Push App Docker Image (push) Skipped
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 9s
CI/CD Pipeline / Deploy to Kubernetes (push) Skipped
2026-08-08 16:00:48 -07:00
kyle 0a7b5fa00f i18n
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / i18n Catalog Check (push) Failing after 10s
CI/CD Pipeline / Build and Push App Docker Image (push) Skipped
CI/CD Pipeline / Deploy to Kubernetes (push) Skipped
2026-08-08 15:29:40 -07:00
kyle 22c282d8fa more for the overhaul
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m49s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 30s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 9m40s
2026-07-22 16:41:44 -07:00
kyle 86cda294f9 social overhaul 2026-07-22 15:47:34 -07:00
kyle 9db3fa697d Merge branch 'loader' into development
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m55s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m24s
2026-07-14 15:00:50 -07:00
kyle 6565714ee4 Merge branch 'predictions' into development
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m36s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 25s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m23s
2026-07-14 14:22:50 -07:00
kyle 1783f0e6bc predictions 2026-07-14 14:15:34 -07:00
kyle 0a7f4de321 Merge branch 'style' into development 2026-07-14 00:39:43 -07:00
kyle e8b7647f3d styling 2026-07-14 00:39:38 -07:00
kyle 0284b33e50 Merge branch 'style' into development 2026-07-14 00:12:46 -07:00
kyle d3809b5805 styling 2026-07-14 00:12:39 -07:00
kyle a50f9b6644 pb 2026-07-13 23:59:10 -07:00
kyle f77b3a5c41 infinite scroll 2026-07-13 23:57:31 -07:00
kyle 3b087850e7 Merge branch 'perf' into development 2026-07-13 23:56:30 -07:00
kyle 19f61ac454 SSE 2026-07-13 23:56:19 -07:00
kyle e6c72a5789 more styles
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m36s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m23s
2026-07-12 23:23:14 -07:00
kyle e9040bb02f generate sw
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m38s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m24s
2026-07-12 21:51:48 -07:00
kyle 552525d272 remove elevated header
CI/CD Pipeline / Build and Push App Docker Image (push) Failing after 1m16s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Has been skipped
2026-07-12 21:43:41 -07:00
kyle 4420e4d0fe merge
CI/CD Pipeline / Build and Push App Docker Image (push) Failing after 1m54s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Has been skipped
2026-07-12 21:30:51 -07:00
kyle 3cc16bdeb2 Merge branch 'style' into development 2026-07-12 21:30:02 -07:00
kyle 48eb7d71b2 Merge branch 'perf' into development 2026-07-12 21:28:46 -07:00
kyle 4f81f3c0ca style upgrades 2026-07-12 21:26:39 -07:00