# Task: ML-02 Identity user experience and E2E ## Identity - Task ID: 20260826-ml02-identity-ux-6f2d9a31 - Mode: Feature - Branch: codex/20260826-ml02-identity-ux-6f2d9a31-ml02-identity-ux - Worktree: D:\Datas\OthersProjects\makelore-ml02-identity-ux-6f2d9a31 - Base commit: 5ac08d509f8962a3c2c0ec1b1afef84a435f116d - Owner: ml02_identity_ux - Status: Ready for Integration ## Scope - Extend the Renderer coding-project facade and store with the accepted ML-01 identity request/result projections. - Make the new-project dialog default to a generated identity and offer an explicit canonical bind-existing choice with same-account sharing guidance. - Add the one-time legacy identity resolution card and the explicit independent-copy action to Project Configuration, including fixed UX copy about files/cloud data and safe error/cancel states. - Add focused Renderer tests and Electron E2E coverage for create, bind, invalid/cancel, legacy, and independent-copy flows. ## Intent And Constraints - Keep project identity creation, validation authority, persistence, cloud access, and preview/session invalidation in Main; Renderer only sends the accepted create/bind union or literal confirmation and projects safe config snapshots. - Preserve the canonical lowercase hyphenated UUID contract and ordinary-save immutability. A same-account bind shares development data; an independent copy rewrites only this folder's ID, does not move/copy files or cloud data, and gets its new UUID from Main. - Limit changes to the task ownership set: `src/components/layout/Sidebar.tsx`, `src/pages/ProjectConfiguration/index.tsx`, `src/lib/coding-projects.ts`, the necessary identity state projection in `src/stores/coding-workspace.ts` / `src/stores/project-config.ts`, focused Renderer tests, Electron E2E, and this task record. Do not modify ML-03 Main seams or add Renderer provisioning/cloud/session logic. - Use the repository-pinned pnpm `10.33.4`; run focused tests first, then typecheck/lint and relevant Electron E2E/build checks. Record unavailable platform/service prerequisites rather than claiming unrun acceptance. ## Outcome - Implemented the ML-02 Renderer identity UX and focused coverage. - `src/lib/coding-projects.ts` now projects the required create/bind identity union, validates the canonical lowercase UUID shape for UI preflight, and exposes the identity-resolution and independent-copy Host operations. - The new-project dialog defaults to generated identity, makes bind-existing explicit, explains same-account sharing, and reports invalid input before a Host call. Project Configuration now shows the one-time legacy resolution card and a confirmed independent-copy action whose copy states that files stay in place and cloud data is not copied. - No Main files, cloud/session logic, or Renderer data provisioning were added. ## Verification - `pnpm --version` -> `10.33.4`. - `pnpm exec vitest run tests/unit/coding-projects-facade.test.ts tests/unit/project-config-store.test.ts tests/unit/coding-workspace-store.test.ts --maxWorkers=1` -> 3 files, 10 tests passed. - `pnpm typecheck` -> passed. - `pnpm lint:check` -> 0 errors; 5 pre-existing warnings in `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`. - `pnpm build:vite` -> passed. - `pnpm test` -> 183 files, 1554 tests passed, 2 skipped. - `pnpm test:electron:windows` -> 2 files, 4 tests passed. - `pnpm exec playwright test tests/e2e/coding-project-identity.spec.ts --config=playwright.config.ts` -> 2 tests passed. - `pnpm exec playwright test tests/e2e/project-configuration-skills.spec.ts --config=playwright.config.ts` -> 1 test passed. - `pnpm test:e2e` -> 25 tests passed, 1 unrelated existing PI E2E failed at `tests/e2e/pi-coding-first-chat.spec.ts:575`: the model combobox remained disabled while selecting `model-b`; a direct rerun reproduced the same failure. The identity and Project Configuration specs passed in this run. ## Follow-ups - Investigate the pre-existing/flaky PI model-combobox E2E separately; it is outside the ML-02 ownership set and was not changed here. ## Promotion Candidates - Identity UX, facade projections, and E2E coverage are ready for integration after this task commit. The full E2E suite's unrelated PI failure should remain visible to the integrator.