v1.1.6 makes automation rules first-class: per-action targeting and overrides, an explicitDocumentation Index
Fetch the complete documentation index at: https://ade-app.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
laneMode for whether a run reuses or creates a lane (with a preset → template helper that handles collisions and a synthetic lane-setup row when allocation fails), and a renderer pass that swaps the bespoke automations chrome for the shared CTO design tokens. Sync gets a forceHostRole lock so a desktop hosting the phone can’t be silently demoted by stale on-disk state, and the ade-cli proof tools learn explicit ownerKind / ownerId routing. Test suite is consolidated heavily — orchestrator, CTO, and PR-service tests collapse from dozens of fragments into a handful of feature suites, and dead tests for ripped-out features are removed. iOS picks up a Work-surface refactor (model catalog/picker, session grouping, per-host token shelf) and a stale-host-key cleanup. Ships in TestFlight build 8 of 1.1.1.
Desktop
- Per-action automation overrides. Rule actions can now carry their own
targetLaneId,modelConfig, andpermissionConfig. The planner andautomationServicemerge these on top of rule-level config, with sanitation so per-actionpermissionConfignever leaksundefinedkeys and the Cursor provider key stays clean. Per-key clears inpermissionControlsreplace the old wipe-all behaviour so you can reset a single override without losing the rest. laneModeis a first-class execution setting.AutomationExecutiongainslaneMode+laneNamePreset(and a preservedlaneNameTemplate).resolveExecutionLaneIdbranches onlaneMode:createallocates a fresh lane viacreateLaneForRun, which resolves the preset/template, disambiguates collisions with#issueNumberor a short timestamp, then falls back to a 4-char random suffix. Allocation failures emit a syntheticlane-setupaction_resultsrow so they surface in run history instead of silently falling back to the primary lane.- Legacy create-lane rules migrate on load.
projectConfigServicerewrites old “create lane as first action” rules intolaneMode: 'create'on load, carrying the prior name template forward as acustompreset. Unmigrated rows still render inActionRowas read-only with a “now in Execution” pill so older rules display sensibly during the transition. - Automations renderer adopts the shared design tokens. New
designTokens.tsre-exports the CTO panel tokens (inputCls,selectCls,labelCls,cardCls, …) as the single source of truth for the automations surface.shared.tscollapsesINPUT_CLS/INPUT_STYLE/CARD_STYLEto thin aliases over those tokens, so existing call sites inherit the new chrome with zero churn.RunDetailPanelswaps hex literals for CSS variables, giveslane-setuprows aGitBranchicon + accent border, and renderserror_messageintext-error. - Rules-tab affordances.
RulesTabshows a “Last run: failed” pill on the rule list with click-through to history; the empty state usescardCls.ActionListdrops “Create lane” from the +Add menu now that lane creation lives in Execution. - Sync host-role lock.
syncServicegainsforceHostRoleso the desktop instance hosting phone sync cannot be demoted to viewer by stale on-disk state.main.tsserialisesreconcileSyncHostContextsso async runs land in order, and the post-clearagentChatServicerefreshes its reconstruction context whensdkSessionIdis cleared. syncHostServiceno longer silent-fails on CONNECTING.sendAndWaitdrops the silentCONNECTINGfall-through; callers now get an explicit error instead of a swallowed promise.ade-cliproof routing. Addsproof attach/proof captureplus explicitownerKind/ownerIdflags on the RPC proof tools, withchat/praliases.adeRpcServerrejects half-specified explicit owners and preserves PR/issue relations. Capture-style commands run headless by default. New owner/caption flags are wired intoVALUE_CARRIER_FLAGS.create-laneautomation action. Available as an explicit action type in addition to thelaneMode: 'create'execution setting, for rules that need lane creation mid-flow rather than at run start.
Test suite consolidation
After the recent feature ripouts, the test tree was carrying a lot of dead and fragmented files. This release collapses them.- Orchestrator tests: 17 → 12 suites.
orchestratorAdapters.test.tsabsorbsbaseOrchestratorAdapter+providerOrchestratorAdapter+permissionMapping+modelConfigResolver.mission.test.tsabsorbsmissionLifecycle+missionBudgetService+missionStateDoc.orchestratorPlanning.test.tsabsorbsorchestratorContext+delegationContracts. All 463 cases preserved. - CTO tests: 26 → 7 suites. Linear OAuth/credential/client into
linearAuth; sync/dispatcher/outbound/template/workflow-file intolinearSync; intake/ingress/routing/closeout intolinearIntake; worker- intoctoWorkerLifecycle; pipelineHelpers + pipelineLabels intopipeline; settings panel + Linear sync panel + session view state intoctoUi. 226 cases preserved verbatim, scoped per-source via outerdescribe(...)blocks. - PR-service tests: 10 → 5 feature suites.
prMergeQueue(queueLandingService + integrationPlanning + integrationValidation),prRebase(prRebaseResolver + resolverUtils viavi.importActual),prAsync(prPollingService + prSummaryService),prIssueResolution(issueInventoryService + prIssueResolver). 180 cases preserved. - Dead tests removed. Orphaned tests in
orchestrator/,prs/,missions/, and a handful of others where the source files no longer exist. A no-opexpect(true).toBe(true)inusageTrackingService.test.tsis rewritten to a realnot.toThrow()check.
iOS
- Work surface refactor. New
WorkModelCatalog+WorkModelPickerSheetreplace the inline model selection.WorkSessionGroupingis split out as a helper, and now counts awaiting-input sessions inglobalLiveSessionCountso the badge matches what the user sees. - Per-host token shelf in keychain.
KeychainServicecarries paired-auth payloads keyed by host, so the phone can hold credentials for multiple desktops without thrashing on switch.SyncServiceprunes legacy host keys on load and removes the stale saved profile on a failure path. - Host-identity guards.
SyncServicedropssuspendAutoReconnecton a host-identity mismatch — a swapped desktop is treated as a fresh pairing rather than a recoverable disconnect. SettingsPairingSection. New surface for managing paired desktops directly from settings.- Lane stack canvas refinements.
LaneStackCanvasScreenand theLaneListViewParts/LaneComponentssplit land alongside the desktop laneMode work, keeping the iOS canvas in sync with the new lane lifecycle. - Mobile UI polish. Assorted layout fixes across Work and Lanes — caught during a hand pass on the device after the renderer changes landed.