From 3c678519a6c035c9cdc65782b14f40573909009b Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 10:05:21 +0000 Subject: [PATCH 1/3] refactor(web): extract ShellPage sidebar JSX into components ShellPage's JSX carried the whole sidebar inline, including two near-copies of the group header and of the main header's sidebar toggles, which made the render hard to follow and easy to change in one place only. Move-only: the sidebar header, group header (one component for the conversation and project variants), the team and project roster rows, the archived section, the user menu and the sidebar toggle buttons now live in pages/shell. DOM, classNames, test ids, aria attributes, handlers and messages are unchanged; the catalogs only update their file references, and the desktop source checks for the header toggles now read the file they moved to. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u --- apps/web/src/lib/desktop.test.ts | 7 +- apps/web/src/locales/de/messages.po | 39 +- apps/web/src/locales/en/messages.po | 39 +- apps/web/src/locales/es/messages.po | 39 +- apps/web/src/locales/hi/messages.po | 39 +- apps/web/src/locales/ko/messages.po | 39 +- apps/web/src/locales/pt-BR/messages.po | 39 +- apps/web/src/locales/ru/messages.po | 39 +- apps/web/src/locales/tr/messages.po | 39 +- apps/web/src/locales/zh-CN/messages.po | 39 +- apps/web/src/pages/Shell.tsx | 797 +++--------------- apps/web/src/pages/shell/archived-section.tsx | 85 ++ apps/web/src/pages/shell/roster-rows.tsx | 250 ++++++ .../src/pages/shell/sidebar-group-header.tsx | 161 ++++ apps/web/src/pages/shell/sidebar-header.tsx | 118 +++ .../pages/shell/sidebar-toggle-buttons.tsx | 45 + apps/web/src/pages/shell/user-menu.tsx | 73 ++ 17 files changed, 1048 insertions(+), 839 deletions(-) create mode 100644 apps/web/src/pages/shell/archived-section.tsx create mode 100644 apps/web/src/pages/shell/roster-rows.tsx create mode 100644 apps/web/src/pages/shell/sidebar-group-header.tsx create mode 100644 apps/web/src/pages/shell/sidebar-header.tsx create mode 100644 apps/web/src/pages/shell/sidebar-toggle-buttons.tsx create mode 100644 apps/web/src/pages/shell/user-menu.tsx diff --git a/apps/web/src/lib/desktop.test.ts b/apps/web/src/lib/desktop.test.ts index 177ad2c..e150cac 100644 --- a/apps/web/src/lib/desktop.test.ts +++ b/apps/web/src/lib/desktop.test.ts @@ -63,6 +63,7 @@ describe("window chrome", () => { it("keeps conversation header controls clickable", () => { const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "../pages"); const shell = readFileSync(path.join(root, "Shell.tsx"), "utf8"); + const toggles = readFileSync(path.join(root, "shell/sidebar-toggle-buttons.tsx"), "utf8"); expect(shell).toContain( 'className="app-drag flex items-center justify-between border-b border-sidebar-border', ); @@ -70,14 +71,16 @@ describe("window chrome", () => { expect(shell).toContain('className="app-no-drag flex min-w-0 items-center gap-3"'); // Ensure header sidebar toggle controls stay clickable (not part of drag region) expect( - shell.match(/app-no-drag .* size-control-lg .* place-items-center/g)?.length ?? 0, + toggles.match(/app-no-drag .* size-control-lg .* place-items-center/g)?.length ?? 0, ).toBeGreaterThanOrEqual(2); }); it("moves window chrome into the conversation header when the bots sidebar is collapsed", () => { const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "../pages"); const shell = readFileSync(path.join(root, "Shell.tsx"), "utf8"); - expect(shell).toContain("{botsSidebarCollapsed && desktopBridge() ? : null}"); + const toggles = readFileSync(path.join(root, "shell/sidebar-toggle-buttons.tsx"), "utf8"); + expect(shell).toContain("collapsed={botsSidebarCollapsed}"); + expect(toggles).toContain("{collapsed && desktopBridge() ? : null}"); }); }); diff --git a/apps/web/src/locales/de/messages.po b/apps/web/src/locales/de/messages.po index f77295b..f1456e6 100644 --- a/apps/web/src/locales/de/messages.po +++ b/apps/web/src/locales/de/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (ungelesen)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "{0}, {label}" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "{0}, 1:1-Unterhaltung" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "{0}, Gruppenunterhaltung" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "{0}, Hauptunterhaltung" @@ -339,6 +339,7 @@ msgstr "Aktionsbestätigungen" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "Aktionen für {0}" @@ -354,7 +355,7 @@ msgstr "Aktiv" msgid "Active model" msgstr "Aktives Modell" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Aktivität" @@ -647,7 +648,7 @@ msgstr "Archivieren" msgid "archived" msgstr "archiviert" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "Archiviert" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "Coder" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "{0} einklappen" @@ -1743,9 +1744,9 @@ msgstr "Avatare konnten nicht aktualisiert werden" msgid "Couldn't update messaging settings" msgstr "Messaging-Einstellungen konnten nicht aktualisiert werden" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Erstellen" @@ -1902,14 +1903,14 @@ msgstr "Standardbereich" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Löschen" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "{0} löschen" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Erweitern" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "{0} ausklappen" @@ -2791,7 +2792,7 @@ msgstr "Lokales Docker" msgid "Local Server Settings" msgstr "Einstellungen des lokalen Servers" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Abmelden" @@ -2974,7 +2975,7 @@ msgstr "Minimal" msgid "Minimize" msgstr "Minimieren" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "Bots minimieren" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Öffnen" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "{0} öffnen" @@ -3416,7 +3417,7 @@ msgstr "Im Browser öffnen" msgid "Open in full window" msgstr "In vollständigem Fenster öffnen" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Navigation öffnen" @@ -3931,7 +3932,7 @@ msgstr "Wird zurückgesetzt…" msgid "Restart to update" msgstr "Zum Aktualisieren neu starten" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Wiederherstellen" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Suche…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "{0} auswählen" @@ -4202,6 +4203,7 @@ msgstr "Stimme einrichten" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Einstellungen" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "Alle {0} anzeigen" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "Bots anzeigen" @@ -4832,7 +4835,7 @@ msgstr "Hochladen" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Nutzung" diff --git a/apps/web/src/locales/en/messages.po b/apps/web/src/locales/en/messages.po index 42b0d56..c0bc4f6 100644 --- a/apps/web/src/locales/en/messages.po +++ b/apps/web/src/locales/en/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (unread)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "{0}, {label}" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "{0}, 1:1 conversation" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "{0}, group conversation" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "{0}, main conversation" @@ -339,6 +339,7 @@ msgstr "Action confirmations" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "Actions for {0}" @@ -354,7 +355,7 @@ msgstr "Active" msgid "Active model" msgstr "Active model" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Activity" @@ -647,7 +648,7 @@ msgstr "Archive" msgid "archived" msgstr "archived" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "Archived" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "Coder" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "Collapse {0}" @@ -1743,9 +1744,9 @@ msgstr "Couldn't update avatars" msgid "Couldn't update messaging settings" msgstr "Couldn't update messaging settings" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Create" @@ -1902,14 +1903,14 @@ msgstr "Default scope" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Delete" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "Delete {0}" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Expand" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "Expand {0}" @@ -2791,7 +2792,7 @@ msgstr "Local Docker" msgid "Local Server Settings" msgstr "Local Server Settings" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Log out" @@ -2974,7 +2975,7 @@ msgstr "Minimal" msgid "Minimize" msgstr "Minimize" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "Minimize bots" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Open" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "Open {0}" @@ -3416,7 +3417,7 @@ msgstr "Open in browser" msgid "Open in full window" msgstr "Open in full window" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Open navigation" @@ -3931,7 +3932,7 @@ msgstr "Resetting…" msgid "Restart to update" msgstr "Restart to update" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Restore" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Searching…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "Select {0}" @@ -4202,6 +4203,7 @@ msgstr "Set up voice" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Settings" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "Show all {0}" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "Show bots" @@ -4832,7 +4835,7 @@ msgstr "Upload" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Usage" diff --git a/apps/web/src/locales/es/messages.po b/apps/web/src/locales/es/messages.po index cee9313..00712ca 100644 --- a/apps/web/src/locales/es/messages.po +++ b/apps/web/src/locales/es/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (sin leer)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "Confirmaciones de acción" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "Acciones para {0}" @@ -354,7 +355,7 @@ msgstr "Activo" msgid "Active model" msgstr "Modelo activo" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Actividad" @@ -647,7 +648,7 @@ msgstr "Archivar" msgid "archived" msgstr "archivado" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "Archivado" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "Contraer {0}" @@ -1743,9 +1744,9 @@ msgstr "No se pudieron actualizar los avatares" msgid "Couldn't update messaging settings" msgstr "No se pudo actualizar la configuración de mensajería" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Crear" @@ -1902,14 +1903,14 @@ msgstr "Alcance predeterminado" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Eliminar" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "Eliminar {0}" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Expandir" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "Expandir {0}" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Cerrar sesión" @@ -2974,7 +2975,7 @@ msgstr "Mínimo" msgid "Minimize" msgstr "Minimizar" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Abrir" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "Abrir {0}" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "Abrir en ventana completa" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Abrir navegación" @@ -3931,7 +3932,7 @@ msgstr "Restableciendo…" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Restaurar" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Buscando…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Configuración" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "Subir" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Uso" diff --git a/apps/web/src/locales/hi/messages.po b/apps/web/src/locales/hi/messages.po index 38a2327..43975aa 100644 --- a/apps/web/src/locales/hi/messages.po +++ b/apps/web/src/locales/hi/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (अपठित)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "कार्रवाई की पुष्टि" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "{0} के लिए कार्रवाइयां" @@ -354,7 +355,7 @@ msgstr "" msgid "Active model" msgstr "सक्रिय मॉडल" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "गतिविधि" @@ -647,7 +648,7 @@ msgstr "आर्काइव करें" msgid "archived" msgstr "आर्काइव किया गया" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "आर्काइव किया गया" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "" @@ -1743,9 +1744,9 @@ msgstr "" msgid "Couldn't update messaging settings" msgstr "" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "बनाएं" @@ -1902,14 +1903,14 @@ msgstr "डिफ़ॉल्ट स्कोप" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "डिलीट करें" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "{0} डिलीट करें" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "विस्तृत करें" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "लॉग आउट" @@ -2974,7 +2975,7 @@ msgstr "न्यूनतम" msgid "Minimize" msgstr "छोटा करें" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "खोलें" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "पूरी विंडो में खोलें" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "नेविगेशन खोलें" @@ -3931,7 +3932,7 @@ msgstr "रीसेट हो रहा है…" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "बहाल करें" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "खोजा जा रहा है…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "सेटिंग्स" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "अपलोड" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "उपयोग" diff --git a/apps/web/src/locales/ko/messages.po b/apps/web/src/locales/ko/messages.po index 782630e..666b340 100644 --- a/apps/web/src/locales/ko/messages.po +++ b/apps/web/src/locales/ko/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (읽지 않음)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "작업 실행 전 확인" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "{0} 작업 메뉴" @@ -354,7 +355,7 @@ msgstr "활성" msgid "Active model" msgstr "현재 모델" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "활동" @@ -647,7 +648,7 @@ msgstr "보관" msgid "archived" msgstr "보관됨" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "보관됨" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "{0} 접기" @@ -1743,9 +1744,9 @@ msgstr "아바타를 업데이트할 수 없습니다" msgid "Couldn't update messaging settings" msgstr "메시징 설정을 업데이트할 수 없습니다" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "만들기" @@ -1902,14 +1903,14 @@ msgstr "기본 기억 범위" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "삭제" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "{0} 삭제" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "펼치기" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "{0} 펼치기" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "로그아웃" @@ -2974,7 +2975,7 @@ msgstr "최소" msgid "Minimize" msgstr "최소화" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "열기" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "{0} 열기" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "전체 창으로 열기" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "메뉴 열기" @@ -3931,7 +3932,7 @@ msgstr "재설정 중…" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "복원" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "검색 중…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "설정" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "업로드" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "사용량" diff --git a/apps/web/src/locales/pt-BR/messages.po b/apps/web/src/locales/pt-BR/messages.po index c6206ed..c480159 100644 --- a/apps/web/src/locales/pt-BR/messages.po +++ b/apps/web/src/locales/pt-BR/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (não lido)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "Confirmações de ação" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "Ações para {0}" @@ -354,7 +355,7 @@ msgstr "" msgid "Active model" msgstr "Modelo ativo" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Atividade" @@ -647,7 +648,7 @@ msgstr "Arquivar" msgid "archived" msgstr "arquivado" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "Arquivado" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "" @@ -1743,9 +1744,9 @@ msgstr "" msgid "Couldn't update messaging settings" msgstr "" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Criar" @@ -1902,14 +1903,14 @@ msgstr "Escopo padrão" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Excluir" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "Excluir {0}" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Expandir" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Sair" @@ -2974,7 +2975,7 @@ msgstr "Mínimo" msgid "Minimize" msgstr "Minimizar" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Abrir" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "Abrir em janela cheia" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Abrir a navegação" @@ -3931,7 +3932,7 @@ msgstr "Redefinindo…" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Restaurar" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Pesquisando…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Configurações" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "Enviar" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Uso" diff --git a/apps/web/src/locales/ru/messages.po b/apps/web/src/locales/ru/messages.po index bd8417c..ca0c58c 100644 --- a/apps/web/src/locales/ru/messages.po +++ b/apps/web/src/locales/ru/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (непрочитано)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "Подтверждения действий" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "Действия для {0}" @@ -354,7 +355,7 @@ msgstr "Активный" msgid "Active model" msgstr "Активная модель" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Активность" @@ -647,7 +648,7 @@ msgstr "Архивировать" msgid "archived" msgstr "в архиве" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "В архиве" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "Свернуть {0}" @@ -1743,9 +1744,9 @@ msgstr "Не удалось обновить аватары" msgid "Couldn't update messaging settings" msgstr "Не удалось обновить настройки обмена сообщениями." -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Создать" @@ -1902,14 +1903,14 @@ msgstr "Область действия по умолчанию" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Удалить" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "Удалить {0}" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Развернуть" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "Развернуть {0}" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "Настройки локального сервера" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Выйти" @@ -2974,7 +2975,7 @@ msgstr "Минимальный" msgid "Minimize" msgstr "Свернуть" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "Свернуть ботов" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Открыть" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "Открыть {0}" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "Открыть в полном окне" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Открыть навигацию" @@ -3931,7 +3932,7 @@ msgstr "Сброс…" msgid "Restart to update" msgstr "Перезапустить для обновления" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Восстановить" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Поиск…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Настройки" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "Показать ботов" @@ -4832,7 +4835,7 @@ msgstr "Загрузить" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Использование" diff --git a/apps/web/src/locales/tr/messages.po b/apps/web/src/locales/tr/messages.po index debd308..7338f1c 100644 --- a/apps/web/src/locales/tr/messages.po +++ b/apps/web/src/locales/tr/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr " (okunmadı)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "İşlem onayları" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "{0} için işlemler" @@ -354,7 +355,7 @@ msgstr "" msgid "Active model" msgstr "Etkin model" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "Etkinlik" @@ -647,7 +648,7 @@ msgstr "Arşivle" msgid "archived" msgstr "arşivlendi" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "Arşivlendi" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "" @@ -1743,9 +1744,9 @@ msgstr "" msgid "Couldn't update messaging settings" msgstr "" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "Oluştur" @@ -1902,14 +1903,14 @@ msgstr "Varsayılan kapsam" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "Sil" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "{0} sil" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "Genişlet" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "Çıkış yap" @@ -2974,7 +2975,7 @@ msgstr "Minimal" msgid "Minimize" msgstr "Küçült" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "Aç" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "Tam pencerede aç" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "Gezinmeyi aç" @@ -3931,7 +3932,7 @@ msgstr "" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "Geri yükle" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "Aranıyor…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Ayarlar" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "Yükle" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "Kullanım" diff --git a/apps/web/src/locales/zh-CN/messages.po b/apps/web/src/locales/zh-CN/messages.po index 77c630c..b793e4a 100644 --- a/apps/web/src/locales/zh-CN/messages.po +++ b/apps/web/src/locales/zh-CN/messages.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" "X-Generator: @lingui/cli\n" -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid " (unread)" msgstr "(未读)" @@ -126,17 +126,17 @@ msgid "{0}, {label}" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, 1:1 conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, group conversation" msgstr "" #. placeholder {0}: item.chat.name -#: src/pages/Shell.tsx +#: src/pages/shell/roster-rows.tsx msgid "{0}, main conversation" msgstr "" @@ -339,6 +339,7 @@ msgstr "操作确认" #. placeholder {0}: sectionMenu.section.name #: src/pages/BotContextMenu.tsx #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Actions for {0}" msgstr "{0} 的操作" @@ -354,7 +355,7 @@ msgstr "启用" msgid "Active model" msgstr "当前模型" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Activity" msgstr "动态" @@ -647,7 +648,7 @@ msgstr "归档" msgid "archived" msgstr "已归档" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Archived" msgstr "已归档" @@ -1159,7 +1160,7 @@ msgid "Coder" msgstr "" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Collapse {0}" msgstr "折叠 {0}" @@ -1743,9 +1744,9 @@ msgstr "无法更新头像" msgid "Couldn't update messaging settings" msgstr "无法更新消息设置" -#: src/pages/Shell.tsx #: src/pages/shell/bot-panel.tsx #: src/pages/shell/dialogs.tsx +#: src/pages/shell/sidebar-header.tsx msgid "Create" msgstr "创建" @@ -1902,14 +1903,14 @@ msgstr "默认范围" #: src/pages/KnowledgeSection.tsx #: src/pages/McpServersOverlay.tsx #: src/pages/RoutineEditor.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx #: src/pages/shell/dialogs.tsx msgid "Delete" msgstr "删除" #. placeholder {0}: bot.name #. placeholder {0}: group.name -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Delete {0}" msgstr "删除 {0}" @@ -2218,7 +2219,7 @@ msgid "Expand" msgstr "展开" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Expand {0}" msgstr "展开 {0}" @@ -2791,7 +2792,7 @@ msgstr "" msgid "Local Server Settings" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Log out" msgstr "退出登录" @@ -2974,7 +2975,7 @@ msgstr "最低" msgid "Minimize" msgstr "最小化" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Minimize bots" msgstr "" @@ -3396,7 +3397,7 @@ msgid "Open" msgstr "打开" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Open {0}" msgstr "打开 {0}" @@ -3416,7 +3417,7 @@ msgstr "" msgid "Open in full window" msgstr "在完整窗口中打开" -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Open navigation" msgstr "打开导航" @@ -3931,7 +3932,7 @@ msgstr "正在重置…" msgid "Restart to update" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/archived-section.tsx msgid "Restore" msgstr "恢复" @@ -4136,7 +4137,7 @@ msgid "Searching…" msgstr "正在搜索…" #. placeholder {0}: group.title -#: src/pages/Shell.tsx +#: src/pages/shell/sidebar-group-header.tsx msgid "Select {0}" msgstr "" @@ -4202,6 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "设置" @@ -4253,6 +4255,7 @@ msgid "Show all {0}" msgstr "" #: src/pages/Shell.tsx +#: src/pages/shell/sidebar-toggle-buttons.tsx msgid "Show bots" msgstr "" @@ -4832,7 +4835,7 @@ msgstr "上传" #: src/pages/AccountSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/user-menu.tsx msgid "Usage" msgstr "用量" diff --git a/apps/web/src/pages/Shell.tsx b/apps/web/src/pages/Shell.tsx index 57d0ed6..6f81974 100644 --- a/apps/web/src/pages/Shell.tsx +++ b/apps/web/src/pages/Shell.tsx @@ -84,25 +84,13 @@ import { Popover, PopoverContent, PopoverTrigger, - Wordmark, } from "@rakazo/ui-web"; import { ArrowLeft, - Bell, Calendar, - ChevronDown, - Folder, - Gauge, Globe, - GripVertical, LayoutGrid, - Lock, - LogOut, Maximize2, - Menu, - MoreHorizontal, - PanelLeftClose, - PanelLeftOpen, PanelRight, Pencil, Plus, @@ -140,7 +128,7 @@ import { TeachRecordingChrome, TeachStopButton } from "../components/teach/Teach import { useSidebarResize } from "../hooks/useSidebarResize"; import { useWideLayout } from "../hooks/useWideLayout"; import { readActivityMode, writeActivityMode } from "../lib/activity-mode"; -import { needsYouChipLabel, rosterActivitySubtitle, rosterStatusDot } from "../lib/agent-activity"; +import { rosterActivitySubtitle } from "../lib/agent-activity"; import { agentPointerFeed } from "../lib/agent-pointer"; import type { ArtifactTarget } from "../lib/artifact-open"; import { attachmentMaxBytes, uploadAttachment } from "../lib/artifact-upload"; @@ -157,7 +145,6 @@ import { shouldNotifyBrowser, } from "../lib/browser-notifications"; import { loadComputerScreen } from "../lib/computer-screen"; -import { desktopBridge } from "../lib/desktop"; import { scheduleFocusPrompt } from "../lib/focus-prompt"; import { formatBytes } from "../lib/format-bytes"; import { @@ -216,8 +203,9 @@ import { } from "./RoutineEditor"; import type { SettingsSection } from "./SettingsOverlay"; import { SpaceSearchResults } from "./SpaceSearch"; +import { ArchivedSection } from "./shell/archived-section"; import { BotSettings, CreateBotForm } from "./shell/bot-panel"; -import { BotCreatePicker, ConversationBotPicker } from "./shell/bot-picker"; +import { ConversationBotPicker } from "./shell/bot-picker"; import { collapsedSidebarSectionsStorageKey, readCollapsedSidebarSections, @@ -243,15 +231,13 @@ import { } from "./shell/dialogs"; import { MainConversationRow } from "./shell/main-conversation-row"; import { cleanRosterPreview, formatRosterTime, stripSpaceTitlePrefix } from "./shell/roster-format"; -import { - rosterNameClass, - rosterPreviewClass, - rosterRowClass, - rosterTimeClass, - rosterUnreadDotClass, -} from "./shell/roster-row-style"; +import { rosterRowClass } from "./shell/roster-row-style"; +import { ProjectRosterRow, TeamRosterRow } from "./shell/roster-rows"; import type { PendingAttachment } from "./shell/shell-types"; import { FALLBACK_BOT_COLOR } from "./shell/shell-types"; +import { SidebarGroupHeader } from "./shell/sidebar-group-header"; +import { SidebarHeader } from "./shell/sidebar-header"; +import { SidebarToggleButtons } from "./shell/sidebar-toggle-buttons"; import { applyThreadEvent, firstThreadRoute, @@ -259,7 +245,7 @@ import { threadSnapshotSignal, } from "./shell/thread-state"; import { Transcript } from "./shell/transcript"; -import { WindowChrome } from "./WindowChrome"; +import { UserMenu } from "./shell/user-menu"; const BotContextMenu = lazyWithRecovery("BotContextMenu", () => import("./BotContextMenu").then((module) => ({ default: module.BotContextMenu })), @@ -326,7 +312,7 @@ function voiceStatusRefreshTimeout(): Promise { export type NavPillar = "heute" | "team" | "projekte"; -import { ProjectDragGrip, SortableGroup } from "../components/SortableGroup"; +import { SortableGroup } from "../components/SortableGroup"; export function ShellPage() { const { t } = useLingui(); @@ -3384,85 +3370,20 @@ export function ShellPage() { onPointerDown={startResizingLeft} className="absolute -right-2 top-0 bottom-0 w-4 cursor-col-resize z-50 hidden md:block" /> -
- -
- -
-
- - - - - + - - {/* Unmount with the state change so the panel it opens never coexists with the menu. */} - {createMenuOpen ? ( - - { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - setPanel("create"); - }} - onOpenBot={(id) => { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - navigate(`/app/${id}`); - }} - onCreateGroup={() => { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - setPanel("create-group"); - }} - onCreateSpace={() => { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - openNewSpaceDialog("space"); - }} - onShowGroupInfo={() => { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - setPickerInfoTopic("group"); - }} - onShowSpaceInfo={() => { - setCreateMenuOpen(false); - setMobileSidebarOpen(false); - setPickerInfoTopic("space"); - }} - /> - - ) : null} - -
-
+ setMobileSidebarOpen(false)} + bots={bots} + onCreateBot={() => setPanel("create")} + onOpenBot={(id) => navigate(`/app/${id}`)} + onCreateGroup={() => setPanel("create-group")} + onCreateSpace={() => openNewSpaceDialog("space")} + onShowGroupInfo={() => setPickerInfoTopic("group")} + onShowSpaceInfo={() => setPickerInfoTopic("space")} + /> {group.title ? ( -
- - {group.canDeleteSpace ? ( - - ) : null} -
+ openSpaceChat(spaceId, "/onboarding")} + onToggle={toggleSidebarSection} + sectionMenuAnchor={sectionMenuAnchor} + onSectionMenu={setSectionMenu} + spaceMenuAnchor={spaceMenuAnchor} + onSpaceMenu={setSpaceMenu} + /> ) : null} {!collapsed && group.bots .slice(0, expandedTeamGroups[group.key] ? undefined : 4) .map((item) => ( - + activeSpaceId={bootstrapMe?.spaceId} + menuAnchor={botMenuAnchor} + onMenu={setBotMenu} + /> ))} {!collapsed && group.bots.length > 4 && ( - {group.canDeleteSpace ? ( - - ) : null} - + void startProject(spaceId)} + onToggle={toggleSidebarSection} + sectionMenuAnchor={sectionMenuAnchor} + onSectionMenu={setSectionMenu} + spaceMenuAnchor={spaceMenuAnchor} + onSpaceMenu={setSpaceMenu} + /> ) : null} {!collapsed && group.startSpaceId ? (
@@ -4003,17 +3658,15 @@ export function ShellPage() { ) : null} {!collapsed && group.bots.map((item) => ( - + activeSpaceId={bootstrapMe?.spaceId} + menuAnchor={botMenuAnchor} + onMenu={setBotMenu} + /> ))}
@@ -4099,154 +3691,46 @@ export function ShellPage() { )} {archivedBots.length + archivedGroups.length > 0 && !showSpaceSearch ? ( -
- - {archivedOpen ? ( - <> - {archivedBots.map((bot) => ( -
- - - {bot.name} - - - -
- ))} - {archivedGroups.map((group) => ( -
- - - {group.name} - - - -
- ))} - - ) : null} -
+ setArchivedOpen((open) => !open)} + onRestoreBot={(bot) => + void rpc.bots.restore({ botId: bot.id }).then(() => refreshBots(true)) + } + onRestoreGroup={(group) => + void rpc.groups.restore({ groupId: group.id }).then(() => refreshBots(true)) + } + onDeleteBot={setDeleteTarget} + onDeleteGroup={setDeleteGroupTarget} + /> ) : null} - - - - {initials} - - {userName} - - {menuOpen ? ( - - - - - - ) : null} - + openSettings("general")} + onOpenUsage={() => { + void rpc.usage + .summary() + .then(setUsage) + .catch(() => undefined); + openSettings("usage"); + }} + onLogOut={() => + // This browser stops receiving the account's pushes once it signs out. + void disableWebPush() + .catch(() => undefined) + .then(() => authClient.signOut()) + .then(() => { + clearSpaceSelection(); + navigate("/"); + }) + } + /> - + setMobileSidebarOpen(true)} + /> @@ -4362,30 +3828,11 @@ export function ShellPage() { <>
- {/* Collapsed bots sidebar: this header is the leading edge for window chrome. */} - {botsSidebarCollapsed && desktopBridge() ? : null} - - + setMobileSidebarOpen(true)} + /> {inGroup && projectSessionKey ? ( + {open ? ( + <> + {bots.map((bot) => ( +
+ + + {bot.name} + + + +
+ ))} + {groups.map((group) => ( +
+ + + {group.name} + + + +
+ ))} + + ) : null} +
+ ); +} diff --git a/apps/web/src/pages/shell/roster-rows.tsx b/apps/web/src/pages/shell/roster-rows.tsx new file mode 100644 index 0000000..6f7e3c5 --- /dev/null +++ b/apps/web/src/pages/shell/roster-rows.tsx @@ -0,0 +1,250 @@ +import { Trans, useLingui } from "@lingui/react/macro"; +import type { SpaceBot, SpaceGroup } from "@rakazo/contracts"; +import { BotAvatar, GroupAvatar } from "@rakazo/ui-web"; +import type { RefObject } from "react"; +import { + needsYouChipLabel, + rosterActivitySubtitle, + rosterStatusDot, +} from "../../lib/agent-activity"; +import { localizedPreview } from "../../lib/onboarding-copy"; +import type { ContextMenuPosition } from "../BotContextMenu"; +import { cleanRosterPreview, formatRosterTime } from "./roster-format"; +import { + rosterNameClass, + rosterPreviewClass, + rosterRowClass, + rosterTimeClass, + rosterUnreadDotClass, +} from "./roster-row-style"; + +export type SidebarChatItem = { kind: "bot"; chat: SpaceBot } | { kind: "group"; chat: SpaceGroup }; + +export type BotMenuRequest = { + kind: "bot" | "group"; + id: string; + position: ContextMenuPosition; +}; + +/** A bot in the conversations section: reorderable by drag or Alt+Arrow within its group. */ +export function TeamRosterRow({ + item, + groupBotIds, + draggedBotId, + onDraggedBotIdChange, + onReorder, + selected, + onOpen, + activeSpaceId, + menuAnchor, + onMenu, +}: { + item: Extract; + groupBotIds: string[]; + draggedBotId: string | null; + onDraggedBotIdChange: (botId: string | null) => void; + onReorder: (sourceId: string, targetId: string, groupBotIds: string[]) => void; + selected: boolean; + onOpen: () => void; + activeSpaceId: string | undefined; + menuAnchor: RefObject; + onMenu: (menu: BotMenuRequest) => void; +}) { + const { t } = useLingui(); + return ( + + ); +} + +/** A conversation in the projects section; a project's main conversation has no chat actions. */ +export function ProjectRosterRow({ + item, + selected, + onOpen, + activeSpaceId, + menuAnchor, + onMenu, +}: { + item: SidebarChatItem; + selected: boolean; + onOpen: () => void; + activeSpaceId: string | undefined; + menuAnchor: RefObject; + onMenu: (menu: BotMenuRequest) => void; +}) { + const { t } = useLingui(); + return ( + + ); +} diff --git a/apps/web/src/pages/shell/sidebar-group-header.tsx b/apps/web/src/pages/shell/sidebar-group-header.tsx new file mode 100644 index 0000000..dc44178 --- /dev/null +++ b/apps/web/src/pages/shell/sidebar-group-header.tsx @@ -0,0 +1,161 @@ +import { useLingui } from "@lingui/react/macro"; +import type { BotSection, Space } from "@rakazo/contracts"; +import { Button } from "@rakazo/ui-web"; +import { ChevronDown, Folder, GripVertical, Lock, MoreHorizontal } from "lucide-react"; +import type { RefObject } from "react"; +import { ProjectDragGrip } from "../../components/SortableGroup"; +import type { ContextMenuPosition } from "../BotContextMenu"; + +export type SidebarGroupHeaderGroup = { + key: string; + title: string | null; + sectionId: string | null; + spaceId: string; + spaceName: string; + canDeleteSpace: boolean; + emptySpaceId: string | undefined; + showLock: boolean; +}; + +export type SpaceMenuRequest = { id: string; position: ContextMenuPosition }; + +export type SectionMenuRequest = { + section: BotSection; + spaceId: string; + position: ContextMenuPosition; +}; + +/** + * Collapsible title of a sidebar group. Project groups add a drag grip, show a lock for other + * spaces and select an empty space instead of opening it. + */ +export function SidebarGroupHeader({ + variant, + group, + collapsed, + activeSpaceId, + botSections, + spaces, + onOpenEmptySpace, + onToggle, + sectionMenuAnchor, + onSectionMenu, + spaceMenuAnchor, + onSpaceMenu, +}: { + variant: "conversation" | "project"; + group: SidebarGroupHeaderGroup; + collapsed: boolean; + activeSpaceId: string | undefined; + botSections: BotSection[]; + spaces: Space[]; + onOpenEmptySpace: (spaceId: string) => void; + onToggle: (key: string) => void; + sectionMenuAnchor: RefObject; + onSectionMenu: (menu: SectionMenuRequest) => void; + spaceMenuAnchor: RefObject; + onSpaceMenu: (menu: SpaceMenuRequest) => void; +}) { + const { t } = useLingui(); + const project = variant === "project"; + return ( +
+ {project ? ( + // Drag grip — positioned to the left of the title text + + + + ) : null} + + {group.canDeleteSpace ? ( + + ) : null} +
+ ); +} diff --git a/apps/web/src/pages/shell/sidebar-header.tsx b/apps/web/src/pages/shell/sidebar-header.tsx new file mode 100644 index 0000000..61d3e40 --- /dev/null +++ b/apps/web/src/pages/shell/sidebar-header.tsx @@ -0,0 +1,118 @@ +import { useLingui } from "@lingui/react/macro"; +import type { Bot } from "@rakazo/contracts"; +import { Popover, PopoverContent, PopoverTrigger, Wordmark } from "@rakazo/ui-web"; +import { Bell } from "lucide-react"; +import { WindowChrome } from "../WindowChrome"; +import { BotCreatePicker } from "./bot-picker"; + +/** Window chrome, wordmark, the activity toggle and the create menu atop the sidebar. */ +export function SidebarHeader({ + activityMode, + onToggleActivityMode, + createMenuOpen, + onCreateMenuOpenChange, + onCloseMobileSidebar, + bots, + onCreateBot, + onOpenBot, + onCreateGroup, + onCreateSpace, + onShowGroupInfo, + onShowSpaceInfo, +}: { + activityMode: boolean; + onToggleActivityMode: () => void; + createMenuOpen: boolean; + onCreateMenuOpenChange: (open: boolean) => void; + onCloseMobileSidebar: () => void; + bots: Bot[]; + onCreateBot: () => void; + onOpenBot: (id: string) => void; + onCreateGroup: () => void; + onCreateSpace: () => void; + onShowGroupInfo: () => void; + onShowSpaceInfo: () => void; +}) { + const { t } = useLingui(); + return ( +
+ +
+ +
+
+ + + + + + + + {/* Unmount with the state change so the panel it opens never coexists with the menu. */} + {createMenuOpen ? ( + + { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onCreateBot(); + }} + onOpenBot={(id) => { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onOpenBot(id); + }} + onCreateGroup={() => { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onCreateGroup(); + }} + onCreateSpace={() => { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onCreateSpace(); + }} + onShowGroupInfo={() => { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onShowGroupInfo(); + }} + onShowSpaceInfo={() => { + onCreateMenuOpenChange(false); + onCloseMobileSidebar(); + onShowSpaceInfo(); + }} + /> + + ) : null} + +
+
+ ); +} diff --git a/apps/web/src/pages/shell/sidebar-toggle-buttons.tsx b/apps/web/src/pages/shell/sidebar-toggle-buttons.tsx new file mode 100644 index 0000000..fdbd5f8 --- /dev/null +++ b/apps/web/src/pages/shell/sidebar-toggle-buttons.tsx @@ -0,0 +1,45 @@ +import { useLingui } from "@lingui/react/macro"; +import { Menu, PanelLeftClose, PanelLeftOpen } from "lucide-react"; +import { desktopBridge } from "../../lib/desktop"; +import { WindowChrome } from "../WindowChrome"; + +/** Leading controls of a main header: open the mobile navigation or collapse the bots sidebar. */ +export function SidebarToggleButtons({ + collapsed, + onCollapsedChange, + onOpenNavigation, +}: { + collapsed: boolean; + onCollapsedChange: (collapsed: boolean) => void; + onOpenNavigation: () => void; +}) { + const { t } = useLingui(); + return ( + <> + {/* Collapsed bots sidebar: this header is the leading edge for window chrome. */} + {collapsed && desktopBridge() ? : null} + + + + ); +} diff --git a/apps/web/src/pages/shell/user-menu.tsx b/apps/web/src/pages/shell/user-menu.tsx new file mode 100644 index 0000000..2d5e19f --- /dev/null +++ b/apps/web/src/pages/shell/user-menu.tsx @@ -0,0 +1,73 @@ +import { Trans, useLingui } from "@lingui/react/macro"; +import { Button, Popover, PopoverContent, PopoverTrigger } from "@rakazo/ui-web"; +import { Gauge, LogOut, Settings } from "lucide-react"; + +/** The account button at the foot of the sidebar and its menu. */ +export function UserMenu({ + open, + onOpenChange, + initials, + userName, + onOpenSettings, + onOpenUsage, + onLogOut, +}: { + open: boolean; + onOpenChange: (open: boolean) => void; + initials: string; + userName: string; + onOpenSettings: () => void; + onOpenUsage: () => void; + onLogOut: () => void; +}) { + const { t } = useLingui(); + return ( + + + + {initials} + + {userName} + + {open ? ( + + + + + + ) : null} + + ); +} From 0ab148ba039986c8e5cc8ce74195ca8380cd056b Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 10:06:02 +0000 Subject: [PATCH 2/3] refactor(web): extract ShellPage side panel and computer JSX into components The side panel header, the computer preview and the full-window computer overlay were large inline blocks in ShellPage's render. Move-only: they are now SidePanelHeader, ComputerPanelPreview and FullscreenComputerOverlay in pages/shell, each with explicit props. The booting screen, the routine list and the create-bot modal stay where they are. DOM, classNames, test ids, aria attributes, handlers and messages are unchanged; the catalogs only update their file references. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u --- apps/web/src/locales/de/messages.po | 29 +- apps/web/src/locales/en/messages.po | 29 +- apps/web/src/locales/es/messages.po | 29 +- apps/web/src/locales/hi/messages.po | 29 +- apps/web/src/locales/ko/messages.po | 29 +- apps/web/src/locales/pt-BR/messages.po | 29 +- apps/web/src/locales/ru/messages.po | 29 +- apps/web/src/locales/tr/messages.po | 29 +- apps/web/src/locales/zh-CN/messages.po | 29 +- apps/web/src/pages/Shell.tsx | 301 +++--------------- .../pages/shell/computer-panel-preview.tsx | 96 ++++++ .../shell/fullscreen-computer-overlay.tsx | 196 ++++++++++++ .../web/src/pages/shell/side-panel-header.tsx | 73 +++++ 13 files changed, 542 insertions(+), 385 deletions(-) create mode 100644 apps/web/src/pages/shell/computer-panel-preview.tsx create mode 100644 apps/web/src/pages/shell/fullscreen-computer-overlay.tsx create mode 100644 apps/web/src/pages/shell/side-panel-header.tsx diff --git a/apps/web/src/locales/de/messages.po b/apps/web/src/locales/de/messages.po index f1456e6..0d56bfe 100644 --- a/apps/web/src/locales/de/messages.po +++ b/apps/web/src/locales/de/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "{0}, Hauptunterhaltung" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "{0}s Bildschirm" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Bot-Bildschirm" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Bot-Bildschirmvorschau" @@ -1089,7 +1089,7 @@ msgstr "Schließen" msgid "Close chart" msgstr "Diagramm schließen" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Computer schließen" @@ -1129,7 +1129,7 @@ msgstr "Navigation schließen" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Panel schließen" @@ -1202,7 +1202,7 @@ msgstr "Computer" msgid "Computer failed to boot" msgstr "Computer konnte nicht gestartet werden" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "Computer ist im Ruhezustand" @@ -2401,6 +2401,7 @@ msgstr "Ziele für dieses Projekt, unabhängig von Chat-Nachrichten. Unterhaltun #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Gruppe" @@ -3098,7 +3099,7 @@ msgstr "Braucht dich" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "Braucht dich" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "Gelesen werden nur Datei- und Ordnernamen." #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Öffnen" @@ -3413,7 +3414,7 @@ msgstr "Unterhaltung öffnen" msgid "Open in browser" msgstr "Im Browser öffnen" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "In vollständigem Fenster öffnen" @@ -4202,7 +4203,7 @@ msgstr "Stimme einrichten" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Einstellungen" @@ -4259,7 +4260,7 @@ msgstr "Alle {0} anzeigen" msgid "Show bots" msgstr "Bots anzeigen" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "Computer anzeigen" @@ -4275,7 +4276,7 @@ msgstr "Mehr anzeigen" msgid "Show password" msgstr "Passwort anzeigen" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Einstellungen anzeigen" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Schritte" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Stoppen" @@ -5091,7 +5092,7 @@ msgstr "Du kannst diesen Tab schließen, wenn du nicht automatisch weitergeleite msgid "You can close this window." msgstr "Du kannst dieses Fenster schließen." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "Du hast die Kontrolle" diff --git a/apps/web/src/locales/en/messages.po b/apps/web/src/locales/en/messages.po index c0bc4f6..f049496 100644 --- a/apps/web/src/locales/en/messages.po +++ b/apps/web/src/locales/en/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "{0}, main conversation" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "{0}'s screen" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Bot screen" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Bot screen preview" @@ -1089,7 +1089,7 @@ msgstr "Close" msgid "Close chart" msgstr "Close chart" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Close computer" @@ -1129,7 +1129,7 @@ msgstr "Close navigation" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Close panel" @@ -1202,7 +1202,7 @@ msgstr "Computer" msgid "Computer failed to boot" msgstr "Computer failed to boot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "Computer is asleep" @@ -2401,6 +2401,7 @@ msgstr "Goals for this project, separate from chat messages. Conversations are b #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Group" @@ -3098,7 +3099,7 @@ msgstr "Needs you" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "Needs you" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "Only file and folder names are read." #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Open" @@ -3413,7 +3414,7 @@ msgstr "Open conversation" msgid "Open in browser" msgstr "Open in browser" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "Open in full window" @@ -4202,7 +4203,7 @@ msgstr "Set up voice" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Settings" @@ -4259,7 +4260,7 @@ msgstr "Show all {0}" msgid "Show bots" msgstr "Show bots" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "Show computer" @@ -4275,7 +4276,7 @@ msgstr "Show more" msgid "Show password" msgstr "Show password" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Show settings" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Steps" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Stop" @@ -5091,7 +5092,7 @@ msgstr "You can close this tab if it does not redirect automatically." msgid "You can close this window." msgstr "You can close this window." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "You have control" diff --git a/apps/web/src/locales/es/messages.po b/apps/web/src/locales/es/messages.po index 00712ca..ca34ba3 100644 --- a/apps/web/src/locales/es/messages.po +++ b/apps/web/src/locales/es/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "Pantalla de {0}" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Pantalla del bot" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Vista previa de la pantalla del bot" @@ -1089,7 +1089,7 @@ msgstr "Cerrar" msgid "Close chart" msgstr "Cerrar gráfico" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Cerrar computadora" @@ -1129,7 +1129,7 @@ msgstr "Cerrar navegación" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Cerrar panel" @@ -1202,7 +1202,7 @@ msgstr "Computadora" msgid "Computer failed to boot" msgstr "La computadora no pudo iniciarse" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "La computadora está en reposo" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Grupo" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Abrir" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "Abrir en ventana completa" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Configuración" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "Mostrar más" msgid "Show password" msgstr "Mostrar contraseña" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Mostrar configuración" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Pasos" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Detener" @@ -5091,7 +5092,7 @@ msgstr "Puedes cerrar esta pestaña si no redirige automáticamente." msgid "You can close this window." msgstr "Puedes cerrar esta ventana." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "Tienes el control" diff --git a/apps/web/src/locales/hi/messages.po b/apps/web/src/locales/hi/messages.po index 43975aa..9bca37f 100644 --- a/apps/web/src/locales/hi/messages.po +++ b/apps/web/src/locales/hi/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "" @@ -813,11 +813,11 @@ msgstr "बॉट" msgid "Bot" msgstr "बॉट" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "बॉट स्क्रीन" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "बॉट स्क्रीन प्रीव्यू" @@ -1089,7 +1089,7 @@ msgstr "बंद करें" msgid "Close chart" msgstr "चार्ट बंद करें" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "कंप्यूटर बंद करें" @@ -1129,7 +1129,7 @@ msgstr "नेविगेशन बंद करें" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "पैनल बंद करें" @@ -1202,7 +1202,7 @@ msgstr "कंप्यूटर" msgid "Computer failed to boot" msgstr "कंप्यूटर शुरू नहीं हो सका" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "कंप्यूटर निष्क्रिय है" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "समूह" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "खोलें" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "पूरी विंडो में खोलें" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "सेटिंग्स" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "और दिखाएँ" msgid "Show password" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "सेटिंग्स दिखाएं" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "चरण" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "रोकें" @@ -5091,7 +5092,7 @@ msgstr "अगर यह अपने आप रीडायरेक्ट न msgid "You can close this window." msgstr "आप यह विंडो बंद कर सकते हैं।" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "नियंत्रण आपके पास है" diff --git a/apps/web/src/locales/ko/messages.po b/apps/web/src/locales/ko/messages.po index 666b340..43fcc95 100644 --- a/apps/web/src/locales/ko/messages.po +++ b/apps/web/src/locales/ko/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "{0}의 화면" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "봇" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Bot 화면" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Bot 화면 미리보기" @@ -1089,7 +1089,7 @@ msgstr "닫기" msgid "Close chart" msgstr "차트 닫기" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "컴퓨터 닫기" @@ -1129,7 +1129,7 @@ msgstr "메뉴 닫기" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "패널 닫기" @@ -1202,7 +1202,7 @@ msgstr "컴퓨터" msgid "Computer failed to boot" msgstr "컴퓨터를 시작하지 못했습니다" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "컴퓨터가 절전 상태입니다" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "그룹" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "열기" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "전체 창으로 열기" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "설정" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "더 보기" msgid "Show password" msgstr "비밀번호 표시" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "설정 보기" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "실행 단계" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "중지" @@ -5091,7 +5092,7 @@ msgstr "자동으로 이동하지 않으면 이 탭을 닫아도 됩니다." msgid "You can close this window." msgstr "이 창을 닫아도 됩니다." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "직접 조작 중" diff --git a/apps/web/src/locales/pt-BR/messages.po b/apps/web/src/locales/pt-BR/messages.po index c480159..e658a97 100644 --- a/apps/web/src/locales/pt-BR/messages.po +++ b/apps/web/src/locales/pt-BR/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Tela do bot" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Pré-visualização da tela" @@ -1089,7 +1089,7 @@ msgstr "Fechar" msgid "Close chart" msgstr "Fechar gráfico" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Fechar computador" @@ -1129,7 +1129,7 @@ msgstr "Fechar navegação" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Fechar painel" @@ -1202,7 +1202,7 @@ msgstr "Computador" msgid "Computer failed to boot" msgstr "Falha ao inicializar o computador" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "O computador está dormindo" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Grupo" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Abrir" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "Abrir em janela cheia" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Configurações" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "Mostrar mais" msgid "Show password" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Mostrar configurações" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Passos" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Parar" @@ -5091,7 +5092,7 @@ msgstr "Você pode fechar esta guia se ela não for redirecionada automaticament msgid "You can close this window." msgstr "Você pode fechar esta janela." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "Você tem o controle" diff --git a/apps/web/src/locales/ru/messages.po b/apps/web/src/locales/ru/messages.po index ca0c58c..350327c 100644 --- a/apps/web/src/locales/ru/messages.po +++ b/apps/web/src/locales/ru/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "Экран {0}" @@ -813,11 +813,11 @@ msgstr "Бот" msgid "Bot" msgstr "Бот" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Экран бота" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Предварительный просмотр экрана бота" @@ -1089,7 +1089,7 @@ msgstr "Закрыть" msgid "Close chart" msgstr "Закрыть график" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Закрыть компьютер" @@ -1129,7 +1129,7 @@ msgstr "Закрыть навигацию" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Закрыть панель" @@ -1202,7 +1202,7 @@ msgstr "Компьютер" msgid "Computer failed to boot" msgstr "Компьютер не смог загрузиться" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "Компьютер спит" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Группа" @@ -3098,7 +3099,7 @@ msgstr "Требуется ваше участие" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "Требуется ваше участие" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Открыть" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "Открыть в полном окне" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Настройки" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "Показать ботов" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "Показать ещё" msgid "Show password" msgstr "Показать пароль" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Показать настройки" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Шаги" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Остановить" @@ -5091,7 +5092,7 @@ msgstr "Вы можете закрыть эту вкладку, если она msgid "You can close this window." msgstr "Вы можете закрыть это окно." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "Вы управляете" diff --git a/apps/web/src/locales/tr/messages.po b/apps/web/src/locales/tr/messages.po index 7338f1c..7df0d8a 100644 --- a/apps/web/src/locales/tr/messages.po +++ b/apps/web/src/locales/tr/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Bot ekranı" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Bot ekranı önizlemesi" @@ -1089,7 +1089,7 @@ msgstr "Kapat" msgid "Close chart" msgstr "Grafiği kapat" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "Bilgisayarı kapat" @@ -1129,7 +1129,7 @@ msgstr "Gezinmeyi kapat" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "Paneli kapat" @@ -1202,7 +1202,7 @@ msgstr "Bilgisayar" msgid "Computer failed to boot" msgstr "Bilgisayar başlatılamadı" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "Bilgisayar uykuda" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "Grup" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "Aç" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "Tam pencerede aç" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "Ayarlar" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "Daha fazla göster" msgid "Show password" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "Ayarları göster" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "Adımlar" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "Durdur" @@ -5091,7 +5092,7 @@ msgstr "Otomatik yönlendirilmezsen bu sekmeyi kapatabilirsin." msgid "You can close this window." msgstr "Bu pencereyi kapatabilirsin." -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "Kontrol sende" diff --git a/apps/web/src/locales/zh-CN/messages.po b/apps/web/src/locales/zh-CN/messages.po index b793e4a..c5c8c9c 100644 --- a/apps/web/src/locales/zh-CN/messages.po +++ b/apps/web/src/locales/zh-CN/messages.po @@ -141,7 +141,7 @@ msgid "{0}, main conversation" msgstr "" #. placeholder {0}: active.name -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "{0}'s screen" msgstr "" @@ -813,11 +813,11 @@ msgstr "Bot" msgid "Bot" msgstr "Bot" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Bot screen" msgstr "Bot 屏幕" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Bot screen preview" msgstr "Bot 屏幕预览" @@ -1089,7 +1089,7 @@ msgstr "关闭" msgid "Close chart" msgstr "关闭图表" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Close computer" msgstr "关闭电脑" @@ -1129,7 +1129,7 @@ msgstr "关闭导航" #: src/components/ArtifactPane.tsx #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Close panel" msgstr "关闭面板" @@ -1202,7 +1202,7 @@ msgstr "电脑" msgid "Computer failed to boot" msgstr "电脑启动失败" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "Computer is asleep" msgstr "电脑已休眠" @@ -2401,6 +2401,7 @@ msgstr "" #: src/components/stage/OoStage.tsx #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Group" msgstr "群组" @@ -3098,7 +3099,7 @@ msgstr "" #: src/components/MainInbox.tsx #: src/pages/ActivityList.tsx #: src/pages/HeuteBrief.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Needs you" msgstr "" @@ -3392,7 +3393,7 @@ msgid "Only file and folder names are read." msgstr "" #: src/pages/ScratchpadSection.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open" msgstr "打开" @@ -3413,7 +3414,7 @@ msgstr "" msgid "Open in browser" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/computer-panel-preview.tsx msgid "Open in full window" msgstr "在完整窗口中打开" @@ -4202,7 +4203,7 @@ msgstr "" #: src/pages/MessagingSettingsOverlay.tsx #: src/pages/SettingsOverlay.tsx -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx #: src/pages/shell/user-menu.tsx msgid "Settings" msgstr "设置" @@ -4259,7 +4260,7 @@ msgstr "" msgid "Show bots" msgstr "" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show computer" msgstr "" @@ -4275,7 +4276,7 @@ msgstr "显示更多" msgid "Show password" msgstr "显示密码" -#: src/pages/Shell.tsx +#: src/pages/shell/side-panel-header.tsx msgid "Show settings" msgstr "显示设置" @@ -4463,8 +4464,8 @@ msgid "Steps" msgstr "步骤" #: src/components/browser/InAppBrowser.tsx -#: src/pages/Shell.tsx #: src/pages/shell/composer.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx #: src/pages/shell/transcript.tsx msgid "Stop" msgstr "停止" @@ -5091,7 +5092,7 @@ msgstr "如果没有自动跳转,可以关闭此标签页。" msgid "You can close this window." msgstr "可以关闭此窗口。" -#: src/pages/Shell.tsx +#: src/pages/shell/fullscreen-computer-overlay.tsx msgid "You have control" msgstr "你已接管" diff --git a/apps/web/src/pages/Shell.tsx b/apps/web/src/pages/Shell.tsx index 6f81974..2f9b136 100644 --- a/apps/web/src/pages/Shell.tsx +++ b/apps/web/src/pages/Shell.tsx @@ -90,7 +90,6 @@ import { Calendar, Globe, LayoutGrid, - Maximize2, PanelRight, Pencil, Plus, @@ -113,18 +112,9 @@ import { createPortal } from "react-dom"; import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { ArtifactPane } from "../components/ArtifactPane"; import { InAppBrowser } from "../components/browser/InAppBrowser"; -import { ComputerMaintenanceActions } from "../components/ComputerMaintenanceActions"; -import { - ComputersUnavailableHint, - computersAreUnavailable, -} from "../components/ComputersUnavailableHint"; import { ComputerUpdateProgress } from "../components/ComputerUpdateProgress"; -import { AgentCursor } from "../components/computer/AgentCursor"; import { MainInbox } from "../components/MainInbox"; import { OoGroupStage, OoStage } from "../components/stage/OoStage"; -import { TeachCaptureOverlay } from "../components/teach/TeachCaptureOverlay"; -import { TeachComputerOverlayControl } from "../components/teach/TeachComputerOverlay"; -import { TeachRecordingChrome, TeachStopButton } from "../components/teach/TeachRecordingChrome"; import { useSidebarResize } from "../hooks/useSidebarResize"; import { useWideLayout } from "../hooks/useWideLayout"; import { readActivityMode, writeActivityMode } from "../lib/activity-mode"; @@ -174,7 +164,6 @@ import { clearActiveThreadRuns, computerPanelAutoBoot, computerPanelAutoUsesBoot, - computerPanelNeedsMaintenance, computerTakeoverBlocked, isComputerStatusEvent, prependThreadMessagePage, @@ -212,14 +201,8 @@ import { } from "./shell/collapsed-sidebar-sections"; import { CommandPalette, isCommandPaletteHotkey } from "./shell/command-palette"; import { Composer } from "./shell/composer"; -import { - ComputerReleaseActions, - computerLabel, - computerPlaceholder, - DesktopKindEmptyState, - embeddableScreenUrl, - screenIframeSandbox, -} from "./shell/computer-screen"; +import { ComputerPanelPreview } from "./shell/computer-panel-preview"; +import { embeddableScreenUrl } from "./shell/computer-screen"; import { ClearConversationDialog, DeleteBotDialog, @@ -229,12 +212,14 @@ import { PickerInfoDialog, RenameBotSectionDialog, } from "./shell/dialogs"; +import { FullscreenComputerOverlay } from "./shell/fullscreen-computer-overlay"; import { MainConversationRow } from "./shell/main-conversation-row"; import { cleanRosterPreview, formatRosterTime, stripSpaceTitlePrefix } from "./shell/roster-format"; import { rosterRowClass } from "./shell/roster-row-style"; import { ProjectRosterRow, TeamRosterRow } from "./shell/roster-rows"; import type { PendingAttachment } from "./shell/shell-types"; import { FALLBACK_BOT_COLOR } from "./shell/shell-types"; +import { SidePanelHeader } from "./shell/side-panel-header"; import { SidebarGroupHeader } from "./shell/sidebar-group-header"; import { SidebarHeader } from "./shell/sidebar-header"; import { SidebarToggleButtons } from "./shell/sidebar-toggle-buttons"; @@ -4149,107 +4134,28 @@ export function ShellPage() { panel !== "create" && panel !== "create-group" && panel !== "group-settings" ? ( -
- - {panel === "settings" ? ( - Settings - ) : active ? ( - (computer?.state ?? active.status) - ) : ( - Group - )} - -
- {active && - panel === "computer" && - !computerOpen && - computerPanelNeedsMaintenance(computer?.state, booting) ? ( - { - await refreshThread(active.id); - }} - /> - ) : null} - {active ? ( - - ) : null} - -
-
+ ) : null} {panel === "computer" && active ? (
-
- {computerOpen ? ( -
- Open in full window -
- ) : computer?.kind === "desktop" ? ( - - ) : computer?.state === "running" && embeddedScreenUrl && !computerScreenError ? ( - <> -