Move group conversation start out of Projekte sidebar section

Group chats are not project actions. Start a group conversation is now a
top-level sidebar row between Heute and Projekte; Projekte empty state and
header plus focus on creating projects instead.

Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-09-21 17:13:00 +00:00
parent 2f2f0eb21e
commit ff3e358e27
5 changed files with 70 additions and 13 deletions

View File

@ -12,6 +12,22 @@ async function createBot(page: Page, name: string) {
return createNamedBot(page, name); return createNamedBot(page, name);
} }
test("start group conversation is top-level, not inside Projekte", async ({ page }) => {
const stamp = Date.now();
await signup(page, `group-ia-${stamp}@rakazo.test`, "password12", "Group IA");
await completeOnboarding(page);
await page.goto("/app");
await page.waitForURL(/\/app\/[^/]+$/);
const startGroup = page.getByTestId("start-group-conversation");
await expect(startGroup).toBeVisible();
await expect(page.locator(".sidebar-projekte").getByTestId("start-group-conversation")).toHaveCount(
0,
);
await expect(page.locator(".sidebar-projekte")).toContainText("Projekte");
await expect(page.locator(".sidebar-projekte")).not.toContainText("Start a group conversation");
});
test("create group from + and see two bots in one transcript", async ({ page }, testInfo) => { test("create group from + and see two bots in one transcript", async ({ page }, testInfo) => {
const stamp = Date.now(); const stamp = Date.now();
await signup(page, `group-${stamp}@rakazo.test`, "password12", "Group E2E"); await signup(page, `group-${stamp}@rakazo.test`, "password12", "Group E2E");

View File

@ -477,6 +477,10 @@
"Server URL": "Server-URL", "Server URL": "Server-URL",
"Set up voice to call": "Stimme für Anrufe einrichten", "Set up voice to call": "Stimme für Anrufe einrichten",
"Settings": "Einstellungen", "Settings": "Einstellungen",
"Start a group conversation": "Gruppengespräch starten",
"No projects yet.": "Noch keine Projekte.",
"Create a project": "Projekt erstellen",
"Threads by topic · folders": "Threads nach Thema · Ordner",
"Discover now": "Jetzt entdecken", "Discover now": "Jetzt entdecken",
"Live Trading": "Live Trading", "Live Trading": "Live Trading",
"Close integrations settings": "Integrationen-Einstellungen schließen", "Close integrations settings": "Integrationen-Einstellungen schließen",

View File

@ -1427,6 +1427,10 @@ msgstr "Neue Gruppe erstellen"
msgid "Create new Space" msgid "Create new Space"
msgstr "Neuen Space erstellen" msgstr "Neuen Space erstellen"
#: src/pages/Shell.tsx:3093
msgid "Create a project"
msgstr "Projekt erstellen"
#: src/pages/RoutineEditor.tsx:122 #: src/pages/RoutineEditor.tsx:122
#: src/pages/RoutineEditor.tsx:123 #: src/pages/RoutineEditor.tsx:123
msgid "Create Routine" msgid "Create Routine"
@ -2531,6 +2535,10 @@ msgstr "Noch keine Nachrichten mit {peerBotName}."
msgid "No model catalog is available." msgid "No model catalog is available."
msgstr "Kein Modellkatalog verfügbar." msgstr "Kein Modellkatalog verfügbar."
#: src/pages/Shell.tsx:3086
msgid "No projects yet."
msgstr "Noch keine Projekte."
#: src/pages/ModelSettingsOverlay.tsx:453 #: src/pages/ModelSettingsOverlay.tsx:453
msgid "No providers found." msgid "No providers found."
msgstr "Keine Anbieter gefunden." msgstr "Keine Anbieter gefunden."
@ -3411,6 +3419,9 @@ msgid "Speaking…"
msgstr "Spricht…" msgstr "Spricht…"
#: src/components/teach/TeachComputerOverlay.tsx:250 #: src/components/teach/TeachComputerOverlay.tsx:250
msgid "Start a group conversation"
msgstr "Gruppengespräch starten"
msgid "Start recording" msgid "Start recording"
msgstr "Aufnahme starten" msgstr "Aufnahme starten"
@ -3604,6 +3615,9 @@ msgid "To:"
msgstr "An:" msgstr "An:"
#: src/pages/PluginsOverlay.tsx:1111 #: src/pages/PluginsOverlay.tsx:1111
msgid "Threads by topic · folders"
msgstr "Threads nach Thema · Ordner"
msgid "Tool sources" msgid "Tool sources"
msgstr "Toolquellen" msgstr "Toolquellen"

View File

@ -1426,6 +1426,10 @@ msgstr "Create new Group"
msgid "Create new Space" msgid "Create new Space"
msgstr "Create new Space" msgstr "Create new Space"
#: src/pages/Shell.tsx:3093
msgid "Create a project"
msgstr "Create a project"
#: src/pages/RoutineEditor.tsx:122 #: src/pages/RoutineEditor.tsx:122
#: src/pages/RoutineEditor.tsx:123 #: src/pages/RoutineEditor.tsx:123
msgid "Create Routine" msgid "Create Routine"
@ -2531,6 +2535,9 @@ msgid "No model catalog is available."
msgstr "No model catalog is available." msgstr "No model catalog is available."
#: src/pages/ModelSettingsOverlay.tsx:453 #: src/pages/ModelSettingsOverlay.tsx:453
msgid "No projects yet."
msgstr "No projects yet."
msgid "No providers found." msgid "No providers found."
msgstr "No providers found." msgstr "No providers found."
@ -3410,6 +3417,9 @@ msgid "Speaking…"
msgstr "Speaking…" msgstr "Speaking…"
#: src/components/teach/TeachComputerOverlay.tsx:250 #: src/components/teach/TeachComputerOverlay.tsx:250
msgid "Start a group conversation"
msgstr "Start a group conversation"
msgid "Start recording" msgid "Start recording"
msgstr "Start recording" msgstr "Start recording"
@ -3603,6 +3613,9 @@ msgid "To:"
msgstr "To:" msgstr "To:"
#: src/pages/PluginsOverlay.tsx:1111 #: src/pages/PluginsOverlay.tsx:1111
msgid "Threads by topic · folders"
msgstr "Threads by topic · folders"
msgid "Tool sources" msgid "Tool sources"
msgstr "Tool sources" msgstr "Tool sources"

View File

@ -115,6 +115,7 @@ import {
Square, Square,
TextQuote, TextQuote,
Trash2, Trash2,
Users,
Volume2, Volume2,
X, X,
} from "lucide-react"; } from "lucide-react";
@ -3037,27 +3038,36 @@ export function ShellPage() {
</div> </div>
</button> </button>
</div> </div>
<button
type="button"
data-testid="start-group-conversation"
onClick={() => {
setMobileSidebarOpen(false);
setPanel("create-group");
}}
className="mx-0 mb-2 flex w-full items-center gap-3 rounded-xl px-2.5 py-2 hover:bg-sidebar-accent"
>
<span className="grid h-[30px] w-[30px] place-items-center rounded-lg bg-accent text-foreground/80">
<Users strokeWidth={1.8} className="size-icon-md" />
</span>
<span className="text-ui-body font-medium text-foreground/90">
<Trans>Start a group conversation</Trans>
</span>
</button>
<div className="sidebar-projekte"> <div className="sidebar-projekte">
{/* PROJEKTE SECTION */} {/* PROJEKTE SECTION */}
<div className="flex items-center justify-between pt-4 pb-1 mt-2 border-t border-white/5 px-2.5"> <div className="flex items-center justify-between pt-4 pb-1 mt-2 border-t border-white/5 px-2.5">
<div> <div>
<div className="rk-shell-section-label">{t`Projekte`}</div> <div className="rk-shell-section-label">{t`Projekte`}</div>
<p className="mt-0.5 px-0.5 text-ui-caption text-muted-foreground/70"> <p className="mt-0.5 px-0.5 text-ui-caption text-muted-foreground/70">
{t`Group conversations · folders`} {t`Threads by topic · folders`}
</p> </p>
</div> </div>
<div className="flex items-center gap-1.5"> <div className="flex items-center gap-1.5">
<button <button
type="button" type="button"
aria-label="Einstellungen" aria-label={t`Create a project`}
className="text-muted-foreground/60 hover:text-foreground/90 transition-colors" onClick={() => setNewSpaceOpen(true)}
>
<Settings strokeWidth={2} className="size-icon-sm" />
</button>
<button
type="button"
aria-label="Neues Projekt"
onClick={() => setPanel("create-group")}
className="text-muted-foreground/60 hover:text-foreground/90 transition-colors" className="text-muted-foreground/60 hover:text-foreground/90 transition-colors"
> >
<Plus strokeWidth={2.5} className="size-icon-md" /> <Plus strokeWidth={2.5} className="size-icon-md" />
@ -3073,15 +3083,15 @@ export function ShellPage() {
})) }))
.filter((group) => group.bots.length > 0 || group.emptySpaceId).length === 0 ? ( .filter((group) => group.bots.length > 0 || group.emptySpaceId).length === 0 ? (
<div className="p-4 text-center text-ui-label text-muted-foreground"> <div className="p-4 text-center text-ui-label text-muted-foreground">
<p>{t`No project conversations yet.`}</p> <p>{t`No projects yet.`}</p>
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"
className="mt-2 text-ui-label" className="mt-2 text-ui-label"
onClick={() => setPanel("create-group")} onClick={() => setNewSpaceOpen(true)}
> >
<Plus className="mr-1 size-icon-sm" /> <Plus className="mr-1 size-icon-sm" />
{t`Start a group conversation`} {t`Create a project`}
</Button> </Button>
</div> </div>
) : null} ) : null}