kyle
044e573933
Merge branch 'admin-telemetry-redesign' into development
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 19s
CI/CD Pipeline / i18n Catalog Check (push) Successful in 41s
CI/CD Pipeline / Build and Push App Docker Image (push) Failing after 51s
CI/CD Pipeline / Deploy to Kubernetes (push) Skipped
2026-08-25 23:36:10 -07:00
kyle
3d8ee52a15
feat(telemetry): opt-in admin alert pushes
...
- telemetryAlerts metadata flag, admin-gated server fn
- alerts sent only to admins with the flag enabled
- settings toggle visible to admins only, under device notifications
2026-08-25 23:33:01 -07:00
kyle
1ddcffc511
fix(telemetry): review findings
...
- wau/mau trailing scans run hourly and on day finalization, not every tick
- exclusion lookup failures cached 30s so an st outage cannot amplify
- unverified relation filter dropped; player emptiness checked in js
- anonymous unauthenticated read failures no longer logged
- alerts and exclusions ensure supertokens init on cold pods
2026-08-25 23:26:34 -07:00
kyle
31f6237446
refactor(admin): drop status strip from dashboard; full-bleed usage tab
...
- admin home is tournament section + tools list only
- usage route matches sibling tabs (fullWidth, no shell padding); screen
pads its own content so the tab bar stays flush
2026-08-25 23:22:21 -07:00
kyle
6dff5f19c1
chore(k8s): optional telemetry_exclude_phones secret env
2026-08-25 23:04:31 -07:00
kyle
9f5fac2753
feat(telemetry): exclude configured phones from usage telemetry
...
- TELEMETRY_EXCLUDE_PHONES resolves to player ids at runtime, cached 10m
- excluded players write no activities, client events, or vitals
- their client errors are still captured
2026-08-25 23:04:14 -07:00
kyle
c05bdec252
fix(sheet): native scroll container so vaul drag detection works
2026-08-25 22:59:00 -07:00
kyle
e4d1ba720a
feat(telemetry): session journey view replaces raw events table
...
- sessions listed from client_events grouped by session id (7d window)
- timeline sheet merges page views, client events, errors, and server-fn
activities joined by player within the session window
- vitals excluded from timelines; gap markers over 5 minutes
2026-08-25 22:56:09 -07:00
kyle
5d7747839c
refactor(telemetry): text-only list empty states, distinct p50/p95 series
...
- paginated-list empty prop is a plain string, no icon block
- second sparkline series drawn in dimmed color; area disabled on dual charts
- duration legend shows latest p50/p95 values
2026-08-25 22:38:45 -07:00
kyle
fd0489a22f
refactor(telemetry): chart scale labels, calmer vitals and error styling, usage-first tabs
...
- sparklines get start/end date and max-value footers
- vitals rating shown by value color instead of badges
- error rows use plain counts, subtle resolve button, terse empty state
- telemetry tab order: usage, players, functions, events, errors; usage is default
2026-08-25 22:35:16 -07:00
kyle
7ea189aa61
fix(telemetry): stop logging beacon requests as activities
2026-08-25 22:26:54 -07:00
kyle
1cc75591fa
refactor(admin): align admin ui with app design language
...
- dashboard: card grid replaced by status strip + nav-tile section + list
- nav-tile promoted to shared component
- stat tiles and usage screen de-carded, sections divided like settings
- hub run tournament back to a list row
- telemetry link restored in tools list
2026-08-25 22:24:36 -07:00
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
4af4a65527
bug
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / i18n Catalog Check (push) Successful in 30s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m3s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m27s
2026-08-25 21:54:50 -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
kyle
778f0f7994
perf upgrade
2026-07-12 21:26:16 -07:00
kyle
b6085ff329
temp fix
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m24s
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 20:10:56 -07:00
kyle
ec334bbed4
auth fix?
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) Failing after 2m36s
2026-07-11 13:11:45 -07:00
kyle
e67f6b073c
ready for regionals
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 44s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m46s
2026-03-07 01:22:21 -06:00
kyle
74d83da466
center
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 3m12s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 43s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 11s
2026-03-02 01:12:42 -06:00
kyle
299f32a2b7
more pwa
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m51s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 7s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 44s
2026-03-02 01:00:46 -06:00
kyle
fb4f50b851
pwa
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 3m41s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 44s
2026-03-02 00:49:18 -06:00
kyle
3e5ef04c9f
center text/whitespace prewrap desc
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m59s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 50s
2026-03-01 23:59:50 -06:00
kyle
c138442530
fix
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 3m0s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 45s
2026-03-01 21:46:59 -06:00
kyle
8f84dddc64
fix team avatars
CI/CD Pipeline / Build and Push App Docker Image (push) Failing after 2m39s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 16s
CI/CD Pipeline / Deploy to Kubernetes (push) Has been skipped
2026-03-01 20:59:31 -06:00
kyle
9571980898
fix team avatars
2026-03-01 20:20:24 -06:00
kyle
1ce8a6a982
fix team avatars
2026-03-01 20:10:06 -06:00
kyle
f0d8297f34
new badges
2026-03-01 19:58:18 -06:00
kyle
f49234702c
regionals on tournament profile
2026-03-01 19:49:46 -06:00
kyle
f6da7be404
tiebreakers
2026-03-01 19:43:29 -06:00
kyle
c7487e37f2
tiebreakers
2026-03-01 19:41:34 -06:00
kyle
873ca3e4c4
cross mix knockout seeds
2026-03-01 19:36:26 -06:00
kyle
c5b3ad50ca
fixed b2b
2026-03-01 18:04:45 -06:00
kyle
938418cec5
fixed b2b
2026-03-01 17:52:47 -06:00
kyle
5d6136a445
new badges
2026-03-01 17:04:06 -06:00
kyle
9a64f316b9
b2b
2026-03-01 16:30:49 -06:00
kyle
6199afc687
regionals
2026-03-01 16:21:27 -06:00
kyle
f83a7d69c8
groups init
2026-02-25 19:54:51 -06:00
kyle
2dd3e5b170
enrollment polish
2026-02-21 23:30:58 -06:00
kyle
b9e16e2b64
regionals enrollments
2026-02-21 23:12:21 -06:00
kyle
7f60b4d200
idk
2026-02-14 15:46:31 -06:00
kyle
6e9e014fcc
cookie and pwa stuff
2026-02-14 12:59:01 -06:00
kyle
236fcda671
session fixes
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m52s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 11s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 44s
2026-02-09 23:53:54 -06:00
kyle
9ed054e5d0
regionals on tournament form
2026-02-09 23:44:07 -06:00
kyle
63853f22de
regional teams
2026-02-09 23:36:04 -06:00
kyle
5dd41d8022
fix scroll bug
2026-02-09 22:20:00 -06:00
kyle
937758bd49
facehash avatars
2026-02-09 14:31:55 -06:00
kyle
f069ba3827
include supertokens api key
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m5s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 7s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 49s
2026-02-09 12:14:38 -06:00
kyle
70a032db20
more env stuff
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m18s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 7s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 41s
2026-02-09 12:07:45 -06:00
kyle
243fb094e1
env
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m19s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 7s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 44s
2026-02-09 01:03:30 -06:00
kyle
84202cdbe9
hopefully fix
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m16s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 6s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 41s
2026-02-09 00:46:36 -06:00
kyle
6370ebe48a
hopefully fix
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 1m15s
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 6s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 43s
2026-02-09 00:42:44 -06:00