Skip to content

Releases: LIN4CRE/KushCloud

v1.0.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 13 Jul 19:20

First stable release of KushCloud — a polished one-tap arcade flyer.

v4.5.0 — Cloudflare Leaderboard Migration

Choose a tag to compare

@LIN4CRE LIN4CRE released this 02 Jul 19:52
7361984

Cloudflare Leaderboard Migration

This release adds a Firebase-free online leaderboard using Cloudflare Workers + D1.

Added

  • Cloudflare Workers + D1 leaderboard backend
  • Stable anonymous \playerId\ for per-player cloud rankings
  • Cloud/local leaderboard status indicators, refresh button, and best-score sync

Changed

  • Leaderboard priority: Cloudflare D1 API checked first; Firebase is fallback
  • Scores sync locally first, then to cloud when \VITE_LEADERBOARD_API_URL\ is set

Bug fix

  • Firebase was silently overriding the Cloudflare leaderboard path — fixed priority so D1 is checked first

3.5.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 17 Jun 13:01
chore: polish pass — fix test setup, remove dead exports, clean up im…

KushCloud v3.3.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 17 Jun 12:30

What's Changed

Bug Fixes

  • Fixed Leaderboard.test.tsx: navigator mock stripped \userAgent\ crashing React 19
  • Fixed Leaderboard.test.tsx mock: missing \getFriendScores\ and \encodeScoreLink\
  • Fixed tests/setup.ts unsafe Navigator cast (TypeScript error)
  • All 156 tests passing, 0 suites failing (pre-existing Leaderboard failure resolved)

Cleanup

  • Removed unused exports: \SectionLabel, \Modal, \AnimatedNumber\ from ui.tsx
  • Removed unused \subscribeUserProfile\ from firebase.ts
  • Removed unused \getRunLog\ from runProcessing.ts
  • Removed unused \useIsStandalone\ from useUpdateChecker.ts
  • Removed unused \export default env\ from env.ts
  • Removed unused \useRef\ import from ui.tsx

Verification

  • TypeScript: 0 errors | ESLint: 0 errors/0 warnings | Tests: 156/156 pass | Build: 756 kB

Full Changelog: v3.2.0...v3.3.0

KushCloud v3.2.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 17 Jun 12:13

What's Changed

Bug Fixes

  • Fixed isTimeExpired() always returning false (dead code removed)
  • Fixed CrateReveal inline definition breaking React reconciliation
  • Fixed duplicate global error listeners in main.tsx and App.tsx
  • Fixed onFrenzy firing every frame instead of on state change
  • Fixed CrateReveal useEffect re-running on every render
  • Fixed leaderboard subscription recreating on every bestScore change
  • Fixed async anti-pattern in getLeaderboard() (redundant callback)
  • Fixed 10 no-explicit-any lint warnings across tests

Features

  • Restored Firebase connectivity (leaderboard, auth)
  • Speed prototype improvements
  • URL score sharing
  • Auto-refresh leaderboard
  • Leaderboard cache repair

Infrastructure

  • Centralized error handling in errorHandler.ts
  • Extracted CrateReveal to its own component
  • Firebase .env credentials restored
  • TypeScript: 0 errors, ESLint: 0 warnings, Tests: 155/155 passing

Full Changelog: v3.1.0...v3.2.0

KushCloud v3.1.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 17 Jun 12:06

Bug Fixes & Performance

  • Critical: Removed dead \isTimeExpired()\ method that always returned false, correcting intent mismatch in engine timing (\engine.ts)
  • Components: Extracted \CrateReveal\ from \App.tsx\ into dedicated file — prevents React reconciliation breakage from inline component definition
  • Event handlers: Centralized global error handling — removed duplicate \error/\unhandledrejection\ listeners between \main.tsx\ and \App.tsx\
  • Performance: \onFrenzy\ callback now fires only on frenzy state change instead of every frame
  • Performance: Leaderboard subscription in \Play.tsx\ no longer recreates on every \�estScore\ change — uses \useRef\
  • Stability: Fixed async anti-pattern in \leaderboard.ts\ \getLeaderboard()\ — redundant callback wrapper removed, proper \�wait\ added
  • Lint cleanup: Resolved 10
    o-explicit-any\ warnings across test files

KushCloud v3.0.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 02:26

Full Changelog: v2.6.0...v3.0.0

KushCloud v2.6.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 21:30

Full Changelog: v2.4.0...v2.6.0

KushCloud v2.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 19:25

Full Changelog: v2.3.0...v2.4.0

KushCloud v2.3.0

Choose a tag to compare

@LIN4CRE LIN4CRE released this 12 Jun 11:21

What's New

  • Update modal with install-type detection (PWA/Android/web), dismiss/skip persistence, hourly recheck
  • PWA foundation: manifest.json, service worker (network-first), icon.svg — app is now installable
  • Leaderboard rewrite: loading skeleton, player stats bar, offline indicator, refresh with timestamp, friend star icons, rank medals
  • Leaderboard friend filtering now uses Firebase friends list instead of hardcoded names
  • Firebase DB rules fix: \period\ validation now accepts 'all'\ to match client code
  • Score submission optimized: only submits on period change or new personal best

Verification

  • TypeScript: 0 errors
  • ESLint: 0 errors
  • Build: 700 KB (191 KB gzip), single-file
  • Tests: 92/92 passing

Full Changelog: v2.2.0...v2.3.0