89 lines
4.3 KiB
Markdown
89 lines
4.3 KiB
Markdown
# 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.
|