You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pages/battle/Play.tsx — extracted to pages/battle/play/: usePlayConfig.ts, constants.ts, utils.ts, and components/{ModeSelector,RulesPanel,SkillsPicker,BattleRoyalePanel,ClanWarPanel,InvitePanel,...}.tsx; shell Play.tsx is now thin (~110 lines).
Deferred to P2: move clan-wars / invite api.post from InvitePanel into services/battles.ts (currently still direct api calls in the panel).
pages/author/AuthorNew.tsx — extracted to pages/author/new/: useAuthorForm.ts, utils.ts (validation + YAML serialization), and components/{MetaSection,StarterSection,TestsSection,HintsSection,SolutionSection,...}.tsx; shell AuthorNew.tsx is now thin (~112 lines).
Imported from
client/TODO.md.Kanban
P1 — Split mega page components (partial)
pages/battle/Play.tsx— extracted topages/battle/play/:usePlayConfig.ts,constants.ts,utils.ts, andcomponents/{ModeSelector,RulesPanel,SkillsPicker,BattleRoyalePanel,ClanWarPanel,InvitePanel,...}.tsx; shellPlay.tsxis now thin (~110 lines).api.postfromInvitePanelintoservices/battles.ts(currently still directapicalls in the panel).pages/author/AuthorNew.tsx— extracted topages/author/new/:useAuthorForm.ts,utils.ts(validation + YAML serialization), andcomponents/{MetaSection,StarterSection,TestsSection,HintsSection,SolutionSection,...}.tsx; shellAuthorNew.tsxis now thin (~112 lines).pages/author/new/useAuthorForm.tspages/author/new/utils.ts(validation + YAML serialization)pages/author/new/components/{MetaSection,StarterSection,TestsSection,HintsSection,SolutionSection}.tsxpages/dashboard/Dashboard.tsx(~780 lines after partial split; target <~400 lines)Heatmap,MatchRow,NewsRow,StatTile,StatCard,QuickAction,ModeBreakdown→pages/dashboard/components/constants.ts,utils.ts(dashboard-specific helpers/constants)Dashboard.tsxfurther so the shell is <~400 lines (move remaining inline layout/helpers if any)HARD_CODED_NEWS_PREVIEWtopages/dashboard/mockNewsPreview.ts(or remove) — if still inlined, extract when trimming shellservices/github.ts+useGithubActivityapi.get(/users/...) withservices/users.tsP2 — Data layer consistency
services/battles.tsandservices/users.tsso pages never callaxios/apidirectlyservices/battles.tsandservices/users.tsuseBattleoff directapiapidirectlylib/queryKeys.ts:pages/dashboard/Dashboard.tsx,pages/practice/*, andhooks/useBattle.tsto usequeryKeysstore/slices/battleSlice.ts: server-shaped fields (battle,problem) now live in TanStack Query; Redux keeps battle UI flags (isSubmitting,isRunning,usedSkills,activeEffects)