Add global web nav with project groups and tree sidebar.

Restructure the UI into top-level tabs and a scrollable project tree, and persist optional project groups so demos and settings can organize many projects.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-27 22:43:03 +01:00
co-authored by Cursor
parent 74066649e4
commit 472a2fa72e
13 changed files with 898 additions and 296 deletions
+10 -2
View File
@@ -21,8 +21,8 @@ func TestSeedDemo(t *testing.T) {
t.Fatal(err)
}
projects, err := srv.Projects.List()
if err != nil || len(projects) < 3 {
t.Fatalf("projects=%v err=%v", projects, err)
if err != nil || len(projects) != 50 {
t.Fatalf("want 50 projects, got %d err=%v", len(projects), err)
}
var testID string
for _, p := range projects {
@@ -34,6 +34,14 @@ func TestSeedDemo(t *testing.T) {
if testID == "" {
t.Fatal("missing Test project")
}
groups, err := db.ListProjectGroups()
if err != nil || len(groups) != 2 {
t.Fatalf("want 2 groups, got %d err=%v", len(groups), err)
}
p, err := srv.Projects.Get(testID)
if err != nil || p.GroupID == "" {
t.Fatalf("Test project should be grouped, got %+v err=%v", p, err)
}
sync, err := srv.Projects.GetSyncBackend(testID)
if err != nil || sync.Kind != "none" {
t.Fatalf("sync=%+v err=%v", sync, err)