claude-5-model-ordering -> Primary#902
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
📝 WalkthroughWalkthroughClaude Opus 5 is integrated across desktop and iOS model registries, aliases, provider discovery, reasoning metadata, fast-mode handling, pricing, CLI planning, model catalogs, and generated CLI help. ChangesClaude Opus 5 support
CLI help refresh
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/ios/ADE/Resources/VoiceGlossary.json (1)
4-106: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winNew entry pushes
contextualTermspast the documented/tested 100-phrase cap.The file's own
_aboutcomment sayscontextualTermsmust stay under iOS's ~100-phrase cap forSpeechAnalyzercontextual biasing, andtestBundledVoiceGlossaryKeepsContextualTermsWithinSpeechAnalyzerLimitassertsterms.count <= 100. Counting the full array shown here (lines 5–105), adding"Claude Opus 5"brings the total to 101 entries with no corresponding removal, which breaks that test and exceeds Apple's documentedcontextualStringsbiasing limit (confirmed ~100 short phrases).Trim an existing/stale entry (e.g., a superseded alias) when adding a new model term, or confirm the array is intentionally over budget and update the test/comment accordingly.
🩹 Example fix (pick whichever entry is least valuable to keep)
- "Claude Opus 5", "Claude Opus 4.8", "Claude Sonnet 5", "Claude Haiku 4.5", "Claude Fable 5", + "Claude Opus 5",(illustrative only — the real fix is to remove one stale term elsewhere in the list, not to drop the new one)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/ios/ADE/Resources/VoiceGlossary.json` around lines 4 - 106, Keep contextualTerms at or below the documented 100-entry SpeechAnalyzer limit by removing one stale or superseded term from the array while retaining the new model term "Claude Opus 5". Preserve the existing glossary limit test and related documentation; do not update them to permit more than 100 entries.
🧹 Nitpick comments (2)
apps/desktop/src/renderer/components/terminals/cliLaunch.test.ts (1)
443-453: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAssert the fast-mode argument pairing and value.
arrayContainingchecks the tokens independently, so the test would pass if--settingsand its JSON payload were separated or reversed. Likewise,toContain("fastMode")does not prove the startup command serializesfastMode: true; assert the adjacent argument slice and the enabled value.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/desktop/src/renderer/components/terminals/cliLaunch.test.ts` around lines 443 - 453, Strengthen the assertions in the launch test around the CLI arguments and startupCommand: verify that --settings is immediately followed by the JSON payload containing fastMode: true, rather than checking tokens independently with arrayContaining. Replace the broad fastMode substring assertion with a check that confirms the serialized enabled value and adjacent argument pairing.apps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swift (1)
215-224: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueDuplicate opus-4-8 aliases within the same
fastRefsset literal.Lines 217-218 re-add
"claude-opus-4-8","anthropic/claude-opus-4-8","anthropic/claude-opus-4-8-api", and"opencode/anthropic/claude-opus-4-8", which already exist verbatim at lines 223-224 in the same literal. Harmless sinceSetliterals dedupe duplicate values at runtime, but it's dead weight from the migration edit.♻️ Proposed cleanup
"opus", "opus-5", "opus-5.0", "opus-5-0", "claude-opus-5", "anthropic/claude-opus-5", "anthropic/claude-opus-5-api", "opencode/anthropic/claude-opus-5", - "claude-opus-4-8", "anthropic/claude-opus-4-8", "anthropic/claude-opus-4-8-api", - "opencode/anthropic/claude-opus-4-8", "opus-4-7", "claude-opus-4-7", "anthropic/claude-opus-4-7", "anthropic/claude-opus-4-7-api", "opencode/anthropic/claude-opus-4-7", "opencode/anthropic/opus", "opus-1m", "opus[1m]", "claude-opus-4-7-1m", "anthropic/claude-opus-4-7-1m", "opus-4.8", "opus-4-8", "claude-opus-4-8", "anthropic/claude-opus-4-8", "opencode/anthropic/claude-opus-4-8",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swift` around lines 215 - 224, Remove the duplicate opus-4-8 aliases from the fastRefs set literal, specifically the repeated claude-opus-4-8, anthropic/claude-opus-4-8, anthropic/claude-opus-4-8-api, and opencode/anthropic/claude-opus-4-8 entries. Keep the original occurrences and all other aliases unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/desktop/src/main/services/chat/agentChatService.ts`:
- Around line 4423-4425: Update the selected Opus 4.8 branch in the surrounding
session model construction to return the existing sessionPayload, preserving
both the selected runtime model and modelId instead of returning model:
normalized. Keep the isBareClaudeOpusRuntimeAlias and sessionModelId conditions
intact.
---
Outside diff comments:
In `@apps/ios/ADE/Resources/VoiceGlossary.json`:
- Around line 4-106: Keep contextualTerms at or below the documented 100-entry
SpeechAnalyzer limit by removing one stale or superseded term from the array
while retaining the new model term "Claude Opus 5". Preserve the existing
glossary limit test and related documentation; do not update them to permit more
than 100 entries.
---
Nitpick comments:
In `@apps/desktop/src/renderer/components/terminals/cliLaunch.test.ts`:
- Around line 443-453: Strengthen the assertions in the launch test around the
CLI arguments and startupCommand: verify that --settings is immediately followed
by the JSON payload containing fastMode: true, rather than checking tokens
independently with arrayContaining. Replace the broad fastMode substring
assertion with a check that confirms the serialized enabled value and adjacent
argument pairing.
In `@apps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swift`:
- Around line 215-224: Remove the duplicate opus-4-8 aliases from the fastRefs
set literal, specifically the repeated claude-opus-4-8,
anthropic/claude-opus-4-8, anthropic/claude-opus-4-8-api, and
opencode/anthropic/claude-opus-4-8 entries. Keep the original occurrences and
all other aliases unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: cd92cb0a-a30e-43cf-be05-8b70a74ce893
⛔ Files ignored due to path filters (4)
docs/ARCHITECTURE.mdis excluded by!docs/**docs/features/chat/README.mdis excluded by!docs/**docs/features/chat/agent-routing.mdis excluded by!docs/**docs/features/sync-and-multi-device/ios-companion.mdis excluded by!docs/**
📒 Files selected for processing (24)
apps/ade-cli/src/cli.test.tsapps/ade-cli/src/cli.tsapps/ade-cli/src/tuiClient/components/ModelPicker/modelPickerLayout.test.tsapps/desktop/resources/ade-cli-help.txtapps/desktop/src/main/services/ai/claudeModelUtils.test.tsapps/desktop/src/main/services/ai/claudeModelUtils.tsapps/desktop/src/main/services/ai/tools/ctoOperatorTools.tsapps/desktop/src/main/services/chat/agentChatService.tsapps/desktop/src/main/services/chat/droidModelsDiscovery.test.tsapps/desktop/src/main/services/chat/droidModelsDiscovery.tsapps/desktop/src/main/services/cto/ctoStateService.tsapps/desktop/src/main/services/opencode/openCodeInventory.test.tsapps/desktop/src/main/services/opencode/openCodeInventory.tsapps/desktop/src/main/services/usage/usagePricing.tsapps/desktop/src/main/services/usage/usageTrackingService.test.tsapps/desktop/src/renderer/components/terminals/cliLaunch.test.tsapps/desktop/src/shared/claudeCliModels.tsapps/desktop/src/shared/modelRegistry.test.tsapps/desktop/src/shared/modelRegistry.tsapps/ios/ADE/Resources/VoiceGlossary.jsonapps/ios/ADE/Views/Components/ADEDesignSystem.swiftapps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swiftapps/ios/ADE/Views/Work/WorkModelCatalog.swiftapps/ios/ADETests/ADETests.swift
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 47f1d8dde3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "GPT-5.5", | ||
| "GPT-5.4", | ||
| "GPT-5.3", | ||
| "GPT-5.2", |
There was a problem hiding this comment.
Keep GPT-5.3 in the dictation glossary
When a user dictates the still-supported gpt-5.3 alias, removing this contextual term makes speech recognition less reliable even though apps/desktop/src/shared/modelRegistry.ts still registers gpt-5.3 for GPT-5.3-Codex. This Opus-focused change should add the new Opus term without dropping an existing model name from the shared voice glossary.
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 50387707ce
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| WorkModelOption(id: "claude-fable-5", displayName: "Claude Fable 5", tier: .flagship, tagline: "Flagship · 1M context", provider: "claude", serviceTiers: ["fast"]), | ||
| WorkModelOption(id: "claude-opus-4-8", displayName: "Claude Opus 4.8 1M", tier: .flagship, tagline: "Flagship · 1M context", provider: "claude", serviceTiers: ["fast"]), | ||
| WorkModelOption( | ||
| id: "claude-opus-5", |
There was a problem hiding this comment.
Add Opus 5 to the Droid fallback catalog
When the iOS picker is shown before the paired host's model catalog loads—or when that catalog is unavailable—it uses workCuratedModelCatalogGroups(). This change adds Opus 5 to the Claude and OpenCode fallback groups, but the Droid fallback group below still offers only claude-opus-4-6, its fast variant, and 4.5. As a result, mobile users in the fallback state cannot select the new primary Droid model and may instead launch a retired concrete ID; add a Droid Opus 5 fallback entry with the matching reasoning and fast-mode metadata.
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/ios/ADE/Views/Work/WorkModelCatalog.swift (1)
530-542: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winNormalize the new OpenCode Opus 5 route.
The catalog introduces
opencode/anthropic/claude-opus-5, but the canonical and runtime switches do not recognize that alias, andworkModelLookupKeysdoes not strip theopencode/prefix. Consequently,workModelIdsEquivalent("opencode/anthropic/claude-opus-5", "claude-opus-5")returnsfalse, breaking lookup/equivalence for the new OpenCode model.Add the OpenCode aliases to both switches or normalize the
opencode/prefix centrally.Proposed fix
- "claude-opus-5", "anthropic/claude-opus-5", "anthropic/claude-opus-5-api": + "claude-opus-5", "anthropic/claude-opus-5", "anthropic/claude-opus-5-api", + "opencode/anthropic/claude-opus-5":Apply the equivalent alias to
workClaudeRuntimeModelId.Also applies to: 812-814, 839-841
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/ios/ADE/Views/Work/WorkModelCatalog.swift` around lines 530 - 542, Normalize the new OpenCode Opus 5 identifier across the model-resolution path. Update the canonical and runtime switches, including workClaudeRuntimeModelId, to recognize opencode/anthropic/claude-opus-5, and ensure workModelLookupKeys removes the opencode/ prefix so it compares equivalently with claude-opus-5.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@apps/ios/ADE/Views/Work/WorkModelCatalog.swift`:
- Around line 530-542: Normalize the new OpenCode Opus 5 identifier across the
model-resolution path. Update the canonical and runtime switches, including
workClaudeRuntimeModelId, to recognize opencode/anthropic/claude-opus-5, and
ensure workModelLookupKeys removes the opencode/ prefix so it compares
equivalently with claude-opus-5.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 4c2121b1-ed3b-4907-bf5b-1a8e7db02386
📒 Files selected for processing (7)
apps/desktop/src/main/services/chat/agentChatService.test.tsapps/desktop/src/main/services/chat/agentChatService.tsapps/desktop/src/renderer/components/terminals/cliLaunch.test.tsapps/ios/ADE/Resources/VoiceGlossary.jsonapps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swiftapps/ios/ADE/Views/Work/WorkModelCatalog.swiftapps/ios/ADETests/ADETests.swift
💤 Files with no reviewable changes (1)
- apps/ios/ADE/Resources/VoiceGlossary.json
🚧 Files skipped from review as they are similar to previous changes (3)
- apps/desktop/src/renderer/components/terminals/cliLaunch.test.ts
- apps/ios/ADETests/ADETests.swift
- apps/ios/ADE/Views/Work/WorkChatComposerAndInputViews.swift
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4fc66759af
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| capabilities: CANONICAL_DROID_ANTHROPIC_CAPABILITIES, | ||
| reasoningTiers: ["low", "medium", "high", "xhigh", "max"], | ||
| defaultReasoningEffort: "high", | ||
| serviceTiers: ["fast"], |
There was a problem hiding this comment.
Wire Droid fast mode before advertising it
When Droid discovery canonicalizes a bare opus model (or a custom Opus 5 proxy), this metadata makes the desktop and iOS pickers offer Fast mode, but neither Droid launch path consumes the resulting flag: buildDroidSdkSessionSettings sends only model, autonomy, interaction, and reasoning settings, while the Droid branch of buildTrackedCliLaunchCommand omits args.fastMode. Selecting Fast therefore silently launches the standard Droid model. Either pass the provider's fast setting/model through both SDK and CLI launches or stop publishing this service tier for Droid.
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f87ba5950e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "opus", "opus-5", "opus-5.0", "opus-5-0", "claude-opus-5", | ||
| "anthropic/claude-opus-5", "anthropic/claude-opus-5-api", "opencode/anthropic/claude-opus-5", |
There was a problem hiding this comment.
Keep Droid Opus 5 out of the Fast fallback
When the provider is Droid and the model is claude-opus-5, workComposerModelOption correctly finds the new Droid catalog row without a Fast service tier, but this unconditional fallback still makes workComposerSupportsFastMode("claude-opus-5", "droid") return true. The mobile composers therefore expose and persist an inert Fast toggle even though createDynamicDroidCliModelDescriptor explicitly strips this tier because Droid's launch contract does not consume it; scope these aliases to Claude/OpenCode providers (and update the contradictory Droid Fast documentation) rather than matching the model reference alone.
Useful? React with 👍 / 👎.
Summary by CodeRabbit
Greptile Summary
This PR promotes Claude Opus 5 across the ADE model selection paths. The main changes are:
Confidence Score: 5/5
Safe to merge with low risk.
The changes are consistent model catalog, alias, pricing, help text, and test updates across desktop, CLI, Droid, OpenCode, and iOS paths.
Files Needing Attention: No files require special attention.
What T-Rex did
Important Files Changed
Sequence Diagram
Reviews (6): Last reviewed commit: "ship: iteration 5 — align Droid Fast met..." | Re-trigger Greptile