Files
sendou.ink/tooling/codemods
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
..

codemods

Idempotent, manifest-aware transforms for the React → Svelte migration (svelte-big-bang.md). All are re-runnable while the React app remains the source of truth.

Script Status Purpose
mono-split done (Phase 0) rewrites apps/web-react import specifiers to the extracted workspace packages (@sendou/in-game-lists, @sendou/tournament-engine, @sendou/utils, @sendou/build-analyzer, @sendou/map-list-generator, @sendou/scanner-core)
manifest done (Phase 0) generate merges features + routes into migration-manifest.json preserving recorded statuses; report prints progress totals
route-map planned (Phase 2+) routes.ts → SvelteKit route directories + URL-parity manifest
remote-scaffold planned (Phase 2+) loader files → query() scaffolds; action files → per-_action-branch form()/command() scaffolds
jsx-to-svelte planned (Phase 2+) the deterministic 80% of TSX → Svelte; everything unprovable becomes an @MIGRATE marker
css-inline planned (Phase 2+) inlines each component's .module.css into its <style> block

Run with pnpm --filter @sendou/codemods run <script> (plain Node 26, no build step).