merge: integrate simplified project creation

This commit is contained in:
inman
2026-09-07 10:08:05 +08:00
15 changed files with 351 additions and 486 deletions

View File

@@ -0,0 +1,123 @@
# Task: Remove project creation gate and template selection
## Identity
- Task ID: 20260906-remove-project-gate-7c31
- Mode: Feature
- Branch: codex/20260906-remove-project-gate-7c31-remove-project-gate-7c31
- Worktree: /Users/inmanx/Documents/makelore-task-remove-project-gate-7c31
- Base commit: f8eee430f4f4167dc2ecc682ece96c652cdde14b
- Owner: codex
- Status: Ready for integration
## Scope
- Remove the user-facing project creation identity/type choices from the Code
sidebar and use the existing safe defaults instead.
- Stop treating `config.initialized` as a navigation/UI gate for an otherwise
valid local Code project.
- Keep an empty project usable by presenting a non-blocking route to project
settings when no Agent exists.
- Keep the durable project ID as an internal service concern: remove it from the
normal Project Configuration UI and automatically assign one when a valid
legacy project lacks it.
- Update focused Renderer tests, the shared Electron project-creation flow, and
README product-state documentation.
## Intent And Constraints
- A new project receives a Main-generated local UUID and the existing internal
`interactive_ai_app` type without asking the user to choose either during
creation.
- Preserve `.makelore/project.json`, historical project-type normalization,
underlying identity compatibility endpoints, publish contracts, and existing
custom projects without exposing identity choices to young users.
- Keep the bundled Project Scaffold Skill available as an optional Plugin; it
must not be part of, or a prerequisite for, project creation.
- Missing or invalid project metadata remains an entry error. A valid legacy
config missing only `projectId` is repaired by Main with a generated UUID;
the legacy `initialized` Boolean no longer blocks a valid project.
- Renderer backend access continues through the existing Host API/store seams.
## Outcome
- Simplified the Code project creation dialog to directory selection only.
Main still generates the local project UUID, while the Renderer writes the
existing internal `interactive_ai_app` default without presenting identity,
type, or template choices.
- Removed the `initialized` navigation redirect and full-workspace overlay for
valid project metadata. Missing or invalid metadata still routes to Project
Configuration.
- Added an empty-Agent state in the coding chat so a newly created project opens
immediately and offers a direct, non-blocking route to create its first Agent.
- Reworded Project Configuration save affordances so the retained compatibility
write to `initialized` is no longer described as an initialization ceremony.
- Removed the Project Configuration identity card, raw UUID, bind form, and
independent-copy action. Main now serializes automatic UUID assignment for a
valid legacy project missing `projectId`, including concurrent reads, while
retaining the underlying compatibility endpoints and immutable schema rules.
- Replaced the last creation-dialog identity terminology with youth-readable
copy: only the folder choice is explained; all other setup is automatic.
- Preserved project schemas, historical project types, publishing contracts,
existing custom projects, and the optional bundled Project Scaffold
Plugin/Skill.
- Updated README product-state documentation and focused unit/Electron coverage.
- Diagnosed a post-verification UI mismatch as a development-runtime issue: the
visible Electron window had been launched from the separate Plugins/settings
task worktree, whose source still contained the former identity choices. The
stale process group was stopped and the verified feature worktree was started
on the standard development ports.
## Verification
- `corepack pnpm install --frozen-lockfile` — passed with the repository-pinned
pnpm 10.33.4.
- `corepack pnpm run typecheck` — passed.
- Focused ESLint across all changed source/test files — passed.
- Focused Renderer/Main tests — 60 passed across App routing, Main layout,
Sidebar, CodingChatPanel, Project Configuration, config stores, and serialized
automatic legacy identity assignment.
- Adjacent project-schema/store tests — 34 passed.
- `corepack pnpm run lint:check` — passed with zero errors; five pre-existing
warnings remain in unrelated Home/Makelore files.
- `corepack pnpm test` — passed: 1,862 ordinary tests passed, three skipped, and
the isolated pressure test passed 1/1.
- `corepack pnpm run build:vite` — passed for Renderer, Main, Preload, and the
release utility worker.
- `corepack pnpm exec playwright test tests/e2e/coding-project-identity.spec.ts tests/e2e/project-configuration-skills.spec.ts`
— passed (2/2), covering directory-only creation, direct chat entry, absence
of all identity terminology and controls, automatic legacy UUID repair, and
the empty-Agent settings route.
- Live runtime verification after restart — Vite PID 16968 and Electron PID
16975 both resolve to this task worktree; the active Renderer command reports
the same `app-path`, and the source served on port 5173 contains the automatic
setup copy while none of `项目身份`, `创建新的项目 ID`, or `绑定已有项目 ID`
is present.
- `git diff --check` — passed.
## Follow-ups
- Promote the project-creation workflow change into ADR-008 and the canonical
project architecture/domain documentation during a serialized Integration
task.
- Physically removing the optional bundled Project Scaffold Plugin/Skill, if
desired, should be a separate explicit decision because it affects packaged
resources and release coverage; this task only removes it from the creation
path.
## Promotion Candidates
- Target: ADR-008 and canonical project-creation architecture/domain documents.
Proposal: amend the user-facing creation workflow so identity and project type
are safe defaults instead of required choices, and treat `initialized` as a
compatibility field rather than a workspace navigation gate. Durable project
identity remains Main-owned and is generated automatically for new projects
and valid legacy configs that lack it; raw UUIDs, bind choices, and copy
semantics must not return to ordinary youth-facing UI. Existing custom
projects, type normalization, publishing authority, compatibility endpoints,
and the optional Scaffold Skill remain. Future impact: product documentation
and future creation/configuration UI must not restore these choices as
mandatory or visible setup. Human confirmation is represented by the user's
explicit statements that the product targets young users and service-required
identity should default automatically; canonical promotion still belongs to a
serialized Integration task.