Developer Toolkit — Voice, Neurons, Scaffold & Web Search

The second major architectural expansion: 2,400+ lines of new frontend code introduces WebRTC voice chat, voice memos with transcription, the NeuronPanel AI context editor, code scaffold generation, and Tavily web search integration.

The second major architectural expansion of the month — 2,400+ lines of new frontend code and 2,251 lines of new backend code in two coordinated commits. This sprint introduced a suite of power-user and developer tools.

Voice Memos

Users can record audio in the chat input and send it as a voice memo. The backend receives the base64-encoded audio blob, converts it to WAV via ffmpeg-static, and transcribes it using OpenRouter's openai/gpt-audio-mini model. The transcript is injected into the AI conversation as a regular user message. The frontend renders received voice memos with a distinct audio-player style in ChatMessage.

Voice Chat (WebRTC)

A full WebRTC voice chat implementation was added. VoiceChat.tsx handles microphone acquisition, peer connection management via TURN/STUN servers, and speaking detection using a Web Audio API AnalyserNode — users get a visual wave indicator when someone is talking. Server-side, voiceParticipants tracks who is in each voice room, and socket events keep the UI synchronized.

NeuronPanel (AI Context Editor)

Neurons are named chunks of text that are injected into the AI's system prompt when active. The NeuronPanel component lets users create, edit, activate/deactivate, and delete neurons per-room. Backend: a new neurons table in the schema, neuron.service.ts with CRUD, and socket events. This replaces the need to manually repeat context in every session.

Scaffold Generator

The code! command (typed in chat) triggers a code-generation flow. The AI's output is passed through scaffold.service.ts, which parses multi-file responses and returns a zip-ready structure. Users can preview individual files and download the full scaffold as a zip. File metadata is persisted to RoomMessage so the scaffold preview survives page reloads.

Tavily Web Search

The search! command triggers a Tavily API call, injects the top results into the AI's context, and generates a response grounded in live web data. Results are rendered as cards with title, URL, and snippet.

File Uploads

upload.service.ts and POST /api/upload accept binary files from the client, store them in the uploads/ directory, and return a relative path.

Announcement Banner

A dismissible banner was added to the app shell for broadcasting announcements to all users. Auto-dismisses after 10 seconds.

Why it matters

This sprint turned GroupGPT from a group chat with AI into a developer workspace — voice, searchable context, code generation, and file handling all in one session. The neuron system in particular changes the product category: rooms become reusable AI environments rather than one-off chats.