feat: launch readiness — PWA, API hardening, memory leak fixes, sticker removal
- Add PWA infrastructure: vite-plugin-pwa, manifest, service worker, SW update prompt component, placeholder icons, Apple meta tags - Harden API client: 401 auto-logout, AbortController timeouts (30s standard, 120s uploads), onUnauthorized callback - Fix memory leaks: clear voice user status on leave, clean up all Maps (channelToSpaceMap, permissions, etc.) on removeSpace - Upgrade error boundary to Aether Drift design with Try Again button, collapsible stack trace, and componentDidCatch logging - Configure desktop icon paths in electron-builder.yml - Remove sticker feature (server routes, schema, types, UI components) - Fix Docker build: use **/node_modules in .dockerignore to prevent COPY from clobbering pnpm-installed workspace dependencies - Add vite-env.d.ts declarations for noise suppressor wasm imports - Exclude test files from tsc build via tsconfig
This commit is contained in:
@@ -333,6 +333,7 @@ function handleEvent(origin: string, event: ServerEvent): void {
|
||||
addVoiceUser(event.channelId, event.userId);
|
||||
} else {
|
||||
removeVoiceUser(event.channelId, event.userId);
|
||||
clearVoiceUserStatus(event.userId);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -755,20 +756,6 @@ function handleEvent(origin: string, event: ServerEvent): void {
|
||||
break;
|
||||
}
|
||||
|
||||
// ─── Sticker events (all origins) ────────────────────────────────────
|
||||
|
||||
case 'sticker_pack_created':
|
||||
case 'sticker_pack_updated':
|
||||
case 'sticker_pack_deleted':
|
||||
case 'sticker_created':
|
||||
case 'sticker_deleted': {
|
||||
// Invalidate the sticker picker cache so next open fetches fresh data
|
||||
import('../components/chat/StickerPicker').then(({ invalidateStickerCache }) => {
|
||||
invalidateStickerCache();
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
case 'pong':
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user