diff --git a/.gitignore b/.gitignore index f5d595f..b20f5fd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,10 @@ dist/ build/ .next/ .nuxt/ +scripts/ + +# Dev server helper runtime files +.scripts/ # Environment .env diff --git a/package.json b/package.json index a546f8d..59fcc5f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,12 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "preview": "vite preview" + "preview": "vite preview", + "start": "./scripts/devserver.sh start", + "stop": "./scripts/devserver.sh stop", + "restart": "./scripts/devserver.sh restart", + "dev:status": "./scripts/devserver.sh status", + "dev:stop-all": "./scripts/devserver.sh stop-all" }, "dependencies": { "@tanstack/react-query": "^5.100.11", diff --git a/src/features/channels/MessagePanel.tsx b/src/features/channels/MessagePanel.tsx index f446cae..dba7822 100644 --- a/src/features/channels/MessagePanel.tsx +++ b/src/features/channels/MessagePanel.tsx @@ -30,6 +30,8 @@ function formatMessageTime(iso: string): string { } function MessageRow({ msg, heardCount, onAnalyze }: { msg: ChannelMessage; heardCount?: number; onAnalyze?: (hash: string) => void }) { + // REST carries the server-side total; the live WS counter augments it during the session + const reach = Math.max(msg.observationCount ?? 0, heardCount ?? 0); return (
{formatMessageTime(msg.sentAt)} + {reach > 0 && ×{reach}}
{msg.content}
- {heardCount != null && heardCount > 1 && ( -
- heard {heardCount}× -
- )} ); } diff --git a/src/features/channels/types.ts b/src/features/channels/types.ts index 36bf02e..67f82d9 100644 --- a/src/features/channels/types.ts +++ b/src/features/channels/types.ts @@ -26,4 +26,5 @@ export interface ChannelMessage { senderName: string; content: string; sentAt: string; + observationCount?: number; }