mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-29 04:00:36 +00:00
feat(desktop): create threads from project composer
This commit is contained in:
parent
3ae4e92f63
commit
8a0bac63b4
7 changed files with 585 additions and 109 deletions
|
|
@ -20,6 +20,95 @@ execution order, verification, decisions, and remaining work.
|
|||
- Every completed slice must leave targeted verification and a conventional
|
||||
commit.
|
||||
|
||||
## Task Breakdown
|
||||
## Codex Alignment Progress
|
||||
|
||||
### Slice 1: Composer-First Thread Creation Alignment
|
||||
### Active Slice: Composer-First Thread Creation Alignment
|
||||
|
||||
Status: completed in iteration 2.
|
||||
|
||||
Goal: let a user open a project and type immediately, without first learning
|
||||
that they must create or select a session.
|
||||
|
||||
User-visible value: the default path becomes
|
||||
`Open project -> type request -> agent works`; the composer explains the active
|
||||
project context and creates the backing desktop session on first send.
|
||||
|
||||
Expected files:
|
||||
|
||||
- `packages/desktop/src/renderer/App.tsx`
|
||||
- `packages/desktop/src/renderer/components/layout/WorkspacePage.tsx`
|
||||
- `packages/desktop/src/renderer/components/layout/ChatThread.tsx`
|
||||
- `packages/desktop/src/renderer/components/layout/WorkspacePage.test.tsx`
|
||||
- `packages/desktop/src/renderer/styles.css`
|
||||
- `packages/desktop/scripts/e2e-cdp-smoke.mjs`
|
||||
- `.qwen/e2e-tests/electron-desktop/composer-first-thread-creation.md`
|
||||
|
||||
Acceptance criteria:
|
||||
|
||||
- Composer is enabled whenever a project is active, even when no session is
|
||||
selected.
|
||||
- With no project, composer remains disabled and gives a clear disabled reason.
|
||||
- First send from a project with no selected session creates a desktop session,
|
||||
sends the message, clears the composer, and publishes the created thread.
|
||||
- Existing explicit `New Thread` behavior continues to work.
|
||||
- The composer visibly carries compact project/branch, permission, and model
|
||||
context so it reads as the task control center rather than a plain textarea.
|
||||
- `Enter` send and `Shift+Enter` newline behavior are preserved.
|
||||
|
||||
Verification:
|
||||
|
||||
- Unit/component test command:
|
||||
`cd packages/desktop && SHELL=/bin/bash npx vitest run src/renderer/components/layout/WorkspacePage.test.tsx`
|
||||
- Build/typecheck/lint commands:
|
||||
`cd packages/desktop && npm run typecheck && npm run lint && npm run build`
|
||||
- Real Electron harness:
|
||||
`cd packages/desktop && npm run e2e:cdp`
|
||||
- Harness path: `packages/desktop/scripts/e2e-cdp-smoke.mjs`
|
||||
- E2E scenario steps: launch real Electron with isolated HOME/runtime/user-data
|
||||
and fake ACP, open the fake Git project, type a prompt into the project-scoped
|
||||
composer without clicking `New Thread`, send it, approve the fake command
|
||||
request, and assert the created thread/message/response appear.
|
||||
- E2E assertions: first viewport landmarks stay present; composer is enabled
|
||||
after project open; no `New Thread` click is required; fake ACP response is
|
||||
received; console errors and failed local requests are absent.
|
||||
- Diagnostic artifacts: CDP screenshots, layout JSON, DOM text, Electron log,
|
||||
summary JSON under `.qwen/e2e-tests/electron-desktop/artifacts/`.
|
||||
- Required skills applied: `frontend-design` for composer layout/control
|
||||
hierarchy with the prototype as the strict visual contract; `electron-desktop-dev`
|
||||
for renderer changes and real Electron CDP verification.
|
||||
|
||||
Notes and decisions:
|
||||
|
||||
- The prototype wins over earlier tab/dashboard guidance. This slice keeps the
|
||||
conversation as the default surface and upgrades the bottom composer without
|
||||
opening review, terminal, or settings by default.
|
||||
- Model and permission controls are compact context controls in the composer.
|
||||
They use existing session runtime state when available and safe fallback
|
||||
labels before a session exists; changing values still requires a live session
|
||||
until the server API supports project-level defaults.
|
||||
- Implementation changed first-send behavior so any active project with no
|
||||
active session creates a session on submit. The explicit `New Thread` button
|
||||
still creates a draft thread for users who want to start intentionally from
|
||||
the sidebar.
|
||||
- CDP smoke now sends the first prompt immediately after opening the fake
|
||||
project and before clicking `Changes`, proving the `New Thread` click is no
|
||||
longer required.
|
||||
|
||||
Verification results:
|
||||
|
||||
- `cd packages/desktop && SHELL=/bin/bash npx vitest run src/renderer/components/layout/WorkspacePage.test.tsx`
|
||||
passed with 4 tests.
|
||||
- `cd packages/desktop && npm run typecheck` passed.
|
||||
- `cd packages/desktop && npm run lint` passed.
|
||||
- `cd packages/desktop && npm run build` passed.
|
||||
- `cd packages/desktop && npm run e2e:cdp` passed.
|
||||
- Passing artifacts:
|
||||
`.qwen/e2e-tests/electron-desktop/artifacts/2026-04-25T16-41-09-752Z/`.
|
||||
|
||||
Next work:
|
||||
|
||||
- Continue prototype fidelity by reducing topbar tab weight and moving review
|
||||
access toward compact icon/drawer behavior.
|
||||
- Follow-up model configuration work should make composer model/permission
|
||||
controls editable before a session exists by persisting project-level
|
||||
defaults, rather than only reflecting live session runtime state.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue