v3.12.0 Changelog
Every feature, fix, and improvement.
GitHub v3.12.0 Latest April 8, 2026
โจFeatures4
- activity: add error diagnostic digest with copy-to-clipboard support94290a1
- activity: add stage-aware error UI for Discord launch flow and allow sidebar during gameplayc3e7891
- add settings to profile pagea9b2eb4
- web: streamline Discord Activity launch to skip header and land on main page2ddffd0
๐Bug Fixes2
- add optional chaining for strict array index access in discord-activity auth52bd851
- tts: set default tts voice to kokoro nicoleb9713c6
v3.11.0April 8, 2026
โจFeatures24
- animations: arc trajectory and landing bounce for card submission9d07617
- animations: enhanced FLIP overshoot, reveal flash, and whoosh SFXbddf7cc
- animations: hand rise/lower, zone glow, black card slide-in, judge pulsea0dc5b0
- app-shell: game menu landing page with atmospheric overlay71d9c3d
- app-shell: lobby browser game tile styling43179f1
- atmosphere: ambient dust motes and submission ripple effects7759724
- board: wire skip-player event up to page handler989500c
- celebrations: game win card sweep, crown decoration, and golden card display32f6d90
- celebrations: round win spotlight, screen shake, confetti, and card slide-off93dcbc1
- celebrations: score fly +1 badge arcing to winner seatca0cb70
- deck: add pulsing draw indicator on white deck in manual draw modea06ecee
- game: propagate card pack name through black card pipeline491a7e2
- header: add back button to desktop nav on non-home, non-game pagesf252b4e
- home: redesign user menu, add hover effects, and add footer legal links2101986
- index: add avatarUrl, handleLogout, handleLoginWithDiscord, isAdmin, isDiscordActivity helpers96a68fa
- index: gate admin button with isAdmin, add Hub for Discord Activity mode6705776
- index: replace raw buttons with UButton AppHeader style075aab9
- index: replace top-right corner with avatar UDropdownMenu00c0277
- manual-draw: add engine logic and interactive deck UI1ade22b
- seats: add host skip button to player seat arc and overflow4d63f16
- settings: add manual draw toggle to game settings UId67961d
- settings: add manualDraw setting to types and mutations468d2fa
- sfx: wire placeholder sound effects to phase transitions8396254
- table: bubble skip-player event and pass isHost to seats34f3e86
๐Bug Fixes9
- game: add z-index to GameHeader and clean up BlackCardDeck offsets0fde8b7
- game: fix manual draw indicator visibility and allow drawing in any phase0f54ee8
- index: remove redundant ClientOnly wrapper around admin button8e0b1e7
- index: restore footer flow layout, add accessible alt to avatar img6aaf221
- layout: add AppHeader to default layout8336a0a
- layout: replace AppHeader with standalone back button in default layoutb5c8b33
- nav: move UModal inside root div, show back button on all screen sizesd7f9340
- responsive: scrolling background column count at all viewports5f1ef58
- seats: add aria-labels, fix overflow button, add missing i18n keys for skip-player9dc0374
โป๏ธRefactors2
- background: replace GSAP animation with CSS-only infinite scroll803c455
- tts: export TTSProviderType and adjust Kokoro Nicole speedda605b9
v3.10.0April 7, 2026
โจFeatures45
- activity: add resume game button, error display, and existing lobby redirect in hub1eeda2f
- admin: add decoration delete with improved edit modal layout79181e0
- create lobby immediately on button click, remove dialogaa2a32e
- create lobby immediately on button click, skip formbd352d9
- decorations: add @lottiefiles/dotlottie-web dependencyad03613
- decorations: add AvatarLottie canvas-based animation renderer119f0a3
- decorations: add imageFormat field to data model and Appwrite schema7da06c0
- decorations: add lottie/dotlottie upload validation and format detection5b9f853
- decorations: add playback speed control for Lottie attachmentsb54f532
- decorations: dispatch lottie formats to AvatarLottie component97fc2dd
- decorations: pipe imageFormat through all API endpointse725bf3
- decorations: support lottie upload and preview in admin DecorationManager1b41ffa
- discord: add speakingDiscordIds ref and subscribeToSpeaking7912556
- discord: show speaking dot on player list avatars in game4227389
- discord: show speaking ring on game table seat avatarsce4e86f
- discord: show speaking ring on VC member avatars in huba9a262b
- discord: subscribe to speaking events during activity launch52e19a4
- expose maxPick and password from Y.Doc settings reactive bindingae9661f
- i18n: add nav.hub key to all locale files4e3e05e
- layout: add AppHeader to activity layout with header-height marginb808636
- lobby: include expansion packs in default card selectionb53d875
- lobby: replace status icon with interactive start game button1dcd31a
- mobile: add read-aloud speak button to revealed judge cards9c1e021
- mobile: wire readingAloud and read-aloud event through MobileGameLayout to MobileCardList344d117
- nav: activity-aware nav items and hide join/create in Discord activityf110e17
- read lobbyName from lobby doc instead of gameSettings join1b1dd47
- remove Appwrite gameSettings fallback from game start route1ed2b5b
- remove Appwrite settings Realtime from WaitingRoom, use Y.Doc reactive settingsf16ba46
- remove documentId from game start request bodye06cdff
- remove useGameSettings from game page, read settings from Y.Doc reactive5c70e72
- rewrite ChatBox to use Y.Array chat โ remove Appwrite gamechat dependency868566a
- save game settings to Y.Doc via mutations instead of Appwrite7108300
- tts: add 1000-char input limit to kokoro-speak endpointfb0af32
- tts: add Google Neural2 AU and UK voices, dynamic language codee022bf4
- tts: add Google Neural2 provider constants and getProviderFromVoiceId5ae14ef
- tts: add Google Neural2 server endpointba779e8
- tts: add Google Neural2 voices to admin VoiceSwitcher9f5806e
- tts: add google provider routing in useSpeech8afb110
- tts: add google to TTSProvider type in GameBoard1b0680b
- tts: add kokoro provider to useSpeechaac5398
- tts: add kokoro to GameBoard TTSProvider typefecc87e
- tts: add Kokoro voice constants and provider detection3bb65c3
- tts: add kokoro-speak server endpointd289216
- tts: redesign VoiceSwitcher with submenus, add Kokoro voices for all usersf0cd247
- write lobbyName to lobby doc, remove gameSettings/chat Appwrite calls from useLobbybd5a1bc
๐Bug Fixes35
- activity: allow free navigation in Discord Activity, only redirect /activity init when authed8d9cbb8
- activity: preserve Discord query params during init redirect3ec840c
- activity: redirect to init flow when Discord Activity opens on non-activity pageaf199f9
- activity: remove nav bar push-down and double margin in activity layout6f50fbb
- activity: use h-screen on loading splash to prevent overflow2c2759d
- add lobbyName to Lobby type, remove as any cast in game/index.vue303b0e8
- auth: serve animated GIF format for animated Discord avatars811e3b0
- bot: prune orphan bot docs using client Y.Doc statefcfdfdc
- cards: filter by active field instead of disabled for card packse3ca1b2
- config: set user decorations collection ID in wrangler50fdae0
- decorations: correct imageFormat type and fix lottie thumbnail sizing91a03a5
- decorations: fix AvatarLottie canvas sizing, cleanup race, and prop reactivity175a61d
- decorations: handle x-zip-compressed MIME type and guard non-object JSON83cacdf
- decorations: improve Lottie animation rendering and sizinga34ca71
- decorations: prevent Tailwind preflight from clamping scaled attachment images3005add
- decorations: restore amber-400 rarity color changed by formatter910cb69
- discord-sdk: replace broken openInviteDialog with shareLink, fix setActivity clear call3d6a06e
- discord: add explicit imports for getDiscordIdFromPlayer in game components6c39563
- discord: add rpc.voice.read scope for speaking event subscriptions482db6f
- discord: provide non-empty message for shareLink invite5fb6399
- game-engine: support chunked cardTexts for large card sets70acdd6
- game: clean up game chat and settings on lobby teardown965445c
- game: prevent duplicate game settings initialization on sidebar layoutab789e7
- game: use WebSocket-only connection to eliminate SSE fallback 404 errors342fe2c
- hub: fix indentation of centered wrapper, add missing blank line in CSSfc733db
- mobile: constrain player strip to viewport width to prevent horizontal page overflowa12277f
- pwa: exclude HTML from SW precache to prevent stale navigationb8fad97
- pwa: remove navigateFallback to fix refresh redirect on SSR routesd4ec522
- remove .value from currentUserId in ChatBox template (auto-unwrapped in Vue templates0865c34
- resolve TypeScript errors after gameChat/gameSettings migrationbe8df2a
- security: address CodeQL and Dependabot vulnerability alertscf3fd87
- tts: remove auth requirement from kokoro-speak endpointd74b389
- tts: resolve google voice name dynamically, add server allowlist7d63b6f
- tts: use kokoroVoiceIdSet, remove dead currentVoice, widen dropdownd35e056
- useConfirm: use useState for SSR-safe promise resolver4134c8a
โป๏ธRefactors2
- discord: extract getDiscordIdFromPlayer to shared util, fix speaking ring priority3e5f169
- tts: use TTS_PROVIDERS constant for kokoro fallback voice2a76132
v3.9.1April 5, 2026
๐Bug Fixes1
- api: correct userDecorations collection ID casing993d942
v3.9.0April 5, 2026
โจFeatures28
- admin: add dedicated /admin/lobbies page9eb81b7
- admin: add mergeLobbies utility with tests for unified lobby monitora9c0231
- admin: enhance status endpoint with server-side Teleportal+Appwrite mergee837eff
- admin: replace inline lobby monitor with link card to /admin/lobbiesd036bd6
- admin: rewrite LobbyMonitor as unified single-endpoint component60e53cd
- decorations: add admin catalog update APId8389c3
- decorations: add admin decorations page with catalog table, edit modal, and grant/revoke69fa70b
- decorations: add admin grant, revoke, and list APIs3dd9955
- decorations: add admin sync API to register decorations in DB0221816
- decorations: add Appwrite collection, API routes, and useDecorations composable95547ef
- decorations: add AvatarAttachment, upload routes, and decoration utilitiesa2364a7
- decorations: add AvatarDecoration wrapper component4539bca
- decorations: add category field to admin decoration manager43bee57
- decorations: add category field to schema, types, and server routesd27eefe
- decorations: add decoration picker to profile pagef19703a
- decorations: add Discord Ed25519 signature verification utility28e24f3
- decorations: add Discord webhook endpoint for entitlement fulfillment52feffb
- decorations: add display utility for rarity pips, colors, and category iconsaa3e58f
- decorations: add Founder's Ring decoration component3896d18
- decorations: add public catalog API endpoint4bf56a7
- decorations: add Store & Cosmetics section to admin dashboard8fc83af
- decorations: add types, registry, and activeDecoration fields3fee419
- decorations: allow equipping freeForAll decorations without ownership row352063b
- decorations: rarity pip stack + category icons, remove equipped badge, 3-line description4fd026e
- decorations: rewrite useDecorations to fetch catalog from DB with freeForAll and purchase supportc9d1b2c
- decorations: sync activeDecoration through Y.Doc and lobby join flow4343fbc
- decorations: update profile page with catalog descriptions and purchase buttons0af50cd
- decorations: wrap all avatar sites with AvatarDecoration4c625fe
๐Bug Fixes19
- admin: add error handling to unified status endpointd67e9f5
- admin: address review feedback - import shared type, fix partial cleanup, add tab visibility pause819b007
- admin: correct settingsMap type to Map<string, string | null>fc410a7
- admin: improve error extraction in LobbyMonitor notifications940ecd9
- api: correct Teleportal GC HTTP methods and add error handling1f688dc
- auth: use server-side sessions for Discord Activity iframe auth07e15cf
- decorations: add fetch error display, clear grant fields after action, fix USelectMenu value-key990fd8b
- decorations: add id alias, fix startPurchase SDK call, add enabled to catalog projection2f8415d
- decorations: add input validation to sync, Query.limit(1) to grant/revoke2dfa6d6
- decorations: add row click handler to open edit modalc4c3dcb
- decorations: bridge allDecorations to not spread slimmed registry18520fe
- decorations: correct Discord webhook event type, add OAuth user lookup, add header validation7a5d7a4
- decorations: remove redundant import, add aria-hidden to decorative corner icons380048c
- decorations: rename decorations index.get to list.get for Nitro compatibility54e5be5
- decorations: restore appwrite.json defaults, add category to sync route084b94d
- decorations: show category icon in admin modal previewb15426b
- discord: preserve query params when redirecting to Activity page4aa74a0
- discord: use /appwrite proxy prefix to avoid colliding with app API routesaf7453d
- lobby: self-heal orphaned player docs and clean up on teardowne54b675
โป๏ธRefactors2
- decorations: replace fixed size configs with dynamic ResizeObserver sizingb865152
- decorations: split types, slim registry, add catalog config60dad5f
v3.8.0April 3, 2026
โจFeatures8
- discord: add Discord Activity lobby flow with instance-based lobby matchingfbe0468
- discord: add pure mapping function for rich presence activityed15556
- discord: add rpc.activities.write scope for rich presencefb6cdf7
- discord: add useDiscordPresence composable with reactive watch8e3f596
- discord: wire up rich presence in game pagefad8dcb
- mobile: add mobile game layout with phase-driven UXd32e658
- mobile: add player strip with scores and replace status bar dots with phase labelf899463
- mobile: merge winner screens into unified view and add card flip SFX5b1c179
๐Bug Fixes8
- admin: wrap admin page in ClientOnly for SSR compatibility8018475
- ci: pass Discord client ID to build step90ce14e
- discord: align client ID env var with NUXT_PUBLIC_ conventiona7b363f
- discord: fall back to consent dialog when silent auth fails in DMs580e497
- discord: patch URL mappings to proxy Appwrite requests through Discord CSP7a41294
- discord: redirect Activity iframe to /activity and skip eager session fetch2219edc
- game: add null guard for lobby ID in ensureGameSettings5cae13b
- labs: add auth headers to submission delete requesta11ebbe
โป๏ธRefactors3
- discord: type-narrow phase and export DiscordActivity interfacec9414aa
- ui: migrate ConfirmDialog to Nuxt UI v4 UModal slots API9b7b93d
- ui: simplify AppHeader layout and move blur to nav buttonsd8c7d0c
v3.7.0April 2, 2026
โจFeatures2
- admin: replace native confirm/fetch with modal dialog and server proxy for Discord Activity98664bb
- legal: add Terms of Service and Privacy Policy as dedicated pagesbba29ff
๐Bug Fixes2
- deps: add pnpm overrides to resolve 22 dependabot security alerts30afb0b
- discord: add debug logging to SDK close() for troubleshootinga44b3b6
v3.6.0April 2, 2026
โจFeatures11
- admin: move submission deletion to server API route and pin vited8fd0fd
- Discord Activity (Embedded App) integration3f035ed
- discord-activity: add activity entry page with auto-lobby creation7c477b0
- discord-activity: add CSP frame-ancestors for Discord iframe6f2b553
- discord-activity: add minimal activity layout for Discord iframe9a6df5e
- discord-activity: add server auth bridge (Discord code โ Appwrite sessionc9f32a0
- discord-activity: add useDiscordSDK composable3e00fd9
- discord-activity: dynamic layout switching and Activity-mode guards076170e
- discord-activity: install embedded app SDK and add confige22592f
- discord-activity: redirect Discord iframe from / to /activity054b930
- discord: improve activity UX โ auth-only splash, close button, no auto-lobbya7d459a
๐Bug Fixes6
- discord-activity: handle retry after auth, revert aggressive session guard271cd17
- discord-activity: skip auto session fetch in Activity mode to prevent 401sc4b2efe
- discord-activity: SSR-safe dynamic import, scoped CSP, clean configc3edbd5
- game: update GameSettings permissions on host transferfac3dcf
- license: change license from CC BY-SA 4.0 to CC BY-NC-SA 4.0352b539
- security: patch Dependabot alerts โ bump dompurify, add pnpm overridesf70fe51
v3.5.0March 5, 2026
โจFeatures8
- admin: add admin API endpoints for lobby deletion and status updates2d89db7
- admin: add web-worker-powered duplicate card scanner with live progress1934963
- admin: fix card upload pipeline with auth headers, progress bar, and live log terminalda979fb
- admin: overhaul admin card manager into routed multi-page layout5acaba4
- auth: always sync Discord username and avatar on session load6673317
- changelog: redesign changelog page with split layout and categorized timelineacdc837
- game: fix race conditions in round advancement and card dealing8386760
- speech: add stop() to TTS composables and front-page speak toggle68f1afd
๐Bug Fixes1
- game: fix host demotion not clearing isHost flag on prior host87da09c
v3.4.0March 2, 2026
โจFeatures7
- add About page with how-to-play guide and FAQ55d2bb4
- add Changelog page with GitHub releases via MDC02f690b
- add cross-environment UUID v4 utility3de461b
- game: add draw-cards API and async deck replenishment33c5bd2
- game: add host reset-to-lobby with confirmation modal3da85e4
- game: add real-time lobby browser with live game infoa4d04b3
- i18n: add reset-game and about nav translation keys8b07d2a
๐Bug Fixes1
- game: pass card-pack prop to WhiteCard for report popoverb979f28
โป๏ธRefactors3
- admin: replace tabs with responsive card grid layoutc1a4436
- extract shared lobby actions composable and simplify AppHeadere3af1ac
- game: fix spectator filtering in lobby mutations and chat33e8dc6
v3.3.1March 1, 2026
๐Bug Fixes1
- WhiteCard: Add correct card type0b31702
v3.3.0March 1, 2026
โจFeatures5
- game: add confetti blast when your card wins3c596cd
- game: add maxPick setting UI with pick selector and hintsb76226d
- game: add WaitingHero component for lobby display92e6089
- game: enhance Y.Doc engine with card dealing, settings sync, and spectator conversion99dc9af
- i18n: add game settings and lobby i18n keys for all localesb79aa39
โป๏ธRefactors1
- game: migrate game actions from server API to Y.Doc engine5a65709
v3.2.0March 1, 2026
โจFeatures3
- admin: update dashboard for yjs lobby monitoringcbf527b
- api: add teleportal yjs server for realtime game lobbies326a8e5
- web: update game ui and endpoints to use yjs state structuresc39d7ce
๐Bug Fixes4
- api: force node-fetch-native-with-agent to workerd-compatible aliases1ebc1dc
- api: shim json-bigint to fix instanceof BigNumber crash on CF Workersed175e4
- api: use local fetch shim to bypass node-fetch-native-with-agent on workerd28b15c4
- api: use unenv aliases for node-fetch-native-with-agent workerd compatibilityc7ee1b8
โป๏ธRefactors1
- web: decompose useLobby into reactive yjs composablese5d8f24
v3.1.0February 26, 2026
โจFeatures2
- web: add dynamic browser tab title with phase and round infodf98a3e
- web: add dynamic favicon with round badge and status indicatorsb366cdf
๐Bug Fixes1
- api: use requireAuth and admin SDK in assertAdmin utility0358ddc
โป๏ธRefactors1
- web: replace Rybbit analytics plugin with no-op stub6c319b7
v3.0.0 โ Breaking February 26, 2026
โ Breaking Changes1
- nuxt-appwrite module is no longer used as a dependency
โป๏ธRefactors1
- inline nuxt-appwrite module for Cloudflare Workers compatibilityd54a625
v2.7.1February 26, 2026
๐Bug Fixes1
- nitro: add Cloudflare Workers export conditions for node-appwrite75870a6
โกPerformance1
- cursor: rewrite custom cursor with dual-strategy architecturea0c3485
v2.7.0February 26, 2026
โจFeatures1
- seo: add dynamic OG metadata for shared lobby linksc3ef1c6
๐Bug Fixes1
- build: remove node-appwrite external to fix Cloudflare Workers 500s13a59a9
v2.6.3February 26, 2026
๐Bug Fixes1
- ci: add github-pages environment to deploy jobf633248
v2.6.2February 26, 2026
๐Bug Fixes1
- ci: switch deploy from Pages to Workers with wrangler.toml466c579
v2.6.1February 26, 2026
๐Bug Fixes1
- deps: update nuxt-appwrite to pre-built dist commit7b81094
v2.6.0February 26, 2026
โจFeatures5
- game: add dynamic card shadows and improved flip animations4cff990
- game: add player rankings to table seats6869b64
- game: add TTS read-aloud broadcast with resilient round advancement1522afa
- game: add unique bot names and DiceBear avatarseebacd0
- game: scale hand cards smaller at rest and enlarge on hoverb180d04
๐Bug Fixes4
- auth: persist Discord avatar URL and improve refresh reliability49df350
- game: harden submission endpoints with retry and version checks82d4a52
- home: correct homepage markupb243d61
- pwa: service worker redirect fixddcb97e
v2.5.0February 25, 2026
โจFeatures7
- game: add GSAP animations to round counter, phase label, and seat interactions891f2a3
- game: add GSAP entrance animations to winner celebration with confetti127e023
- game: add GSAP smooth custom cursor with SVG images9ee84b7
- game: add judge indicator banner and dynamic table paddinga2f8fee
- game: give bots unique names and DiceBear avatars6e2c13f
- game: redesign GameOver screen with full leaderboard and stats18bf9d6
- pwa: add install banner to install as pwac6334a4
๐Bug Fixes5
- game: defer bot cleanup until lobby resets to waiting phase9eb9b29
- game: harden audio loader with content-type checks and error resiliencebaeb6eb
- game: host resets lobby on auto-return and manual continuea0c3fed
- game: improve WhiteCard error handling for catch clause typingd6d8351
- server: correct Appwrite SDK method signatures and add lobbyId validation8db9802
v2.4.1February 24, 2026
๐Bug Fixes9
- admin: update function to properly fetch admin sessionf141dad
- api: restore secure session auth on bot endpoints7075a21
- api: rewrite requireAuth to use admin-SDK session verificationf0a053c
- api: use node-appwrite import and add error handlingf14b2bf
- build: externalize node-appwrite from Nitro bundle085c39a
- build: removed redundant packages for build succession3e29493
- client: send auth headers on all authenticated API calls8192af9
- game: restore bot UI updates and Discord avatar after auth migrationfa85459
- realtime: replace TablesDB .rows channels with standard .documents format492d18b
v2.4.0February 24, 2026
โจFeatures15
- admin: enrich reports with card text and add dismiss/card-action endpointsade5420
- admin: move setup page into admin section with access guardde09acd
- auth: add Discord avatar persistence and streamline login flowf587eec
- bot: add staggered card play and simulated thinking delaysf616961
- chat: implement message pagination and server-side system events06a4d39
- game: add win-round and win-game sound effects54d9dc8
- game: allow host to skip unresponsive judgesbe227ee
- game: decompose GameTable into focused sub-components0c7392e
- game: improve user hand card interaction with earlier snapshottingfcf460e
- game: redesign game UI โ lobby, waiting room, player list, sidebar, and cardsb61497e
- hand: enhance mobile hand interactions and drag threshold gestures8a0dd5c
- i18n: add lobby players-needed short label across all locales3f64717
- labs: add Labs page with card submission browsing and submission formd19a7dc
- table: overhaul card animations and layout with GSAP physics515b3a0
- ui: overhaul global UI โ header, footer, homepage, profile, and error pages192cbe6
๐Bug Fixes7
- api: harden api endpoints and improve team fetching using labels5a6196b
- bot: bot orchestrator40abb5a
- bots: resolve bots not playing cards after watcher refactor342c936
- game: delay game-over screen to allow winning card celebration to complete5a7dc5d
- game: hide placeholder card animation snap to correct drop coordinateseec86d6
- lobby: auto-delete lobby when last human player leavesa380a0e
- security: migrate bot & reveal-card auth from body-based to session-based69934bb
โป๏ธRefactors2
- client: migrate client-side composables and utils to TablesDB SDK809e609
- server: migrate all server-side API calls to Appwrite TablesDB SDK3f507f5
v2.3.0February 22, 2026
โจFeatures1
- game: add card play mode preferences with click, instant, and gesture submission6daa365
๐Bug Fixes4
- auth: improve Discord OAuth error logging with status codes and request host522d97e
- build: enable wasm compatibility2a1f018
- og-image: migrate from custom Nitro endpoint to native nuxt-og-image componentf07ee51
- web: remove nuxt-og-image to resolve Cloudflare Pages build error4b25a25
v2.2.0February 21, 2026
โจFeatures6
- api: add server-side chat endpoints with rate limiting029fdc2
- api: add server-side player verification utility38552d4
- api: add synchronized card reveal endpoint for judging phasebcce143
- game: add bot player system with host-controlled AI56ac6b0
- game: add centralized SFX registry and card fly-coordinate composable90cd65e
- game: redesign game board with immersive table layout and physics-based card animationsb9481fe
๐Bug Fixes1
- api: simplify Discord OAuth to use SDK method directlyb39b0a7
โป๏ธRefactors1
- api: migrate game endpoints to body-based userId verification042b1a3
v2.1.2February 20, 2026
๐Bug Fixes1
- auth: bypass node-appwrite fetch to prevent invalid redirect error on Netlify48241f8
v2.1.1February 20, 2026
๐Bug Fixes2
- auth: dynamically compute base url for oauth success redirect881215e
- web: comment out ShareImage component on home pagee2cabac
v2.1.0February 20, 2026
โจFeatures2
- api: migrate spectator conversion to secure server endpoint900148c
- api: secure game endpoints with session and lobby validationb3ac7e8
๐Bug Fixes1
- oauth: correct base_url environment variable priority and ensure httpsa93adfa
โป๏ธRefactors1
- game: remove unused playedCards and centralize round timerb924881
v2.0.1February 20, 2026
๐Bug Fixes1
- replace local nuxt-appwrite file reference with GitHub source155d551