Changelog
What changed, basically.
v7.6.0June 22, 2026
- Shop command no longer shows fake "500 balance" when the database is having issues — tells you straight up
- API server rate limiter won't leak memory anymore — old IP entries get cleaned up every 2 minutes
- Auto-mod spam cleaner won't stack up duplicate timers if the module gets reloaded
- Rob command now properly sets your cooldown even when you fail with zero balance — no more unlimited spam attempts
- Added HSTS header to harden security — served through _headers file
- robots.txt added so search engines actually find the sitemap
- noscript fallback added to the homepage — lets people know JS is required
- Status page stats now retry with proper backoff (2s, then 4s) instead of hammering the API three times instantly
- Mobile hero panel layout fixed — stats card no longer jumps above the headline text
- OG meta tags added to changelog, privacy, terms, and 404 pages — link previews actually work now
- prefers-reduced-motion respected — animations disabled for accessibility when the user asks for it
v7.5.0June 22, 2026
- Blackjack reworked from auto-play to interactive Hit/Stand buttons — you actually play now
- Fish and mine cooldowns now show seconds when under a minute instead of rounding to "1m"
- Race conditions squashed across every economy command — wrapped in DB transactions so concurrent usage doesn't eat your balance
- Pay and rob were reading stale balances — now re-fetch inside the transaction
- Gamble's lucky clover check was reading the wrong data — fixed
- Migration scripts cleaned up — no more hardcoded passwords in the repo, reads from .env like everything else
- Empty catch blocks throughout API and bot code now actually log errors instead of eating them
- Pay and use commands now respect the economy toggle — they were slipping through before
- Version unified to v7.0.0 across the board so /about and help aren't showing different numbers
- Generated Drizzle migration adding 13 columns that were missing from guild_configs and user_economy (automod toggles, welcome channel IDs, xp boost expiry, etc.)
- Added npm run db:migrate and db:generate scripts
- Removed unused parameter in /about that was just sitting there
- Fixed help command crash when no commands matched — was using a bad non-null assertion
- Privacy policy and terms pages got staggered scroll animations so it's not all just appearing at once
- Team page redesigned with actual cards, role badges, and social links that don't look like an afterthought
v7.4.0June 17, 2026
- Fixed TypeScript compilation errors across 30+ source files — type mismatches, unused imports, incorrect enum patterns resolved
- Fixed Docker build failing on multiline ENV and trailing backslash syntax in Dockerfile
- Fixed postinstall script failure in Docker (bash not found in alpine-slim image — switched to node:20-slim)
- Fixed Drizzle ORM schema: $default replaced with default(), $exists replaced with raw SQL subquery
- Fixed gambling payout calculation — was overpaying 3x the intended amount on wins
- Fixed random range off-by-one errors in /search, /fish, /mine, /gamble, /slots, /blackjack
- Fixed level-role string comparison causing incorrect role assignments on level-up
- Fixed SQLite date parsing — new Date(dbDate) replaced with manual date string parsing for SQLite date format
- Fixed SQL injection vulnerability in API stats endpoint — table names now validated against strict allowlist
- Fixed Response/Request serialization of bigint, Date, Map, Set, and Buffer types in API responses
- Fixed double .where() clause in ticket database query — merged into single chained filter
- Node.js version bumped to 20 in Dockerfile for compatibility
- Switched from bun to npm as package manager in Docker build for lockfile consistency
- Added global JSON serializer patch for BigInt, Date, Map, Set, and Buffer in API server
- Website revamp — refreshed landing page hero, feature cards, and command previews
v7.3.0June 13, 2026
- Discord.js sharding via ShardingManager with auto-scaling — bot spawns shards based on guild count
- Shard count displayed on the status page and in /stats command
- Each shard reports stats (guilds, users, commands, latency) via IPC every 15 seconds
- Removed dashboard page and all OAuth routes (no longer needed)
- Removed guild config API endpoints and OAuth helper
- Dashboard link removed from all navigation bars across the site
- Added page fade-in animation and staggered card slide-up effects across the site
- Mobile nav and desktop nav now have hover/active transform transitions
v7.2.0June 13, 2026
- Status webhook now broadcasts live stats to Discord every 5 minutes
- Fixed status webhook sending 0 values on startup — moved send to ClientReady event
- Guild join/leave now triggers a status webhook update
- Status page shows DB connection status (green/rose dot) and "last updated" timestamp
- Added rate limiting (100 req/min per IP) to all API endpoints
- Added security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy)
- Limited JSON body size to 32KB on all API endpoints
- Whitelisted allowed config fields in dashboard save endpoint — only 10 fields accepted
- Fixed OAuth CSRF — state parameter now validated on callback with 5-minute TTL
- Sanitized guild name display in dashboard against XSS (HTML entity encoding)
- Cached DB health check — rechecks every 30 seconds instead of every poll
- Bot approved on discords.com — link added to all footers and home page hero
- Discords.com vote webhook endpoint with API key and webhook secret configured
- GitHub URL updated to watispro5212/PulseKeep
- Discord invite updated to b9HBphyeuP
- Social links and toast notifications added to all website pages
- Support server blueprint (server.md) — complete channel-by-channel guide
- Fixed welcome messages not sending when channel wasn't cached
- Fixed mod log delivery when guild/channel wasn't cached
- Welcome events now logged to configured mod log channel
- Error logging added to welcome and log delivery (no more silent failures)
- /data-deletion command added (owner/co-owner only) for GDPR-compliant user data wipes
v7.1.0June 12, 2026
- /search now has a 15-minute cooldown (was an infinite money exploit)
- /fish and /mine now show precise cooldown remaining time instead of "wait a moment"
- All moderation commands now show the actual error message on failure instead of generic "Failed to..."
- Ban/kick/mute/unmute/softban/warn now tell the moderator when the user couldn't be DMed
- DM failure no longer silently swallowed — footer note added to moderation embeds
- /role add now warns if user already has the role; /role remove warns if they don't
- /configure ticket_category now validates the channel is a category type
- Fixed duplicate /vote entry in help command economy category
- /vote command now handles DBL API errors gracefully (tells user if check is unavailable)
- DB error handling added to economy commands (daily, work, vote) — no more silent crashes
- Balance shown after every economy transaction (daily, work, fish, mine, search, blackjack)
- /clearwarns now has confirmation buttons to prevent accidental data loss
- /inventory now shows active XP Boost and Lucky Clover status
- Economy commands now use try/catch for graceful DB error handling
v7.0.0June 2026
- Complete TypeScript rewrite — 50+ slash commands
- New economy system: daily streaks, blackjack, slots, fishing, mining
- Moderation suite with warnings, mute, ban, purge, lockdown
- Button-based ticket system with private channels
- PostgreSQL database with Drizzle ORM
- Express API server with real-time stats
- Redesigned website
v6.0.0May 2026
- Original Go version with basic moderation and ticket features
