Repository navigation
feat(desktop): choose a New task's Linear issue from its own chip, not the name field - #3697
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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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>
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>
Contributor
There was a problem hiding this comment.
Devin Review found 3 potential issues.
1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
…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>
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 1 of the New task redesign ("New task, prompt first"). Linear moves out of the name field and into a Linear chip of its own.
TextField, its placeholder is always "Task name (optional)", and typing in it lists no issues and searches nothing. Return creates the task under the name as typed, with any modifier held.tasks/linear-issue-chip.tsx, new). It stands after the repository chip in the card's foot, but only where the workspace the task starts in has Linear connected (linearIssuesIn(startsIn) !== undefined). Pressing it opens the sharedSearchableMenuwith its own search field:offeredIssues). Once typing rests, Linear itself is searched (the debounced search atom). A pasted key or link asks for that one issue (linearIssuesAskOf).useLinearIssues,useLinearSearchand the atom moved out of the dialog unchanged.LtoSHORTCUT_KEYand exportsshortcutMatchesto read the chord.linearIssueId, the repository, the workspace and the planning the card shows. (PR 2 changes this to attaching the issue above the prompt.)SearchableMenutakes an optionalonSearch. It lets the owner answer the search itself: the owner hears each query, and the menu shows the rows it hands back without filtering them. This is needed so issues that Linear's search finds outside the title still show. It also remembers a highlighted row by its id as well as its position, so rows that arrive late don't move the highlight onto another issue.new-task-dialog.tsx's header comment now describes the new behavior.Evidence
pnpm check:affectedran out of memory in this sandbox (8 GB) when its typechecks ran in parallel, so I ran each of its steps on its own. All passed:scripts/repository-checks.sh: passedpnpm lint(biome + oxlint): 0 errorspnpm knip: cleanpnpm discarded-effect: cleantscfor@luke/desktopand@luke/settings: cleanvitest run --project desktop --project settings --project ui: 302 files, 2643 tests passedscripts/evidence.shruns only on macOS.Invariants
./scripts/check.shgreen. (CI)astype assertion outside the allowlisted files.Effect.runPromise/runSync/runForkoutside the runtime edges.new-task-dialog.test.tsgoes from 24 to 26. Its Linear cases are rewritten: typing never lists or searches issues; the chip stands only with Linear connected; the chip lists, the arrows move, and Return starts; search narrows, then Linear is searched; a pasted link looks up one issue; Escape closes the menu and not the card; ⌘L opens it, but not while an input method is composing; a Linear result that sorts ahead of the highlighted issue leaves the highlight on the chosen issue; opening from a workspace issue shows no chip.new-task-workspace.test.tsgoes from 6 to 7 tests: its Linear case now checks that a workspace switch closes the search and the chip lists the chosen workspace's issues, and a new case checks that Linear disconnecting and reconnecting doesn't reopen the search.CLAUDE.md/AGENTS.mdsentence names a changed part.PRIVACY.mdunchanged.Notes
This branch merges
origin/maintwice to resolve conflicts with refactor(desktop): stop app CSS restyling the shared components' insides #3674 (SearchableMenu moved onto SearchField and ComboboxList) and refactor(panel): move the renderer runtime and app state into @luke/panel #3694 (renderer runtime moved into@luke/panel).Out of scope here: the prompt composer, Agent/Plan modes, and starting a coding agent (PR 2 stacks on this branch).
Made with Luke