Commit Graph

7043 Commits

Author SHA1 Message Date
Kalle
21be23258d Update plan 2026-08-17 07:43:36 +03:00
Kalle
280a85b630 Update plan 2026-08-17 07:40:05 +03:00
Kalle
8cbd7f233e Use createContext 2026-08-17 07:39:58 +03:00
Kalle
b552c10287 Get rid of loader: true 2026-08-17 07:34:58 +03:00
Kalle
8d007f4272 Native popovers and dialogs for layout surfaces
- fix skipAnimation never updating in MobileNav (previousPanel was not state)
- declare App.PageData and drop the page.data casts
- migrate Menu, Select and TopNavMenus to popover=auto with CSS anchor
  positioning; delete manual positioning, backdrops and Escape handling
- share Popover's scroll-clip auto-close via closePopoverOnScrollClip
- use <dialog closedby=any> for the tablet sidenav modal and mobile panels;
  tab bar stays visible and switchable with no animation
- add IsMounted helper and use it for the hydrated checks
2026-08-16 22:24:44 +03:00
Kalle
c2b47e3422 prerender 2026-08-16 21:54:59 +03:00
Kalle
c3e26dceae Use MediaQuery 2026-08-16 21:39:36 +03:00
Kalle
58878748a2 Better popover 2026-08-16 21:27:58 +03:00
Kalle
4e731b0d8a Remote function for sidebar 2026-08-16 21:09:57 +03:00
Kalle
74c5059ccf Fix mutation 2026-08-16 21:02:49 +03:00
Kalle
35984ccc2e Migrate nprogress from effect 2026-08-16 20:48:34 +03:00
Kalle
f85e1bd6cd Get rid of globals 2026-08-16 20:32:55 +03:00
Kalle
001f89690b Delay nprogress 2026-08-16 20:06:01 +03:00
Kalle
c072493928 Skills 2026-08-16 19:23:30 +03:00
Kalle
8da2b66ac6 Diff leaderboard 2026-08-16 19:14:22 +03:00
Kalle
55957f7aca Fix hydration error 2026-08-16 17:47:19 +03:00
Kalle
af901c094e Fix effect infinite loop 2026-08-16 17:42:29 +03:00
Kalle
3796315138 Fix body warning 2026-08-16 17:25:38 +03:00
Kalle
535781afd3 Fix theme warning 2026-08-16 17:20:16 +03:00
Kalle
34bb01a34b Fix theme inject warning 2026-08-16 17:11:50 +03:00
Kalle
d8733fd9c1 Add dev:prod command to svelte 2026-08-16 17:05:36 +03:00
Kalle
acdfbc5d4d Exclude the Svelte workspaces from Biome; formatting pass
apps/web and packages/components get the Prettier+ESLint stack later per
svelte-big-bang.md; Biome stays scoped to the React app and tooling.
2026-08-16 12:11:21 +03:00
Kalle
8f3caa4683 App shell: sidenav/header/footer layout, sidebar data path, notifications bell
- Layout.svelte composes SideNav (events/friends/streams), MobileNav, header (logo, breadcrumbs, collapse buttons, TopNavMenus, TopRightButtons, nprogress anchor) and Footer (patrons via remote query)
- sidebar server data ported: resolveSidebarData + StreamRanking + friend/scrim/tournament/stream repositories, wired through the root layout load with the signed sidenav cookie
- notifications: repository + getNotifications remote query, bell popover with unseen dot, notification link/icon mapping ported
- theme: ThemeHead with color-scheme meta + no-flash script, byte-compatible theme cookie in layout data
- PWA head links extracted from the React root; git commit define; nprogress driven by navigating state
- differ head diff made semantic (title/meta/SEO-links as a sorted set) since framework asset links legitimately differ
2026-08-16 12:09:57 +03:00
Kalle
35ffc136be Phase 2 harness wiring: differ --right-app web, e2e target app, dev-controls, cookbook
- differ can serve apps/web on the right side (--right-app web); impersonation no longer follows app-specific redirects
- e2e: E2E_TARGET_APP=web spawns apps/web servers per worker against the shared dbs; leaderboards spec + page object added; expectRouterIdle exported
- apps/web dev-controls endpoints: /auth/impersonate(+stop), /theme (404-redirect GET parity), /refresh-caches, /end-season, /run-routine, /sidenav
- HydrationTestIndicator implements the hydrated/router-idle contract (counts in-flight remote fetches)
- codemods: route-map (routes.ts -> SvelteKit route scaffolds, manifest-aware, idempotent) and remote-scaffold (loader->query, _action branches->commands)
- MIGRATION.md cookbook seeded with the golden read-path pattern and slice learnings; manifest: leaderboards migrated
2026-08-16 11:59:13 +03:00
Kalle
2aaf937ff9 Leaderboards page + Svelte UI kit foundations
- packages/components (@sendou/components): Button, ChipRadio(+Group), Tabs set (handrolled ARIA tabs), Menu, Popover, Select stack (search, sections, keyboard nav) — native popover API instead of react-aria
- app components: Main, Image/WeaponImage/ModeImage/TierImage, Avatar (canvas identicon port), Flag, Placement, InfoPopover, MetaTags, WeaponSelect, SeasonSelect
- leaderboards feature UI: Leaderboards + PlayersTable/TeamTable/XPTable/OwnEntryPeek/TeamStaffMenu/TopTenPlayer, scoped styles ported from top-search.module.css
- root layout serializes the lean user; hasRole() reads it from page.data
- skip/unskip commands go single-flight via .updates() on the client-held query instance
- SSR verified against the differ seed database
2026-08-16 11:48:15 +03:00
Kalle
2c67745715 Port search-params module to valibot for apps/web
- pure core (define/SP.param/SP.json/SP.custom, decode caching, lz~ transport compression) with valibot schema introspection replacing zod class checks
- SP.custom takes an explicit ParamCodec instead of a zod codec
- shouldRevalidate dropped: remote queries key on decoded args, replacing route-level revalidation
- searchParamsState .svelte.ts state layer over page.url + goto (shallow writes for loader: false params)
- core test suite and round-trip test utils ported; leaderboards definition + test
2026-08-16 11:33:59 +03:00
Kalle
a9c18e0dda Scaffold apps/web SvelteKit 3 app with leaderboards server slice
- SvelteKit 3 (RC, pinned) + Svelte 5 + Vite 8 + adapter-node + TS 6
- paraglide pipeline: combine-locales from shared web-react locales, English-only dev settings, build-with-all-locales
- db layer port: node:sqlite dialect, json column handling, trimmed DB schema (leaderboards slice tables)
- cookie-compatible auth session decode (React Router HMAC format) resolved into event.locals via hooks
- leaderboards repository/core ported verbatim; loader converted to a remote query(), action split into skipTeam/unskipTeam commands with server-driven refresh
- valibot schemas for remote function validation
2026-08-16 11:30:13 +03:00
Kalle
d3e1f22135 Update doc 2026-08-16 11:06:46 +03:00
Kalle
e3e071b6a5 Differ 2026-08-16 11:05:12 +03:00
Kalle
c0fdb922fd Valibot to plan 2026-08-16 10:07:54 +03:00
Kalle
c7ff35fabe Migrate invariant 2026-08-16 10:03:37 +03:00
Kalle
935e357842 Extract @sendou/utils, @sendou/build-analyzer, @sendou/map-list-generator and @sendou/scanner-core workspace packages 2026-08-16 10:01:27 +03:00
Kalle
fdb97b04b2 Single flight mutations 2026-08-16 09:42:18 +03:00
Kalle
c0b339f740 Add migration manifest and codemod tooling skeleton 2026-08-16 09:32:04 +03:00
Kalle
2c73764a17 Extract @sendou/in-game-lists and @sendou/tournament-engine workspace packages 2026-08-16 09:29:49 +03:00
Kalle
bbc8ea57af Move app to apps/web-react in pnpm workspace layout 2026-08-16 09:20:33 +03:00
Kalle
7e365ccfcf Doc 2026-08-16 09:09:25 +03:00
Kalle
319f3d8cf3 LFG page serverside paginated 2026-08-16 09:07:13 +03:00
Kalle
581667e251 Split chunks
Some checks failed
E2E Tests / e2e (push) Has been cancelled
Tests and checks on push / run-checks-and-tests (push) Has been cancelled
Updates translation progress / update-translation-progress-issue (push) Has been cancelled
2026-08-15 22:48:50 +03:00
Kalle
c382b60cb2 Remove Sentry 2026-08-15 21:39:51 +03:00
Kalle
64dcfb34b0 Cache user cards to id matches mid page and lfg page 2026-08-15 16:57:05 +03:00
Kalle
c5f882a040 Lazy load trophies 2026-08-15 16:57:05 +03:00
Kalle
d894b51e36 Inline the initial i18n namespaces into the SSR HTML 2026-08-15 16:57:05 +03:00
Kalle
37930ee938 Tournament run graphic fixes 2026-08-15 16:57:05 +03:00
Kalle
3f7f5c301b Fix match roster tab overflow 2026-08-15 16:57:05 +03:00
Kalle
f96504d592 SendouQ don't show invited by text if solo group 2026-08-15 16:57:05 +03:00
Kalle
a4fb0c371a Skip push notifications if already seen
Closes #3339
2026-08-15 16:38:46 +03:00
Kalle
10afa7836f Make ingested matches use report timestamp + batch 2026-08-15 16:15:48 +03:00
Kalle
ec631c735a Improve xsearch select 2026-08-15 14:20:03 +03:00
Kalle
1de5de39b8 Improve leaderboards page selects 2026-08-15 13:17:37 +03:00