mirror of
https://github.com/andrepimenta/claude-code-chat.git
synced 2025-12-10 23:09:50 +00:00
Save message in text box
This commit is contained in:
@@ -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');
|
||||||
|
|
||||||
|
|||||||
22
src/ui.ts
22
src/ui.ts
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user