feat(coding): add project identity UX

This commit is contained in:
2026-08-26 18:48:22 +08:00
parent 5ac08d509f
commit ce8e2103d9
10 changed files with 683 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
# 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.