Commit da32d09
Mobile Models Registry (#218)
* ios(work): register Droid model group and tighten question card UX
- Add Droid provider tab with Anthropic/OpenAI/Google/Factory sub-providers
to the model picker registry.
- Drop the standalone reasoning-effort segmented row; gpt-5 mini exposes
only medium/high.
- Hide redundant single-provider filter rows for Claude/Codex tabs.
- Auto-scroll the structured-question card above the keyboard when its
freeform field gains focus, swap the page dots for inline indicators,
and always suppress question input tool cards.
* ios(work): address Greptile P2 nits — tappable reasoning header + family-first routing
- Model picker: tapping the header of a reasoning-capable card now commits
the model with `effort: nil` (server default) instead of requiring a tier
pill. Users who don't care about effort aren't forced to pick one.
- Droid provider routing: prefer `family` over ID substring matches so an
Anthropic model whose ID happens to contain "codex" still resolves to
the anthropic bucket; substring fallbacks only run when family is empty.
* fix(chat): clear staged steer chip on dispatch + allow attaching mid-turn
- deriveRuntimeState resolves a steer on any non-queued user_message
with the same steerId, so the chip clears after Send-Now (inline
dispatch) and other delivery paths. cancelSteer now emits the
cancelled notice even when the queue is empty server-side, so the
delete button clears stale chips after a dispatch race.
- AgentChatComposer no longer short-circuits image paste / file
attach when turnActive — the steer endpoint already accepts
attachments, the guard just blocked the legitimate steer-with-image
case.
- shipLane skill + playbook: clarify that ScheduleWakeup and
run_in_background task notifications do not autonomously wake an
agent inside a Claude Agent SDK v2 chat (e.g. ADE Work chats);
SDKSession only advances on a fresh session.send(...). Either poll
synchronously inside the active turn or stop and ask the user to
re-invoke /shipLane.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iter 3 — runtime-environment banner + rebase onto main
Adds a "Runtime Environment" block to the chat session system prompt that
names the host (ADE Work chat) and the backing tool (Claude Agent SDK v2,
Codex CLI, Cursor ACP, Droid ACP, OpenCode), plus the wake-up semantics
for that runtime.
This fixes the original confusion that produced the chaotic ship-lane chat
on April 30: the Claude Agent SDK v2 chat uses the `claude_code` preset
verbatim, so the model believed it was inside the Claude Code CLI and
called ScheduleWakeup expecting an autonomous re-invocation. Now the
append explicitly says "you are NOT in the CLI; ScheduleWakeup is not
honored; Bash run_in_background task notifications are queued until the
next user message".
- systemPrompt.ts: optional runtime parameter on
buildCodingAgentSystemPrompt + describeRuntime() helper covering all
five ADE chat runtimes.
- agentChatService.ts: pass runtime: "codex-cli" through Codex's
developer instructions; prepend the SDK-v2 runtime banner to the
Claude V2 systemPrompt append array (above ## ADE Workspace).
- systemPrompt.test.ts: 6 new tests pinning the banner content per
runtime, and asserting the block is omitted when runtime is not
passed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ship: iter 4 — address CodeRabbit review on iter 3 (4 comments)
- systemPrompt.ts (Major): align ScheduleWakeup wording with the
shipLane playbook. "not available" → "not honored — the host
accepts the call but never re-invokes you". Test updated.
- WorkModelCatalog.swift (Minor): map provider == "factory" into the
"droid" group key so Factory-provider models (glm-*, kimi-*,
minimax-*) land in the Droid group instead of forming a separate
one.
- WorkModelPickerSheet.swift (Minor): normalize currentReasoningEffort
the same way as the incoming effort before diffing — avoids
spurious "changed" comparisons from casing/whitespace drift.
- WorkNavigationAndTranscriptHelpers.swift (Major): preserve the
malformed-question fallback. Tool-call suppression now only fires
when the structured-question payload parses cleanly; on toolResult,
skip only when no fallback card exists, otherwise let the result
update the rendered card. Mirrors the conditional logic already
used in WorkErrorAndMessageHelpers.swift.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 11dc11b commit da32d09
14 files changed
Lines changed: 427 additions & 150 deletions
File tree
- .claude/commands
- apps
- desktop/src
- main/services
- ai/tools
- chat
- renderer/components/chat
- ios/ADE/Views/Work
- docs/playbooks
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
82 | 86 | | |
83 | 87 | | |
84 | 88 | | |
| |||
90 | 94 | | |
91 | 95 | | |
92 | 96 | | |
93 | | - | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
94 | 104 | | |
95 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
96 | 110 | | |
97 | 111 | | |
98 | 112 | | |
99 | 113 | | |
100 | 114 | | |
101 | 115 | | |
102 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
103 | 121 | | |
104 | 122 | | |
105 | 123 | | |
| |||
116 | 134 | | |
117 | 135 | | |
118 | 136 | | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
119 | 152 | | |
120 | 153 | | |
121 | 154 | | |
| |||
Lines changed: 38 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
74 | 112 | | |
75 | 113 | | |
76 | 114 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
6 | 50 | | |
7 | 51 | | |
8 | 52 | | |
| |||
31 | 75 | | |
32 | 76 | | |
33 | 77 | | |
| 78 | + | |
34 | 79 | | |
35 | 80 | | |
36 | 81 | | |
37 | 82 | | |
38 | 83 | | |
| 84 | + | |
39 | 85 | | |
40 | 86 | | |
41 | 87 | | |
| |||
71 | 117 | | |
72 | 118 | | |
73 | 119 | | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
74 | 127 | | |
75 | 128 | | |
76 | 129 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2637 | 2637 | | |
2638 | 2638 | | |
2639 | 2639 | | |
| 2640 | + | |
2640 | 2641 | | |
2641 | 2642 | | |
2642 | 2643 | | |
| |||
10539 | 10540 | | |
10540 | 10541 | | |
10541 | 10542 | | |
| 10543 | + | |
| 10544 | + | |
| 10545 | + | |
| 10546 | + | |
| 10547 | + | |
10542 | 10548 | | |
10543 | 10549 | | |
10544 | 10550 | | |
| |||
14052 | 14058 | | |
14053 | 14059 | | |
14054 | 14060 | | |
14055 | | - | |
14056 | | - | |
14057 | | - | |
| 14061 | + | |
| 14062 | + | |
| 14063 | + | |
| 14064 | + | |
| 14065 | + | |
| 14066 | + | |
14058 | 14067 | | |
14059 | 14068 | | |
14060 | 14069 | | |
| |||
Lines changed: 0 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
795 | 795 | | |
796 | 796 | | |
797 | 797 | | |
798 | | - | |
799 | 798 | | |
800 | 799 | | |
801 | 800 | | |
| |||
847 | 846 | | |
848 | 847 | | |
849 | 848 | | |
850 | | - | |
851 | 849 | | |
852 | 850 | | |
853 | 851 | | |
| |||
Lines changed: 11 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
473 | 473 | | |
474 | 474 | | |
475 | 475 | | |
476 | | - | |
477 | | - | |
478 | | - | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
479 | 487 | | |
480 | 488 | | |
481 | 489 | | |
| |||
Lines changed: 40 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
676 | 676 | | |
677 | 677 | | |
678 | 678 | | |
| 679 | + | |
679 | 680 | | |
680 | 681 | | |
681 | 682 | | |
682 | 683 | | |
683 | 684 | | |
684 | 685 | | |
| 686 | + | |
685 | 687 | | |
686 | 688 | | |
687 | 689 | | |
| |||
699 | 701 | | |
700 | 702 | | |
701 | 703 | | |
702 | | - | |
| 704 | + | |
703 | 705 | | |
704 | 706 | | |
705 | | - | |
706 | | - | |
707 | | - | |
| 707 | + | |
| 708 | + | |
708 | 709 | | |
709 | 710 | | |
710 | 711 | | |
| |||
716 | 717 | | |
717 | 718 | | |
718 | 719 | | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
719 | 723 | | |
720 | 724 | | |
721 | 725 | | |
| |||
797 | 801 | | |
798 | 802 | | |
799 | 803 | | |
| 804 | + | |
800 | 805 | | |
801 | 806 | | |
802 | 807 | | |
803 | 808 | | |
| 809 | + | |
804 | 810 | | |
805 | 811 | | |
806 | 812 | | |
| |||
812 | 818 | | |
813 | 819 | | |
814 | 820 | | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
815 | 835 | | |
816 | 836 | | |
817 | 837 | | |
818 | 838 | | |
819 | 839 | | |
820 | 840 | | |
| 841 | + | |
| 842 | + | |
821 | 843 | | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
826 | 857 | | |
827 | | - | |
828 | | - | |
829 | | - | |
830 | 858 | | |
| 859 | + | |
831 | 860 | | |
832 | 861 | | |
833 | 862 | | |
| |||
0 commit comments