Fix chat interface - restore continuous conversation flow

🎯 Major improvements to MissionControl component:
- Always keep input field visible and functional after AI responses
- Auto-clear input after submitting questions for better UX
- Add dynamic visual indicators (first question vs follow-up)
- Improve response layout with clear separation and hints
- Enable proper chat-like experience for continuous learning

🌟 Additional enhancements:
- Better language-specific messaging throughout interface
- Clearer visual hierarchy between input and response areas
- Intuitive flow that guides users to ask follow-up questions
- Maintains responsive design and accessibility

🔧 Technical changes:
- Enhanced MissionControl state management
- Improved component layout and styling
- Better TypeScript integration across components
- Updated tsconfig for stricter type checking
This commit is contained in:
rwiegand
2025-07-14 12:39:05 +02:00
parent b31492a354
commit f893530471
1798 changed files with 25329 additions and 92638 deletions

View File

@@ -1,7 +1,7 @@
import { File } from 'formdata-node';
import { spawn } from 'node:child_process';
import { Readable } from 'node:stream';
import { platform, versions } from 'node:process';
import { checkFileSupport } from "../internal/uploads.mjs";
const DEFAULT_SAMPLE_RATE = 24000;
const DEFAULT_CHANNELS = 1;
const isNode = Boolean(versions?.node);
@@ -22,7 +22,6 @@ function isResponse(stream) {
return typeof stream.body !== 'undefined';
}
function isFile(stream) {
checkFileSupport();
return stream instanceof File;
}
async function nodejsPlayAudio(stream) {
@@ -57,7 +56,6 @@ export async function playAudio(input) {
throw new Error('Play audio is not supported in the browser yet. Check out https://npm.im/wavtools as an alternative.');
}
function nodejsRecordAudio({ signal, device, timeout } = {}) {
checkFileSupport();
return new Promise((resolve, reject) => {
const data = [];
const provider = recordingProviders[platform];
@@ -66,7 +64,7 @@ function nodejsRecordAudio({ signal, device, timeout } = {}) {
'-f',
provider,
'-i',
`:${device ?? 0}`, // default audio input device; adjust as needed
`:${device ?? 0}`,
'-ar',
DEFAULT_SAMPLE_RATE.toString(),
'-ac',