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:
@@ -192,8 +192,6 @@ export interface MessageWithUser extends Message {
|
||||
attachments: Attachment[];
|
||||
reactions: Reaction[];
|
||||
replyTo?: MessageWithUser | null;
|
||||
stickerId?: string | null;
|
||||
sticker?: Sticker | null;
|
||||
}
|
||||
|
||||
// ─── Reaction Types ────────────────────────────────────────────────────────
|
||||
@@ -257,8 +255,6 @@ export interface DmMessageWithUser extends DmMessage {
|
||||
attachments: Attachment[];
|
||||
reactions: Reaction[];
|
||||
replyTo?: DmMessageWithUser | null;
|
||||
stickerId?: string | null;
|
||||
sticker?: Sticker | null;
|
||||
}
|
||||
|
||||
// ─── WebSocket Event Types ──────────────────────────────────────────────────
|
||||
@@ -342,11 +338,6 @@ export type ServerEvent =
|
||||
| { type: 'category_deleted'; categoryId: string; spaceId: string }
|
||||
| { type: 'channel_layout_updated'; spaceId: string; channels: Channel[]; categories: ChannelCategory[] }
|
||||
| { type: 'space_layout_updated'; layout: SpaceLayoutItem[]; folders: SpaceFolder[]; updatedAt?: number }
|
||||
| { type: 'sticker_pack_created'; spaceId: string; pack: StickerPack }
|
||||
| { type: 'sticker_pack_updated'; spaceId: string; pack: StickerPack }
|
||||
| { type: 'sticker_pack_deleted'; spaceId: string; packId: string }
|
||||
| { type: 'sticker_created'; spaceId: string; sticker: Sticker }
|
||||
| { type: 'sticker_deleted'; spaceId: string; stickerId: string }
|
||||
| { type: 'pong' }
|
||||
| { type: 'error'; message: string };
|
||||
|
||||
@@ -426,7 +417,6 @@ export interface CreateMessageRequest {
|
||||
content: string;
|
||||
attachments?: string[];
|
||||
replyToId?: string;
|
||||
stickerId?: string;
|
||||
}
|
||||
|
||||
export interface UpdateMessageRequest {
|
||||
@@ -458,7 +448,6 @@ export interface CreateDmMessageRequest {
|
||||
content?: string;
|
||||
attachments?: string[];
|
||||
replyToId?: string;
|
||||
stickerId?: string;
|
||||
}
|
||||
|
||||
export interface PaginatedQuery {
|
||||
@@ -539,34 +528,6 @@ export interface GifResult {
|
||||
height: number;
|
||||
}
|
||||
|
||||
// ─── Sticker Types ──────────────────────────────────────────────────────────
|
||||
|
||||
export interface Sticker {
|
||||
id: string;
|
||||
packId: string;
|
||||
spaceId: string;
|
||||
name: string;
|
||||
tags: string;
|
||||
filename: string;
|
||||
mimetype: string;
|
||||
size: number;
|
||||
width: number | null;
|
||||
height: number | null;
|
||||
uploadedBy: string;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface StickerPack {
|
||||
id: string;
|
||||
spaceId: string;
|
||||
name: string;
|
||||
description: string | null;
|
||||
createdBy: string;
|
||||
createdAt: number;
|
||||
stickers: Sticker[];
|
||||
spaceName?: string;
|
||||
}
|
||||
|
||||
// ─── Instance Settings Types ────────────────────────────────────────────────
|
||||
|
||||
export interface InstanceAdminSettings {
|
||||
|
||||
Reference in New Issue
Block a user