feat: add Electron Mini Chat windows (#1161)
Add dedicated Electron Mini Chat windows for focused chat sessions without the full desktop shell. Mini Chat can open existing sessions or draft sessions, supports pinning above other windows, transfers sessions or drafts back to the main window, and deduplicates existing-session windows. Expose Mini Chat entry points from the main header, session sidebar, command palette, and `mod+alt+n`. Add a dedicated Vite entry and React runtime so the compact surface can stay isolated from full-app chrome while still sharing chat, sync, theme, locale, model, agent, and worktree behavior. Keep Mini Chat behavior scoped to the compact surface: - limit assistant/user message actions to the appropriate Mini Chat set - hide workspace changed-files UI in Mini Chat - keep draft worktree selection and streaming directory state in sync - mark sessions viewed while they are open in Mini Chat - support Mini Chat-specific keyboard shortcuts for input focus, model selection, thinking variant cycling, favorite model cycling, and opening new Mini Chat drafts Harden Electron integration by gating Mini Chat controls on desktop IPC availability, restricting pin/unpin IPC to Mini Chat windows, and only closing Mini Chat after the main window handoff succeeds.
This commit is contained in:
committed by
GitHub
parent
8410c41b01
commit
e1ff21bc0a
@@ -521,6 +521,26 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.messageBody.toast.planSaved': 'Plan zapisany',
|
||||
'chat.messageBody.toast.imageSaved': 'Obraz zapisany',
|
||||
'chat.messageBody.toast.generateImageFailed': 'Nie udało się wygenerować obrazu',
|
||||
'miniChat.header.newSession': 'Nowa sesja',
|
||||
'miniChat.header.session': 'Sesja',
|
||||
'miniChat.header.defaultAgent': 'Domyślny agent',
|
||||
'miniChat.header.noModel': 'Brak modelu',
|
||||
'miniChat.status.busy': 'Działa',
|
||||
'miniChat.status.retry': 'Ponawianie',
|
||||
'miniChat.status.idle': 'Bezczynny',
|
||||
'miniChat.actions.pin': 'Przypnij nad innymi oknami',
|
||||
'miniChat.actions.unpin': 'Odepnij okno',
|
||||
'miniChat.actions.pinAria': 'Przypnij okno Mini Chat',
|
||||
'miniChat.actions.unpinAria': 'Odepnij okno Mini Chat',
|
||||
'miniChat.actions.openMain': 'Otwórz w głównym oknie',
|
||||
'miniChat.actions.openMainAria': 'Otwórz sesję w głównym oknie',
|
||||
'miniChat.unavailable.title': 'Sesja niedostępna',
|
||||
'miniChat.unavailable.description': 'Nie udało się załadować tej sesji. Mogła zostać usunięta, zarchiwizowana albo otwarta z innego kontekstu projektu.',
|
||||
'sessions.sidebar.session.menu.openMiniChatWindow': 'Otwórz w oknie Mini Chat',
|
||||
'header.actions.newMiniChat': 'Nowe okno Mini Chat',
|
||||
'header.actions.newMiniChatAria': 'Otwórz nowe okno Mini Chat',
|
||||
'header.actions.openSessionMiniChat': 'Otwórz sesję w Mini Chat',
|
||||
'header.actions.openSessionMiniChatAria': 'Otwórz bieżącą sesję w Mini Chat',
|
||||
'errorBoundary.title': 'Coś poszło nie tak',
|
||||
'errorBoundary.description': 'Aplikacja napotkała nieoczekiwany błąd. Zostało to zalogowane do celów debugowania.',
|
||||
'errorBoundary.state.unknownError': 'Nieznany błąd',
|
||||
@@ -961,6 +981,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'commandPalette.empty.searchingFiles': 'Wyszukiwanie plików...',
|
||||
'commandPalette.input.placeholder': 'Szukaj plików, sesji i poleceń...',
|
||||
'commandPalette.item.newSession': 'Nowa sesja',
|
||||
'commandPalette.item.newMiniChat': 'Nowe okno Mini Chat',
|
||||
'commandPalette.item.newWorktreeDraft': 'Nowy szkic drzewa pracy',
|
||||
'commandPalette.item.addProject': 'Dodaj projekt',
|
||||
'commandPalette.item.openSettings': 'Otwórz ustawienia...',
|
||||
|
||||
Reference in New Issue
Block a user