4.3 KiB
4.3 KiB
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:
5ac08d509f - 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 insrc/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.tsnow 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 insrc/pages/Home/index.tsxandsrc/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 attests/e2e/pi-coding-first-chat.spec.ts:575: the model combobox remained disabled while selectingmodel-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.