Commit 05505a3
Remote runtime architecture spec (#275)
* Virtualized file tree, shared Ade diff viewer, and finalize (CLI + docs) (#272)
* feat: virtualized file tree explorer + shared Ade diff viewer
Splits FilesPage into a virtualized FilesExplorer with local path filter,
inline F2 rename, and per-row git status badges, and replaces direct
MonacoDiffView usage in LaneDiffPane / PrDetailPane / ChatFileChangesPanel
with a shared AdeDiffViewer that supports split/unified/wrap toggles and
read-only patch rendering. Diff service gains getChanges (numstat +
renames) and getFilePatch with bounded output and worktree-escape checks.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
* chore(finalize): allow diff.getFilePatch, CLI patch command, and docs
- Extend ADE_ACTION_ALLOWLIST.diff with getFilePatch for ade actions/CLI.
- Add ade diff patch wired to diff.getFilePatch; update README and tests.
- Refresh internal docs for files editor, lanes diff, chat composer, architecture IPC.
Co-authored-by: Arul Sharma <[email protected]>
* Fix PR review feedback for diff viewer
---------
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Arul Sharma <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
* path to merge audit (#260)
* Route path-to-merge through ADE actions
* Keep polling after GitHub auto-merge is armed
* Remove generated dev log from PtM lane
* Align PtM pipeline defaults in tests and iOS bootstrap
* Respect max rounds when starting PtM from PR panel
* Backfill legacy PtM pipeline defaults once
* Persist PtM review bot wait state
* Address PtM review automation gaps
* Fix PtM desktop typecheck import
* Keep admin merge behind explicit force policy
* Ignore Capy spend-limit notices in PR inventory
* Retire noisy PR issue comments during inventory sync
* Throttle GitHub PR hot refresh polling
* Limit GitHub PR hot refresh to one follow-up
* Avoid GitHub snapshot refreshes for PR status ticks
* Avoid duplicate review bot pings
* Refresh PR detail checks on status updates
* Keep action run polling results live
* Fix Path to Merge readiness refresh
* Fix PtM readiness test label
* Make PtM readiness test less brittle
* Refresh PtM external checks while polling
* Reuse Vite optimizer cache in dev
* Keep review gates on at-cap PtM merges
* 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 <[email protected]>
* 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) <[email protected]>
* 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) <[email protected]>
* 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) <[email protected]>
* 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) <[email protected]>
* 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) <[email protected]>
---------
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Arul Sharma <[email protected]>
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
* Add remote runtime architecture spec
Comprehensive engineering specification for the runtime extraction,
multi-project unification, and SSH-tunneled remote runtime feature.
Captures all architectural decisions, audit findings, phased
implementation plan with file-level detail, migration path, and
parallelization tracks for the dev team.
* Address PR #275 review comments
- Linear tool schema: add nullable optional properties (description, url,
projectName, teamName, assigneeId, assigneeName, creatorId, creatorName,
dueDate, estimate, branchName) to required so OpenAI strict mode accepts
create_lane calls. The anyOf [type, null] entries already make them
safely omittable at the value level.
- linearClient.metadataTags: defensively read from node.metadata.tags so
any populated data is preserved instead of silently dropped to [].
Falls back to [] when the field is absent.
- kvDb pr_pipeline_settings backfill: log via console.warn on failure
instead of swallowing silently. Documents that an invisible state
split (existing rows on legacy defaults vs new rows on new defaults)
could otherwise occur. ALTER TABLE catches stay silent because
column-already-exists is the expected re-run path.
- laneService.resolveCreateBranchRef: don't blame Linear when the
conflicting branch came from an explicit branchName arg or the
fallback path. Differentiate the error message based on the source
of the suggested branch.
- bootstrap.createPathToMergeOrchestrator: replace `as never` with a
typed cast through Parameters<typeof createPathToMergeOrchestrator>[0]
so any future tightening of PathToMergeDeps surfaces as a type error.
Also drop a gratuitous `as never` on a call whose target accepts
unknown.
---------
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Arul Sharma <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>1 parent 4b098fe commit 05505a3
109 files changed
Lines changed: 11658 additions & 863 deletions
File tree
- apps
- ade-cli
- src
- desktop
- resources
- scripts
- src
- main/services
- adeActions
- chat
- cto
- diffs
- files
- git
- ipc
- lanes
- prs
- state
- sync
- preload
- renderer
- components
- app
- chat
- files
- lanes
- prs
- detail
- state
- tabs
- settings
- terminals
- ios/ADE
- Resources
- Services
- docs
- features
- chat
- cto
- files-and-editor
- lanes
- linear-integration
- sync-and-multi-device
- plans
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 | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| 63 | + | |
63 | 64 | | |
64 | 65 | | |
65 | 66 | | |
| |||
| 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 | | |
| 65 | + | |
62 | 66 | | |
| 67 | + | |
63 | 68 | | |
64 | 69 | | |
65 | 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 | | |
| |||
1534 | 1586 | | |
1535 | 1587 | | |
1536 | 1588 | | |
| 1589 | + | |
1537 | 1590 | | |
1538 | 1591 | | |
1539 | 1592 | | |
| |||
1592 | 1645 | | |
1593 | 1646 | | |
1594 | 1647 | | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
1595 | 1720 | | |
1596 | 1721 | | |
1597 | 1722 | | |
| |||
3934 | 4059 | | |
3935 | 4060 | | |
3936 | 4061 | | |
| 4062 | + | |
3937 | 4063 | | |
3938 | 4064 | | |
3939 | 4065 | | |
| |||
3942 | 4068 | | |
3943 | 4069 | | |
3944 | 4070 | | |
| 4071 | + | |
3945 | 4072 | | |
3946 | 4073 | | |
3947 | 4074 | | |
| |||
4328 | 4455 | | |
4329 | 4456 | | |
4330 | 4457 | | |
| 4458 | + | |
| 4459 | + | |
| 4460 | + | |
| 4461 | + | |
| 4462 | + | |
| 4463 | + | |
| 4464 | + | |
| 4465 | + | |
| 4466 | + | |
| 4467 | + | |
| 4468 | + | |
| 4469 | + | |
| 4470 | + | |
| 4471 | + | |
| 4472 | + | |
| 4473 | + | |
| 4474 | + | |
| 4475 | + | |
| 4476 | + | |
| 4477 | + | |
| 4478 | + | |
| 4479 | + | |
| 4480 | + | |
| 4481 | + | |
| 4482 | + | |
| 4483 | + | |
| 4484 | + | |
| 4485 | + | |
| 4486 | + | |
| 4487 | + | |
| 4488 | + | |
| 4489 | + | |
| 4490 | + | |
| 4491 | + | |
| 4492 | + | |
| 4493 | + | |
| 4494 | + | |
| 4495 | + | |
| 4496 | + | |
| 4497 | + | |
| 4498 | + | |
| 4499 | + | |
| 4500 | + | |
| 4501 | + | |
| 4502 | + | |
| 4503 | + | |
| 4504 | + | |
| 4505 | + | |
| 4506 | + | |
| 4507 | + | |
| 4508 | + | |
| 4509 | + | |
| 4510 | + | |
| 4511 | + | |
| 4512 | + | |
| 4513 | + | |
| 4514 | + | |
| 4515 | + | |
| 4516 | + | |
4331 | 4517 | | |
4332 | 4518 | | |
4333 | 4519 | | |
| |||
0 commit comments