From 77b985db9c0f2e2f9bcaa703921c58af4c398e52 Mon Sep 17 00:00:00 2001 From: Dorian Date: Tue, 3 Mar 2026 23:29:01 +0000 Subject: [PATCH] feat(chat): add system prompt editor & personas (M9.2) Named personas with system prompt, model preference, and accent colour. Persona pill selector above chat input, editor modal for create/edit/delete. Default persona auto-applied to new conversations. Persona system prompt prepended to AI context. Co-Authored-By: Claude Opus 4.6 --- .../app/src/components/chat/ChatWindow.vue | 7 +- .../src/components/chat/PersonaSelector.vue | 248 ++++++++++++++++++ packages/app/src/composables/useAI.ts | 38 ++- packages/app/src/stores/chat.ts | 71 ++++- packages/app/src/stores/personas.ts | 98 +++++++ packages/core/src/types/message.ts | 2 + 6 files changed, 450 insertions(+), 14 deletions(-) create mode 100644 packages/app/src/components/chat/PersonaSelector.vue create mode 100644 packages/app/src/stores/personas.ts diff --git a/packages/app/src/components/chat/ChatWindow.vue b/packages/app/src/components/chat/ChatWindow.vue index 61f43929..cfb0a787 100644 --- a/packages/app/src/components/chat/ChatWindow.vue +++ b/packages/app/src/components/chat/ChatWindow.vue @@ -20,6 +20,8 @@ + + (null) const chatSearchRef = ref | null>(null) @@ -220,7 +225,7 @@ function getTriggeringQuery(msgs: typeof messages.value, idx: number): string { } function handleNewChat() { - chatStore.createConversation() + chatStore.createConversation('New Chat', personaStore.defaultPersona?.id) } function handleStop() { diff --git a/packages/app/src/components/chat/PersonaSelector.vue b/packages/app/src/components/chat/PersonaSelector.vue new file mode 100644 index 00000000..caebfcc7 --- /dev/null +++ b/packages/app/src/components/chat/PersonaSelector.vue @@ -0,0 +1,248 @@ +