Reapply Batches 3-4: Skills, browser removal, provider removals (6 major-conflict cherry-picks)#11475
Conversation
…port (#11157) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com>
…ch checkboxes (#11253) Remove the "Enable URL context" and "Enable Grounding with Google search" checkboxes from Gemini and Vertex provider settings, along with: - enableUrlContext and enableGrounding fields from provider settings schemas - URL context and Google Search tool injection in completePrompt methods - Associated translation keys from all 18 locale files - Related test cases updated to reflect the removal - simplifySettings prop removed from Gemini and Vertex components (it was only used for the removed checkboxes in those components) Co-authored-by: Roo Code <roomote@roocode.com>
…11297) * refactor: remove 9 low-usage providers (Phase 0) Remove Cerebras, Chutes, DeepInfra, Doubao, Featherless, Groq, Hugging Face, IO Intelligence, and Unbound providers from the codebase. Each provider removal includes: handler, tests, model definitions, type schemas, UI settings components, fetchers, i18n references, and all wiring in shared registration/config files. - Delete 42 provider-specific files (handlers, tests, fetchers, UI components) - Remove @ai-sdk/cerebras and @ai-sdk/groq npm dependencies - Clean provider references from 68 shared files across src/, packages/types/, webview-ui/, and apps/cli/ - Remove ~490 dead i18n translation keys across 36 locale files - Add docs/ai-sdk-migration-guide.md with updated migration status - All TypeScript checks pass, 6505 tests pass with 0 failures * feat: show retired-provider message for removed provider profiles Preserve API profiles that reference removed providers instead of silently stripping their apiProvider. When a user selects a profile configured for a retired provider, the settings UI now shows an empathetic message explaining the removal instead of the provider configuration form. - Add retiredProviderNames array and isRetiredProvider() helper to packages/types/src/provider-settings.ts - Update ProviderSettingsManager sanitization to preserve retired providers (only strip truly unknown values) - Update ContextProxy sanitization to preserve retired providers - Render retired-provider message in ApiOptions.tsx when selected provider is in the retired list - Add tests for sanitization, ContextProxy, and UI behavior * feat: add retired-provider warning banner in chat view * Revert "feat: add retired-provider warning banner in chat view" This reverts commit dd593e1. * feat: show retired-provider message as inline chat response * fix: show retired provider warning on home screen Move WarningRow outside {task && ...} conditional so it renders regardless of task state. Preserve user input on retired provider intercept so text isn't lost when switching providers. - Move showRetiredProviderWarning WarningRow to unconditional render area near ProfileViolationWarning - Remove setInputValue/setSelectedImages clearing from retired provider early return in handleSendMessage - Delete unused RetiredProviderWarning.tsx (dead code) * fix: address PR review — passthrough retired-provider fields and i18n strings - Use passthrough() in saveConfig() and load() so legacy provider-specific fields (e.g. groqApiKey, deepInfraModelId) are preserved instead of silently stripped by strict Zod parse() - Move hardcoded English strings in ApiOptions.tsx and ChatView.tsx to i18n translation keys (settings:providers.retiredProviderMessage, chat:retiredProvider.{title,message,openSettings}) - Update tests to assert legacy provider-specific fields survive save and load round-trips * i18n: add retired-provider translations for all 17 locales Translate providers.retiredProviderMessage (settings) and retiredProvider.{title,message,openSettings} (chat) into ca, de, es, fr, hi, id, it, ja, ko, nl, pl, pt-BR, ru, tr, vi, zh-CN, zh-TW. * test: update ApiOptions retired-provider test to expect i18n key
Re-reviewed after 1 new commit (
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
src/services/skills/SkillsManager.ts
Outdated
| @@ -1,5 +1,6 @@ | |||
| import * as fs from "fs/promises" | |||
| import * as path from "path" | |||
| import * as os from "os" | |||
There was a problem hiding this comment.
Unused import. os is not referenced anywhere in this file -- likely a leftover from cherry-pick conflict resolution.
| import * as os from "os" |
Fix it with Roo Code or mention @roomote and request a fix.
| import React, { useCallback, useMemo } from "react" | ||
| import { Edit, Trash2 } from "lucide-react" | ||
|
|
||
| import type { SkillMetadata } from "@roo-code/types" | ||
|
|
||
| import { getAllModes } from "@roo/modes" | ||
|
|
||
| import { useAppTranslation } from "@/i18n/TranslationContext" | ||
| import { useExtensionState } from "@/context/ExtensionStateContext" | ||
| import { Button, StandardTooltip, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui" | ||
| import { vscode } from "@/utils/vscode" | ||
|
|
||
| // Sentinel value for "Any mode" since Radix Select doesn't allow empty string values | ||
| const MODE_ANY = "__any__" | ||
|
|
||
| interface SkillItemProps { | ||
| skill: SkillMetadata | ||
| onEdit: () => void | ||
| onDelete: () => void | ||
| } | ||
|
|
||
| export const SkillItem: React.FC<SkillItemProps> = ({ skill, onEdit, onDelete }) => { |
There was a problem hiding this comment.
This component is never imported by any production code. SkillsSettings.tsx renders skill items via its own inline renderSkillItem callback. Additionally, SkillItem uses the deprecated skill.mode property and the moveSkill message (which physically moves directories), while the active SkillsSettings code uses the newer modeSlugs field and updateSkillModes (which updates SKILL.md frontmatter). Having two divergent implementations for the same concept is a maintenance risk. Consider removing this file (and its test) or refactoring SkillsSettings to use it.
Fix it with Roo Code or mention @roomote and request a fix.
docs/reapplication-plan.md
Outdated
|
|
||
| ## 7. Appendix: Reapplication Complete Summary | ||
|
|
||
| Batches 1 and 2 are fully merged. The remaining 6 PRs (Batches 3–4) are blocked on product decisions, not technical issues. 5 PRs have been permanently excluded (see §8). The reapplication effort is **effectively complete** at 37/42 PRs. |
There was a problem hiding this comment.
Internal inconsistency: this line says "37 of 42 PRs reapplied" and "effectively complete at 37/42," but the progress table in section 1.5 still shows Batches 3-4 as 🔒 BLOCKED, and this same paragraph says "remaining 6 PRs are blocked on product decisions." Since the PR description confirms all product decisions are approved and the 6 cherry-picks are included here, the batch statuses and this paragraph should reflect that.
Fix it with Roo Code or mention @roomote and request a fix.
Reapply Batches 3-4 — Major Conflict Cherry-Picks
Steps 3-4 of the reapplication plan from
docs/reapplication-plan.mdContext
Following Batch 1 (PR #11473, 22 PRs) and Batch 2 (PR #11474, 9 PRs), this PR reapplies 6 major-conflict PRs covering skills infrastructure, browser use removal, and provider removals. All product decisions approved.
What This Adds (6 cherry-picks + 3 fix commits)
Batch 3 — Skills Infrastructure & Browser Use Removal
2d87edd049feat: add mode dropdown to change skill mode dynamically (#10513) #11102 — feat: add mode dropdown to change skill mode dynamically (44 conflicts resolved)ec8e86d82eux: improve Skills and Slash Commands settings UI with multi-mode support #11157 — ux: improve Skills and Slash Commands settings UI (6 conflicts resolved)34ebf04e0drefactor: remove built-in skills and built-in skills mechanism #11414 — refactor: remove built-in skills mechanism (4 conflicts resolved)f4cccc09d2refactor: remove browser use functionality entirely #11392 — refactor: remove browser use functionality entirely (5 conflicts resolved)Batch 4 — Provider Removals
f5707bb431feat: remove Enable URL context and Enable Grounding with Google search checkboxes #11253 — feat: remove URL context/Grounding checkboxes from Gemini/Vertex (4 conflicts resolved)506c93b04erefactor: remove 9 low-usage providers and add retired-provider UX #11297 — refactor: remove 9 low-usage providers + retired-provider UX (14 conflicts resolved)Fix Commits
7ba4134215— fix: resolve AI-SDK contamination and ghost imports from cherry-picks902d8d5d0d— fix: add missing skills type exports to @roo-code/types07352a4807— fix: resolve SkillsSettings import, Dialog mock, and Task.ts type errorsTotal conflicts resolved: 77
Skipped PRs (reclassified as AI-SDK-entangled)
@ai-sdk/azureandfrom "ai"AI SDK Contamination Check ✅
rooMessage.tsfileRooMessage,readRooMessages,saveRooMessagesreferencesfrom "ai"or@ai-sdkimports in diffVerification
✅ 5,224 backend tests passed (362 files)
✅ 1,267 webview-ui tests passed (119 files)
✅ 14/14 packages type-check clean
Summary of all reapplication work
Related
docs/reapplication-plan.md