feat: workspace-first UI refresh - PR-3 projects page + routing cleanup

- Rewrite ProjectsPage with inline repository and workspace display
- Expandable project cards showing repos + workspace chips
- Inline workspace creation from project page (New Workspace button per repo)
- Workspace chips link to workspace detail page
- Sync/delete actions on workspace chips
- Update Project type: add ProjectWithRepos, RepositorySummary, WorkspaceSummary
- Update listProjects API to return ProjectWithRepos[]
- Update dashboard, sessions, config-profiles to use ProjectWithRepos
- Remove old /projects/:projectId route (RepoWorkspace)
- Add chevron icons to Icon component
- Projects page CSS: project-toggle, repo-block, workspace-grid, workspace-chip
- TypeScript + eslint clean

Quality gates: tsc --noEmit clean, eslint clean
This commit is contained in:
2026-06-01 17:18:51 +02:00
parent 27c77af591
commit 88a973dc68
10 changed files with 620 additions and 381 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
import { apiClient } from "./client";
import type { Project } from "../types";
import type { Project, ProjectWithRepos } from "../types";
export type ProjectCreateInput = {
name: string;
@@ -15,8 +15,8 @@ export type SetDefaultSSHKeyInput = {
ssh_key_id: string;
};
export const listProjects = async (): Promise<Project[]> => {
const response = await apiClient.get<Project[]>("/projects");
export const listProjects = async (): Promise<ProjectWithRepos[]> => {
const response = await apiClient.get<ProjectWithRepos[]>("/projects");
return response.data;
};