Commit ed40569
Add Linear issue dropdown to lane creation (#274)
* Add Linear issue lane workflows
* Fix lane git mocks for branch validation; sync iOS bootstrap SQL
- Add defaultLaneBranchGitStub for check-ref-format and show-ref ade/* probes from resolveCreateBranchRef so laneService tests stub git consistently.
- Drop overly broad show-ref and ls-remote stubs that broke getDeleteRisk and remote-branch checks.
- Regenerate DatabaseBootstrap.sql from kvDb migrate SQL for lane_linear_issues table.
Co-authored-by: Arul Sharma <arul28@users.noreply.github.com>
* Add Linear issue dropdown to lane creation
Surface a searchable Linear issue picker in the new-lane dialog so users
can attach a Linear issue at lane creation time instead of pasting an
identifier. Adds the supporting Linear browser, CLI plumbing, and doc
updates for the workflow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iteration 1 — rebase + address Greptile/CodeRabbit/Cursor review
- N+1 fix: batch lane_linear_issues lookup in listLanes
- GraphQL: pass IssueFilter via variables, not string interpolation
- Branch sanitizer: strip @{, .., trailing .lock
- Magic words: skip duplicate ID prefix on commit messages
- RPC schema: nullable url/assignee* fields; validate first cap; reject
non-object linearIssue payload; CLI mirrors the validation
- Empty-text steer allowed when context attachments present
- IPC picker/search return empty when tracker unavailable (no throw)
- Lane teardown deletes lane_linear_issues; full payload validated
- Adopted PR bodies now patched with Linear references too
- kvDb: unique index on (project_id, lane_id) for lane_linear_issues
- AgentChatPane resets context attachments on lane change
- LinearIssueBadge keyboard-focusable; popover open via focus-within
- LinearIssuePicker seeds pendingIssue from active selection too
- CreatePrModal clears Linear close-toggle and refs when issue dropped
- chatContextAttachments wraps Linear text as untrusted prompt data
- CLI Linear connection status forwards organization fields
* ship: iteration 2 — fix CI shards 1 & 3, align Linear RPC schema
- linearAuth.test.ts: assert filter via body.variables.filter to match
the variables-based GraphQL contract from iter 1
- laneService.test.ts: stub check-ref-format --branch in the runGit mock
so the new branch sanitizer round-trip is allowed
- kvDb.ts: replace UNIQUE index on lane_linear_issues with a
bootstrap-time duplicate-coalescing sweep (CRRs disallow non-PK
unique indices); app-layer enforcement remains
- adeRpcServer.ts: searchLinearIssues schema first.max 200 -> 50 to
match runtime clamp + error message
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iteration 3 — bootstrap SQL refresh + 4 new review fixes
- iOS DatabaseBootstrap.sql regenerated to track kvDb dedupe sweep
- agentChatService: Codex steer uses preparedSteer.submittedText so
context-only steers send the fallback prompt
- agentChatService: Droid busy-steer routes through prepareSendMessage
(allowActiveSession: true) like Cursor's busy path
- linearClient.normalizeSdkIssue: labels now accepts resolved
connection objects, not just callable thunks
- prService.createFromLane: pass preserveExisting:false to
ensureLinearPrReference so Refs upgrades to Fixes when
closeLinearIssueOnMerge is true
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iteration 4 — XML-escape untrusted text, fix adopt path Refs->Fixes, drop searchIssues min clamp
- chatContextAttachments.wrapUntrustedLinearText: HTML-entity-escape
&/</>/"/' before wrapping so Linear titles can't break out of the
<untrusted-data> tag (Greptile P1/security)
- prService adoption branch: pass preserveExisting:false to
ensureLinearPrReference when closeLinearIssueOnMerge is true so
Refs upgrades to Fixes on adopted PRs too (CodeRabbit Major)
- linearClient.searchIssues: lower clamp 10 -> 1 to match the
schema contract (Cursor Low)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iteration 5 — wrap all untrusted Linear fields, raw-GraphQL quick view, drop dead helpers
- chatContextAttachments: wrap assignee/creator/team/project/state/
labels/branchName/url through wrapUntrustedLinearText so user-
controlled Linear fields can't break out of the prompt sandbox
(Greptile P1/security)
- linearClient.getQuickView: replace SDK lazy-loaded issues calls
with searchIssues raw GraphQL using ISSUE_FIELDS_FRAGMENT (was
~168 round-trips per call, now 2) (Cursor Medium)
- linearClient: drop unused gqlString / gqlStringArray helpers
(Cursor Low)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Arul Sharma <arul28@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent df62f66 commit ed40569
69 files changed
Lines changed: 6811 additions & 181 deletions
File tree
- apps
- ade-cli
- src
- desktop
- resources
- src
- main/services
- chat
- cto
- git
- ipc
- lanes
- prs
- state
- sync
- preload
- renderer
- components
- app
- chat
- lanes
- prs
- settings
- terminals
- ios/ADE/Resources
- docs/features
- chat
- cto
- lanes
- linear-integration
- sync-and-multi-device
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
58 | 61 | | |
59 | 62 | | |
60 | 63 | | |
61 | 64 | | |
62 | 65 | | |
63 | 66 | | |
| 67 | + | |
64 | 68 | | |
65 | 69 | | |
66 | 70 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
695 | 695 | | |
696 | 696 | | |
697 | 697 | | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
698 | 707 | | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
699 | 744 | | |
700 | 745 | | |
701 | 746 | | |
| |||
711 | 756 | | |
712 | 757 | | |
713 | 758 | | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
714 | 766 | | |
715 | 767 | | |
716 | 768 | | |
| |||
1465 | 1517 | | |
1466 | 1518 | | |
1467 | 1519 | | |
| 1520 | + | |
1468 | 1521 | | |
1469 | 1522 | | |
1470 | 1523 | | |
| |||
1523 | 1576 | | |
1524 | 1577 | | |
1525 | 1578 | | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
1526 | 1651 | | |
1527 | 1652 | | |
1528 | 1653 | | |
| |||
3865 | 3990 | | |
3866 | 3991 | | |
3867 | 3992 | | |
| 3993 | + | |
3868 | 3994 | | |
3869 | 3995 | | |
3870 | 3996 | | |
| |||
3873 | 3999 | | |
3874 | 4000 | | |
3875 | 4001 | | |
| 4002 | + | |
3876 | 4003 | | |
3877 | 4004 | | |
3878 | 4005 | | |
| |||
4259 | 4386 | | |
4260 | 4387 | | |
4261 | 4388 | | |
| 4389 | + | |
| 4390 | + | |
| 4391 | + | |
| 4392 | + | |
| 4393 | + | |
| 4394 | + | |
| 4395 | + | |
| 4396 | + | |
| 4397 | + | |
| 4398 | + | |
| 4399 | + | |
| 4400 | + | |
| 4401 | + | |
| 4402 | + | |
| 4403 | + | |
| 4404 | + | |
| 4405 | + | |
| 4406 | + | |
| 4407 | + | |
| 4408 | + | |
| 4409 | + | |
| 4410 | + | |
| 4411 | + | |
| 4412 | + | |
| 4413 | + | |
| 4414 | + | |
| 4415 | + | |
| 4416 | + | |
| 4417 | + | |
| 4418 | + | |
| 4419 | + | |
| 4420 | + | |
| 4421 | + | |
| 4422 | + | |
| 4423 | + | |
| 4424 | + | |
| 4425 | + | |
| 4426 | + | |
| 4427 | + | |
| 4428 | + | |
| 4429 | + | |
| 4430 | + | |
| 4431 | + | |
| 4432 | + | |
| 4433 | + | |
| 4434 | + | |
| 4435 | + | |
| 4436 | + | |
| 4437 | + | |
| 4438 | + | |
| 4439 | + | |
| 4440 | + | |
| 4441 | + | |
| 4442 | + | |
| 4443 | + | |
| 4444 | + | |
| 4445 | + | |
| 4446 | + | |
| 4447 | + | |
4262 | 4448 | | |
4263 | 4449 | | |
4264 | 4450 | | |
| |||
0 commit comments