v1.2.0
Split Backend + Portal Architecture:- REST API and Socket.IO now run as separate processes on dedicated subdomains
- REST API:
hapi.7331.org(port 8000) — FastAPI only - WebSocket:
hws.7331.org(port 8001) — Socket.IO only (Starlette + python-socketio) - Both share the same Postgres and Redis. Cross-process emit via
AsyncRedisManager - IPC for commands (disconnect user, destroy room) via Redis pub/sub
- Per-room chat — every room is its own chat channel, no global chat
- Room system with named rooms (admin-created) and guild rooms (premium, auto-start)
- Two-tier invite system: vanity invites (permanent, DB) and ephemeral invites (Redis, TTL)
- End-to-end encrypted messages with per-room key distribution
- Room lifecycle: create, start, stop, destroy with idle auto-shutdown
- Virtual browser rooms via neko-rooms orchestrator (Brave, Tor)
- Presence sync via Redis key (WS writes on connect/disconnect, REST reads for
/portal/status)
GET /v1/portal/status— Online count and user list (reads from Redis presence key)GET /v1/portal/rooms/{room_name}/messages— Room message historyDELETE /v1/portal/rooms/{room_name}/messages/{message_id}— Delete messagePOST /v1/portal/rooms/{room_name}/mute— Mute userPOST /v1/portal/rooms/{room_name}/unmute— Unmute userPOST /v1/portal/rooms/{room_name}/clear— Clear room messagesGET /v1/portal/rooms/{room_name}/screenshot— Room screenshotGET /v1/portal/vanity/{slug}— Resolve vanity inviteGET /v1/guilds/{id}/room-settings— Guild room settingsPUT /v1/guilds/{id}/room-settings— Update guild room settingsPUT /v1/guilds/{id}/vanity— Set vanity inviteDELETE /v1/guilds/{id}/vanity— Remove vanity invite
v1.1.0
API Gap Remediation New endpoints:GET /statistics/bots— Bot count statistics by verification statusGET /admin/subscriptions/active— List all active subscriptionsGET /admin/punishments/search— Cross-entity punishment search with filtersGET /admin/punishments/{id}— Get a single punishment by IDGET /admin/punishments/stats— Punishment analytics (counts by type over N days)POST /admin/bots/{id}/update— Update bot name, owner, rate limitPOST /admin/bots/{id}/regenerate-key— Rotate a bot’s API keyPOST /admin/bots/{id}/reset-stats— Reset bot cached statisticsGET /admin/bots/search— Search/filter bots with paginationPOST /admin/guilds/{id}/update— Update guild name, owner, state
- User search, user detail, guild detail, and audit logs now accessible to moderators
- Moderators see only users below their permission level
- Moderators see guild detail with subscription/sponsor fields redacted
- Moderators see only warn/timeout events in audit logs
- Audit logging added to bot-initiated user and guild updates
- Pagination params normalized to
offset/limitacross all endpoints - All service methods now return typed models (no more
dict[str, Any])
v1.0.0
Initial Release- User authentication via Discord login codes
- User profile and subscription management
- Guild management with prefix customization
- Bot registration and statistics tracking
- Batch command reporting for bots
- Admin panel with user/guild/bot management
- Punishment system (ban, warn, timeout, unban)
- Subscription granting and revocation
- Audit logging for all admin actions
- Rate limiting per bot API key
- Redis caching layer for bot stats

