This commit is contained in:
Timothy Jaeryang Baek
2026-07-15 23:27:58 -04:00
parent ee000c503c
commit f67252b5e8
3 changed files with 52 additions and 32 deletions
+32 -12
View File
@@ -348,9 +348,14 @@ async def get_note_chat_by_id(
changed = True
system = (
f'Note id: {note.id}. '
'Use view_note before reading or editing. '
'Use replace_note_content with content for whole-note updates or operations for selected/range updates.'
f'CONTEXT:
Current note id: {note.id}
'
'This chat is attached to the current note.
'
'For edit requests like make this concise, rewrite, enhance, shorten, or update: call view_note then replace_note_content.
'
'Do not say an edit is done unless replace_note_content succeeds.'
)
if params.get('system') != system:
params['system'] = system
@@ -378,9 +383,14 @@ async def get_note_chat_by_id(
'models': [''],
'params': {
'system': (
f'Note id: {note.id}. '
'Use view_note before reading or editing. '
'Use replace_note_content with content for whole-note updates or operations for selected/range updates.'
f'CONTEXT:
Current note id: {note.id}
'
'This chat is attached to the current note.
'
'For edit requests like make this concise, rewrite, enhance, shorten, or update: call view_note then replace_note_content.
'
'Do not say an edit is done unless replace_note_content succeeds.'
)
},
'history': {'messages': {}, 'currentId': None},
@@ -441,9 +451,14 @@ async def get_note_chats_by_id(
changed = True
system = (
f'Note id: {note.id}. '
'Use view_note before reading or editing. '
'Use replace_note_content with content for whole-note updates or operations for selected/range updates.'
f'CONTEXT:
Current note id: {note.id}
'
'This chat is attached to the current note.
'
'For edit requests like make this concise, rewrite, enhance, shorten, or update: call view_note then replace_note_content.
'
'Do not say an edit is done unless replace_note_content succeeds.'
)
if params.get('system') != system:
params['system'] = system
@@ -503,9 +518,14 @@ async def create_note_chat_by_id(
'models': [''],
'params': {
'system': (
f'Note id: {note.id}. '
'Use view_note before reading or editing. '
'Use replace_note_content with content for whole-note updates or operations for selected/range updates.'
f'CONTEXT:
Current note id: {note.id}
'
'This chat is attached to the current note.
'
'For edit requests like make this concise, rewrite, enhance, shorten, or update: call view_note then replace_note_content.
'
'Do not say an edit is done unless replace_note_content succeeds.'
)
},
'history': {'messages': {}, 'currentId': None},
+19 -18
View File
@@ -368,9 +368,9 @@
let chatFiles = [];
let files = [];
let params = {};
let appliedInitialFilesKey = '';
let attachedFilesKey = '';
let loadedChatIdProp = '';
let loadedEmbeddedDraftKey = '';
let currentDraftKey = '';
const mergeFiles = (current, incoming) => {
const seen = new Set();
@@ -387,11 +387,11 @@
const key = JSON.stringify(
initialFiles.map((file) => `${file?.type ?? ''}:${file?.id ?? file?.url ?? file?.name ?? ''}`)
);
if (key === appliedInitialFilesKey) return;
if (key === attachedFilesKey) return;
files = mergeFiles(files, initialFiles);
chatFiles = mergeFiles(chatFiles, initialFiles);
appliedInitialFilesKey = key;
attachedFilesKey = key;
};
const withSelectedText = (text: string) =>
embedded && selectedText?.trim()
@@ -419,9 +419,9 @@
navigateHandler();
}
$: if (embedded && embeddedDraftKey && embeddedDraftKey !== loadedEmbeddedDraftKey) {
$: if (embedded && embeddedDraftKey && embeddedDraftKey !== currentDraftKey) {
noteChatDebug('embedded draft requested', { embeddedDraftKey });
loadedEmbeddedDraftKey = embeddedDraftKey;
currentDraftKey = embeddedDraftKey;
initEmbeddedDraft();
}
@@ -2708,13 +2708,13 @@
}
history = history;
// Empty embedded drafts create their backing chat only when the first message is sent.
if (!_chatId) {
if (embedded && onCreateEmbeddedChat) {
const createdChat = await onCreateEmbeddedChat();
if (!createdChat?.id) {
toast.error($i18n.t('Failed to create chat'));
return;
// Empty embedded drafts create their backing chat only when the first message is sent.
if (!_chatId) {
if (embedded && onCreateEmbeddedChat) {
const createdChat = await onCreateEmbeddedChat();
if (!createdChat?.id) {
toast.error($i18n.t('Failed to create chat'));
return;
}
chat = createdChat;
@@ -2723,11 +2723,12 @@
await chatId.set(_chatId);
await chatTitle.set(createdChat?.chat?.title ?? createdChat?.title ?? $i18n.t('Chat'));
params = structuredClone(createdChat?.chat?.params ?? {});
delete params.note_id;
chatFiles = mergeFiles(chatFiles, createdChat?.chat?.files ?? []);
applyInitialFiles();
} else if ($temporaryChatEnabled) {
params = structuredClone(createdChat?.chat?.params ?? {});
delete params.note_id;
chatFiles = mergeFiles(chatFiles, createdChat?.chat?.files ?? []);
applyInitialFiles();
await onSelectEmbeddedChat?.(_chatId);
} else if ($temporaryChatEnabled) {
_chatId = `local:${$socket?.id}`;
await chatId.set(_chatId);
}
+1 -2
View File
@@ -712,8 +712,6 @@ ${content}
: null;
if (chat?.id) {
noteChatId = chat.id;
noteChatDraftKey = '';
noteChats = chats ?? [chat, ...noteChats.filter((item) => item.id !== chat.id)];
showNoteChat = true;
}
@@ -1440,6 +1438,7 @@ ${content}
onSelectEmbeddedChat={(chatId) => {
if (!chatId || chatId === noteChatId) return;
noteChatId = chatId;
noteChatDraftKey = '';
}}
onDeleteEmbeddedChat={deleteNoteChat}
onEmbeddedChatTitle={(chatId, title) => {