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);
}
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) => {
const stamp = Date.now();
await signup(page, `group-${stamp}@rakazo.test`, "password12", "Group E2E");

View File

@ -477,6 +477,10 @@
"Server URL": "Server-URL",
"Set up voice to call": "Stimme für Anrufe einrichten",
"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",
"Live Trading": "Live Trading",
"Close integrations settings": "Integrationen-Einstellungen schließen",

View File

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

View File

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

View File

@ -115,6 +115,7 @@ import {
Square,
TextQuote,
Trash2,
Users,
Volume2,
X,
} from "lucide-react";
@ -3037,27 +3038,36 @@ export function ShellPage() {
</div>
</button>
</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">
{/* PROJEKTE SECTION */}
<div className="flex items-center justify-between pt-4 pb-1 mt-2 border-t border-white/5 px-2.5">
<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">
{t`Group conversations · folders`}
{t`Threads by topic · folders`}
</p>
</div>
<div className="flex items-center gap-1.5">
<button
type="button"
aria-label="Einstellungen"
className="text-muted-foreground/60 hover:text-foreground/90 transition-colors"
>
<Settings strokeWidth={2} className="size-icon-sm" />
</button>
<button
type="button"
aria-label="Neues Projekt"
onClick={() => setPanel("create-group")}
aria-label={t`Create a project`}
onClick={() => setNewSpaceOpen(true)}
className="text-muted-foreground/60 hover:text-foreground/90 transition-colors"
>
<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 ? (
<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
variant="outline"
size="sm"
className="mt-2 text-ui-label"
onClick={() => setPanel("create-group")}
onClick={() => setNewSpaceOpen(true)}
>
<Plus className="mr-1 size-icon-sm" />
{t`Start a group conversation`}
{t`Create a project`}
</Button>
</div>
) : null}