Skip to content

IsotopeAI v3.3.5 πŸ§ͺ

Choose a tag to compare

@Suydev Suydev released this 07 Jun 15:32
· 10 commits to main since this release

IsotopeAI v3.3.5

Fixed

  • CRITICAL: /api/health?_=<timestamp> speed probe returned HTTP 404 β€” The network speed probe fired by the app at every session used a cache-busting query-string (?_=Date.now()). The API health handler matched req.url === '/api/health' (exact string), so any request with a query string silently fell through to the /api/* 404 fence added in v3.3.4. The speed probe received {"ok":false,"error":"Not found"} (34 B) instead of the ~230 B health payload, making the sync timeout calculator classify every user as "slow" (150 s timeout). Fixed: all /api/* route handlers now match adminPath (the URL parsed without query string) instead of the raw req.url.
  • Same query-string fallthrough for /api/version, /api/check-update, /api/ai-config β€” All four API route handlers were patched from req.url === to adminPath ===.

Performance

  • Health endpoint caching (15 s TTL) β€” /api/health previously made 3 concurrent Supabase HTTP round-trips on every call (REST, Auth, Storage), taking 200–600 ms. Results are now cached for 15 seconds; subsequent calls return in <1 ms. The cache is only populated on a successful ok response so degraded states still probe live.
  • Pre-gzip bundle cache β€” 10 major JS bundles (App, Auth, Focus, Onboarding, SingleGroup, Leaderboard, Settings, AppAccessGate, SessionSync, Invites) are gzip-compressed once at server startup and stored in memory (_gzipCache). All subsequent requests for these assets skip the per-request zlib.gzip() call and serve the cached compressed buffer instantly. For all other hashed immutable assets and SW files, the first gzip result is also cached.
  • 14 missing database indexes added (performance-indexes.sql) β€” Static schema analysis found 14 unindexed foreign-key and date-ordering columns:
    • community_events(creator_id), community_events(host_user_id) β€” FK columns never indexed
    • community_events(created_at), community_events(updated_at) β€” date ordering
    • user_tours(user_id) β€” FK for guided-tour lookups per user
    • user_tours(created_at), user_tours(updated_at) β€” date ordering
    • user_roles(granted_by) β€” FK for admin audit queries
    • group_invites(created_at) β€” expiry + ordering queries
    • group_challenges(created_at) β€” ordering
    • groups(created_at), groups(updated_at) β€” ordering
    • users(updated_at) β€” profile sync delta queries
    • Apply via: Supabase Dashboard β†’ SQL Editor β†’ run performance-indexes.sql

Added

  • performance-indexes.sql β€” New file containing all 14 CREATE INDEX IF NOT EXISTS statements. Idempotent and safe to run multiple times. Referenced from admin panel setup guide.

Audit (v3.3.5 β€” 2026-06-07)

# Check Result
1 /api/health?_=timestamp speed probe now returns 200 JSON βœ… fixed (adminPath match)
2 /api/version, /api/check-update, /api/ai-config same fix βœ… all 4 handlers patched
3 Health endpoint cached at 15 s TTL βœ… <1 ms on cache hit
4 10 bundles pre-gzip'd at startup βœ… _gzipCache Map
5 14 missing indexes documented in performance-indexes.sql βœ… new file
6 All changes pushed to GitHub βœ…


πŸ“₯ Quick Install

git clone https://github.com/Suydev/isotope-code.git
cd isotope-code
bash setup.sh

πŸ“‹ What's Changed

See CHANGELOG.md for the full history.

❀️ Support

UPI: 9699393886@fam Β· isotopeai.in