Save message in text box

This commit is contained in:
andrepimenta
2025-07-28 23:45:42 +01:00
parent 3b534cfce2
commit 5abb1fedd9
2 changed files with 41 additions and 0 deletions

View File

@@ -127,6 +127,7 @@ class ClaudeChatProvider {
private _currentClaudeProcess: cp.ChildProcess | undefined; private _currentClaudeProcess: cp.ChildProcess | undefined;
private _selectedModel: string = 'default'; // Default model private _selectedModel: string = 'default'; // Default model
private _isProcessing: boolean | undefined; private _isProcessing: boolean | undefined;
private _draftMessage: string = '';
constructor( constructor(
private readonly _extensionUri: vscode.Uri, private readonly _extensionUri: vscode.Uri,
@@ -236,6 +237,14 @@ class ClaudeChatProvider {
// Send current settings to webview // Send current settings to webview
this._sendCurrentSettings(); this._sendCurrentSettings();
// Send saved draft message if any
if (this._draftMessage) {
this._postMessage({
type: 'restoreInputText',
data: this._draftMessage
});
}
} }
private _handleWebviewMessage(message: any) { private _handleWebviewMessage(message: any) {
@@ -324,6 +333,9 @@ class ClaudeChatProvider {
case 'enableYoloMode': case 'enableYoloMode':
this._enableYoloMode(); this._enableYoloMode();
return; return;
case 'saveInputText':
this._saveInputText(message.text);
return;
} }
} }
@@ -430,6 +442,9 @@ class ClaudeChatProvider {
this._isProcessing = true; this._isProcessing = true;
// Clear draft message since we're sending it
this._draftMessage = '';
// Show original user input in chat and save to conversation (without mode prefixes) // Show original user input in chat and save to conversation (without mode prefixes)
this._sendAndSaveMessage({ this._sendAndSaveMessage({
type: 'userInput', type: 'userInput',
@@ -2149,6 +2164,10 @@ class ClaudeChatProvider {
} }
} }
private _saveInputText(text: string): void {
this._draftMessage = text || '';
}
private async _updateSettings(settings: { [key: string]: any }): Promise<void> { private async _updateSettings(settings: { [key: string]: any }): Promise<void> {
const config = vscode.workspace.getConfiguration('claudeCodeChat'); const config = vscode.workspace.getConfiguration('claudeCodeChat');

View File

@@ -1543,6 +1543,18 @@ const html = `<!DOCTYPE html>
messageInput.addEventListener('input', adjustTextareaHeight); messageInput.addEventListener('input', adjustTextareaHeight);
// Save input text as user types (debounced)
let saveInputTimeout;
messageInput.addEventListener('input', () => {
clearTimeout(saveInputTimeout);
saveInputTimeout = setTimeout(() => {
vscode.postMessage({
type: 'saveInputText',
text: messageInput.value
});
}, 500); // Save after 500ms of no typing
});
messageInput.addEventListener('keydown', (e) => { messageInput.addEventListener('keydown', (e) => {
if (e.key === 'Enter' && !e.shiftKey) { if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault(); e.preventDefault();
@@ -2490,6 +2502,16 @@ const html = `<!DOCTYPE html>
updateStatusWithTotals(); updateStatusWithTotals();
break; break;
case 'restoreInputText':
const inputField = document.getElementById('messageInput');
if (inputField && message.data) {
inputField.value = message.data;
// Auto-resize the textarea
inputField.style.height = 'auto';
inputField.style.height = Math.min(inputField.scrollHeight, 200) + 'px';
}
break;
case 'output': case 'output':
if (message.data.trim()) { if (message.data.trim()) {
let displayData = message.data; let displayData = message.data;