Repository navigation
feat(desktop): open Home on New task's composer - #3729
Merged
Merged
Conversation
…t the name field The name field is a plain name again: typing in it lists no Linear issues and searches nothing. Where the workspace the task starts in has Linear connected, a Linear chip stands after the repository chip, and a press on it, or Command-L from the card, opens the shared searchable menu over the workspace's issues: those read as the card opened with nothing typed, the same narrowing, rested Linear search, and key or link lookup as before (moved unchanged into linear-issue-chip.tsx). Choosing an issue starts its task at once, as choosing one did; Escape closes the menu and not the card; a switch of workspace closes it and reads that workspace's issues. SearchableMenu takes an onSearch for an owner that answers the search itself, listing its rows unfiltered. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Resolves the conflicts with main's SearchableMenu move onto SearchField and ComboboxList: onSearch now rides the SearchField's onChange, and the Linear chip caps its list with --luke-combobox-list-max as the repository chip does. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…oser, with Plan mode for a call with Luke New task's name field becomes the agent composer card: words, files, dictation, the model chip, and Start, with the repository and Linear chips and a Plan toggle at its foot. Agent mode starts the task without planning and opens it on a draft agent tab that sends the words at once, so a refused agent keeps them with Retry. A Linear issue picked becomes a chip whose mention leads the agent's prompt. Plan mode starts today's plan and call, named by the words until the brief lands. An Untitled task's tasks are read again as its first agent's title lands. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Resolves the conflict with #3694's move of the renderer runtime into @luke/panel: the Linear chip's search atom reads it from there. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…s menu shut across a reconnect or a composing key - SearchableMenu holds a moved highlight by its row's id as well as its place, so an owner's search answering after the arrows moved, with an issue sorted ahead, leaves the highlight and Return on the issue chosen. - The Linear chip closes its menu when Linear is let go, so its coming back draws nothing until the chip is pressed. - Command-L opens nothing while an input method is composing. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…s ask Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…-prompt-composer Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…field lands Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…ts Plan mode's files in the task-names allowlist Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…-prompt-composer Takes main's @luke/panel move (New task's mode now lives at @luke/panel/tasks/new-task-mode) and #3693's Start agent… from an issue: the composer stands in Agent mode with no Plan toggle for it, and an agent on a workspace issue with nothing written starts on the task's plan through NewTaskStart.agent; the composer's words go as NewTaskStart.handed. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… model is not kept as default, and offer no server reconnect where no servers are handed Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Home mounts New task's composer card under the greeting, in place of its New task button, so the window's resting page opens on a prompt box. It starts the task in the workspace Home lists, takes the caret as the page shows unless a field elsewhere holds it, and keeps its keys from Home's row navigation; Escape lets go of it. The welcome page holds it under Luke's face and line, and the skeleton stands it too, in the same place, so words typed while the list is read survive its landing. The dialog stays for ⌘N and every other New task press. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…ver it chose Home's New task card and the dialog's stand at once, and each read the mode and the default model only as it opened, so turning Plan on or picking a model in the dialog left Home's card on the old one. The mode is now one store every card reads, and a model kept as the default in one card is followed by another whose chip was not picked in it. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… kept A model picked in one card moved the other cards' chips before its write landed, so a refused write, or one overtaken by a later pick, left them on a model that was never the default. The others now follow the latest pick alone, once its write answers that it was kept. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…kept Following one card's answered write could leave the others on the wrong model when writes answered out of order, a refused later pick discarding an earlier one that was kept. Once every write has answered, the other cards whose chip was not picked read the default again and take what the account stored. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Takes main's New task composer, dialog, and tasks tab from #3717 as it merged, and re-applies Home's composer onto main's DetailPage Home: the composer at the top of the page's content in place of the New task action, standing in one place while the list is read and once it lands, and under Luke's line in a new account's welcome. Keeps the shared mode store and its test; drops the cross-card default-model sync and its tests, which #3718's removal of writeDefault left nothing to follow. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…new account's welcome The welcome and the page are two trees, so the list landing as a new account's welcome mounted a second composer and let go of what was typed while it was read. Home now draws one composer into a box of its own, which whichever state stands takes into its place. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…he welcome Moving the composer's box out of the page as the welcome replaced it dropped the focus with it, so the next key missed the words. The box now notes what held the focus inside it as its place goes, and focuses it again in the new place where nothing else took the focus meanwhile. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…re main moved them Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
14 tasks done
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 19, 2026
…d Plan-mode brief Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…sk-composer # Conflicts: # apps/desktop/src/renderer/desktop/desktop-home.tsx
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR 8 of the "New task, prompt first" redesign: Home now opens on New task's composer, inline, the way Codex and ChatGPT open on a prompt box. This is question 5 of the approved design, done as the follow-up the developer approved. #3717 added
NewTaskComposer.desktop-home.tsx): onmain'sDetailPage, the greeting is the page title. The composer sits at the top of the content, in.home-composer, in place of the "New task" header action. Inbox and Recent stay below it. The composer starts tasks in the workspace Home is showing.main's centred welcome, with the card under Luke's face and line.useComposerSlot). The loading page, the loaded page and the welcome each place that box where it belongs. So nothing typed while the list loads is lost when it lands, including when it lands as a brand-new account's welcome. The caret moves with the words.focusedByOwner, so it decides likeagent-composer.tsxdoes. Its words take the caret when the editor mounts, unless a field or editor elsewhere already has it.use-row-keys.tsalready ignores any key not pressed from the window itself or from one of its rows, so ↑, ↓ and Return in the composer belong to the composer. Tests now pin this down. Escape in the card, when nothing in it needs closing, gives up focus. The arrows then reach Home's rows again.new-task-mode.tsis now one store that every card reads (useSyncExternalStore). Turning Plan on in the dialog turns it on in Home's card too.main(fix(service,desktop): only Settings changes the coding agents' default model #3718) now changes the default only in Settings, and feat(desktop): start a coding agent from New task's prompt-first composer, with Plan mode for a call with Luke #3717 followed. Each card starts on the default as read, and a pick applies to that card's agent alone. So the sync code and its tests are gone.NewTaskComposerkeeps them in its own state. Keeping them would need acomposer-drafts.tsplace and a controlled draft on the composer; the orchestrator is tracking that as a follow-up.Screenshots
These come from the real
DesktopHomewith fake data in headless Chromium, dark theme, not from the packaged app (evidence.shonly runs on macOS).Home, with tasks:
A new account's welcome:
Evidence
pnpm check:affectedruns out of memory in this sandbox, so its parts were run one at a time on the head commit:pnpm oxlintand biome on the changed files: passed.tsc --project apps/desktop/tsconfig.json --noEmit: passed.pnpm knip: passed../scripts/repository-checks.sh: passed.NODE_OPTIONS=--max-old-space-size=6500 pnpm discarded-effect: passed.pnpm exec vitest runoverdesktop-home.test.ts,desktop-shell.test.tsanddesktop-tasks.test.ts: 78 tests passed. The new welcome-draft test fails without the shared composer box.Tests
desktop-home.test.tsgoes from 23 to 29 tests: one removed and seven added.planning: false, agent on the words with the chip's model and the card's idempotency key, no dialog asked for);planning: true, Untitled, the words handed to Luke as the brief, no agent);desktop-shell.test.ts: the welcome test checks that Home holds the composer, and opens the dialog from the title bar's New task.Invariants
./scripts/check.shgreen. (CI)astype assertion.Effect.runPromise/runSync/runForkoutside the runtime edges (the test file'sbeforeAlllands the editor bundle as the dialog's test and 18 others do).setTimeout/setInterval/new Promise/AbortController/fs.watch.CLAUDE.md/AGENTS.mdsentence names a changed part.PRIVACY.mdunchanged (the composer's box isph-no-capture, as the dialog's is).Notes