Repository navigation
Add profiles, friends, discovery, creator hub, leagues, kit, wardrobe and admin tabs - #28
Merged
Merged
Conversation
The Hangout's character now waves exactly as on the character page: right arm out, forearm swinging from the elbow, the hand flicking, a smile with brows up and a small bounce. It used to raise the other arm straight up. Benches (as rotated boxes) and tree trunks (as circles) are solid. Your character stops at them and slides along or around them instead of walking through. In the rare pocket where two trunks overlap, it stays where it was.
Hangout: wave like the start.ng profile, and stop at benches and trees
…ages, cards, admin tabs and profiles Groundwork from the PRD so each owner builds in src/features/<feature>/ without editing shared files. - src/features/registry.ts: registerPage (inside the start.ng shell or full window, with URL params), registerCardPart (badges, stats, actions on game cards), registerAdminTab, registerProfileSection. - Feature flags from GET /features: useFeature / useFeatures, and FeatureGate (a page is a 404 while its flag is off). Everything a feature registers is hidden while it's off. - src/features/index.ts imports each feature with one line; src/features/_template shows every registration. - GameCard.tsx: the homepage and /games card, pulled out of App.tsx with the slots. Looks the same. - The admin page's own tabs are now registered tabs, so feature tabs sit among them.
Phase 0 scaffolding: feature folders, flags, and plug-in points for pages, cards, admin tabs and profiles
…QL, Dependabot and CodeRabbit config
…oderabbit ci: typecheck/build, worker tests, audit, dependency review, CodeQL, Dependabot, CodeRabbit
…, with a PR checklist and a CodeRabbit rule
…he first name, top 10 on a game's page in its own card, equal tournament cards
… invite link and follow the standings
…th, lime buttons, its own card, and a nav that doesn't crowd the logo on big phones
…k previews with the tournament's card
Contributing guide: stick to the styling of the app
Leaderboards: aligned columns, first names, top 10 on game pages
Tournaments with friends: start one, share the link, follow the standings
…or profile section stays in it call and send are exported from src/api.ts for features' own api.ts files. Each admin tab and profile section renders inside an error boundary, so one feature's crash shows a message instead of blanking the page.
registerYourGamePart shows a feature's part on each of the owner's games (a note from admins, a category picker, a checklist), inside an error boundary. Your games explains only start.ng's own hiding reasons; features explain theirs.
src/features/moderation (flag "moderation", permission moderation.words): try a name, add blocked or allowed words, remove admins' words, see names already on start.ng that fail the filter, and the built-in lists (folded away). The filter itself runs on the API.
…too good to be true The tab for score integrity (startng-be app/features/integrity). Shows the runs held back, with why and the player's earlier best, and lets an admin with scores.review clear a genuine run or keep a fake one out, with an optional note. Hidden until the integrity flag is on. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…embered trackPlay used a beacon, which can't carry the Authorization header, so the back end could never tell who opened a game (game opens, for ratings and continue playing). Signed-in players now send it with fetch and keepalive; visitors still use the beacon, and a saved sign-in that has expired is left off. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Shows, on a game that has runs held back by score integrity, how many are being checked and who they are from, in the same place as the other notices. Built on the Your games plug-in point from the H2 name filter PR. Hidden until the integrity flag is on. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
src/features/needs_fixing (flag "needs_fixing"): - Admin tab "Needs fixing": mark a game with a note for its owner (confirm dialog), see games their owners say are fixed first, then games waiting for the owner; put back, send back or change the note. - Your games: the owner's game shows what's wrong, how to fix it (push to the repo), and "tell us it's fixed" with an optional note. The owner's requests are fetched once for all their cards. The Reports tab only offers "Put back" for reported or flagged games. A game's hidden reason may now be any feature's reason (PublishedGame.hidden).
- Admin tab "Duplicates": look-alike pairs side by side (older first) with why they match, hide as a copy, delete, keep both, scan all games, and put hidden copies back. - Your games: "Hidden: looks like a copy" notice naming the original game. - Your games tags hidden games "Hidden" instead of "Live".
- start.ng/emails: signed-in players pick their email topics; visitors sign up and confirm by link; confirm and unsubscribe links from emails land here. - Admin tab "Email": subscribers by topic, the outbox by status, and "Send me a test email". - Emails section for your own profile (shown once profiles render sections).
Merge dev into feat/a2-spotlight (for #88)
A2 spotlight: the /spotlight page, homepage cards, the Game of the Week tag and the Spotlight tab
Merge dev into feat/s1-profiles (for #83)
M1 Kit: /connect passes the Kit's play-session pings on to the API (game_sessions)
M1 Kit docs: a game that loads the Kit and calls gameOver() meets the game standards
Merge dev into feat/m2-leagues-page (for #79)
Merge dev into feat/s1-profiles again (for #83)
S1 profiles and badges: the player page, /me, and names on boards link to it
…dev-2 Merge dev into feat/m2-leagues-page again (for #79)
feat(leagues): /league page and profile section (M2)
feat: give start.ng/creators its own link preview image
…nd items drawn on the 3D character A coin counter and Wardrobe/Shop links in the account menu, a Wardrobe tab in the profile, a wardrobe section on player pages, and an "You unlocked it! Wear it?" popup. three/items.ts draws all 21 wardrobe items (hats, extras, outfits, neck, back, aura) on the character from a style's `items`, in the profile, the previews, the shop's Try on and the Hangout. Everything outside src/features/wardrobe only shows while the `wardrobe` flag is on; characters with no items look exactly as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lours The six rarity colours (light and dark) move next to the other colours in src/styles.css, and the rarity label text uses --on-solid instead of hex values (CONTRIBUTING.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rarity contrast) - Profile: Look / Wardrobe are aria-pressed buttons in a group, not a half-built tab pattern. - useWorn takes the signed-in account and forgets the last player's items when it changes; the shop clears its coins and owned items on sign-out or a new account and ignores late answers for the old one. - useDialog: the Try on, Buy and unlock pop-ups take focus, close on Escape (not while buying), keep Tab inside and give focus back on closing. - The unlock popup shows a message when Wear it fails instead of an unhandled rejection. - Light-mode rarity colours darkened so the labels reach 4.5:1 with their text (dark mode already did). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Writing close.current during render could leave the Escape listener with a callback from a render React threw away (the purchase dialog's reads `busy`). A layout effect now updates it after commit, before any key can arrive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…it profile label, plurals
Wardrobe: coin counter, /wardrobe and /shop, the unlock popup and items on the 3D character
Polish from the end-to-end test: Challenge a friend on game pages, Edit profile label, plurals
Promote dev to main
Fix CodeQL alert before the upstream PR
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
Brings
startng-feup to date with the Cybertron-HNG fork'smain(119 commits). New since the last upstream sync:Players and progress
/me, names on boards link to it/wardrobeand/shop, the unlock popup, items on the 3D characterGames and discovery
/spotlightpage, homepage cards, Game of the Week tag/gamesfilters/leaguepage and a profile section/creatorswith its own link preview imagekit.js(back button, badge, end-of-round card, Share on X) and its docs; play-session pingsAdmin and owners
Fixes, CI and security
getShare: only known share kinds and well-formed ids are requestedChecks
Typecheck and build,Worker tests,malware-scan,Dependency auditand CodeQL pass.Dependency reviewfails only because the dependency graph isn't enabled on this repo; a maintainer has been asked to turn it on.