diff --git a/.project-docs/30-worklog/tasks/20260906-project-setup-ux-90fe6cf2.md b/.project-docs/30-worklog/tasks/20260906-project-setup-ux-90fe6cf2.md new file mode 100644 index 0000000..5b9c79c --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260906-project-setup-ux-90fe6cf2.md @@ -0,0 +1,91 @@ +# Task: Review new project setup UX + +## Identity + +- Task ID: 20260906-project-setup-ux-90fe6cf2 +- Mode: Feature +- Branch: codex/20260906-project-setup-ux-90fe6cf2-project-setup-ux +- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260906-project-setup-ux-90fe6cf2 +- Base commit: 5c61110f465cc4172f712ad435c06041c0aed1ec +- Owner: codex +- Status: Ready for Integration + +## Scope + +- Review the new-project transition from Project Configuration to the first Coding + Conversation, with particular attention to the zero-Agent state and the discoverability + of the return/continue action. +- Verify the persisted readiness rule, route behavior, empty states, model prerequisite, + and current product terminology before recommending an interaction change. +- Produce an evidence-backed interaction recommendation only; do not change product code, + tests, routes, persistence, or canonical project memory. + +## Intent And Constraints + +- Preserve the explicit product decision that new projects have no default project Agent + and that the user chooses the Agent identity, model, responsibility, and Skills. +- Keep project-owned parent Agents distinct from short-lived runtime child Agents; do not + describe the Project Configuration entity as a child Agent. +- Preserve Pi `0.84.2`, `.makelore` ownership, the single light visual system, and the + current Main/Renderer boundary. +- Prefer one explicit first-run completion path over a forced tutorial, compatibility + layer, new state machine, or automatically fabricated default Agent. + +## Outcome + +- Confirmed that the screenshot's “项目智能体” is a persisted project-owned parent Agent, + not a runtime child Agent. ADR-006 and ADR-008 deliberately keep child Agents ephemeral + and without inherited project Plugin resources. +- Confirmed a state-invariant gap: Project Configuration validates only the Agents that + exist, so an empty Agent array passes; `submit()` then saves `initialized: true`. + `ProjectChatRoute` and `MainLayout` gate only on that boolean, despite the gate copy + claiming that at least one manually configured Agent is required. +- Confirmed the resulting dead-end presentation: Coding chat has no selected Agent, clears + the Conversation selection, renders only a small “当前项目还没有可用智能体” sidebar + message, leaves the main canvas empty, and disables the Composer without a recovery CTA. +- Confirmed the navigation gap: Project Configuration uses history-relative + `navigate(-1)`. The destination depends on how the page was entered and can even be a + visually identical Project Configuration history entry; saving does not navigate to + the Conversation page. +- Confirmed an additional supported-path gap: first-run Setup does not configure a model. + With zero model options, the create-Agent icon shows a toast and opens a read-only model + drawer that contains no direct action to `/models`, so stronger Agent guidance alone + would still lead some users into a dead end. +- Recommended the “required but escapable” flow: an incomplete project may exist and the + user may leave, but completion/Conversation readiness requires at least one enabled, + unarchived, fully configured project Agent. In the empty state, replace the icon-only + instruction with a prominent text CTA; after the first Agent is valid, make the primary + action “保存并进入对话” with deterministic `/chat` navigation. Keep a full chat recovery + state for legacy/archived-all data and route it directly back to Agent creation. +- Recommended treating zero models as an explicit prerequisite state with a “先配置模型” + CTA and a return intent, and replacing history-relative back behavior with context-aware, + labelled destinations such as “返回对话” or “稍后设置”. +- No product behavior or source code was changed. + +## Verification + +- Inspected the supplied 1493×891 Project Configuration screenshot at original detail. +- Read the project memory startup set, relevant product/domain rules, ADR-006, ADR-008, + and related concurrent task scopes after passing the ownership and planning gates. +- Inspected `src/pages/ProjectConfiguration/index.tsx`, `src/App.tsx`, + `src/components/layout/MainLayout.tsx`, `src/components/layout/Sidebar.tsx`, + `src/pages/Chat/CodingChatPanel.tsx`, `CodingConversationSidebar.tsx`, + `AgentCreationDialog.tsx`, the project configuration schema/service, Setup, README, + focused tests, and relevant Git blame/history. +- Queried the UI/UX reference for onboarding, empty-state, primary-action, keyboard, and + predictable-back guidance. Its generated dark palette was rejected because Makelore's + repository contract requires the existing single light visual system. +- No automated test was run because this task intentionally made no behavior change; a + future implementation requires focused unit coverage and the shared Electron E2E flow. + +## Follow-ups + +- If the recommended direction is accepted, implement one shared readiness predicate and + cover zero Agents, all Agents archived, no configured model, first Agent completion, + deterministic return/continue navigation, unsaved changes, and chat recovery. +- Update README only with the accepted final interaction behavior, not this discussion or + a historical worklog. + +## Promotion Candidates + +- None recorded.