feat(devin): give both Devin providers a mark and make the CLI one addable - #4322
Conversation
…dable The dashboard drew a coloured initial tile for `devin` and `devin-cli` because neither id had an icon alias, and the title-cased fallback rendered the local one as "Devin Cli". Add `devin.svg`, cropped from Devin's own documentation logo to its symbol, and alias both ids to it. Provenance and the reason Windsurf's plated W was not used are recorded in the provider-icons README. `devin-cli` also could not be added from the dashboard. The add-provider list is built from `featured || authKind === "key" || dashboardPreset`, and this provider is none of the first two, so the only way in was hand-editing config.json — which is how it ended up missing from a picker that already had the cloud row. It is a dashboard preset now; it stays out of the featured strip because it needs an installed CLI and a completed `devin auth login` first.
|
✅ Deterministic PR hygiene checks passed. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe change adds Devin branding for ChangesDevin provider integration
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Feature Merge Risk: ⚪ Minimal · up to The provider branding and dashboard registration changes have no identified merge-blocking risk. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 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 |
리뷰 · 우선순위 46 / 80이 PR은 지금 아이콘 쪽은 기존 규칙과 맞습니다. README에 적힌 대로 소스는 이름표도 맞춥니다. 더 중요한 절반은 발견성입니다. 테스트는 라인 1334 (
메인테이너의 판단이 필요한 지점
너의 추천 이 댓글은 grok-bot이 작성했습니다 |
Summary
Neither Devin provider had an icon alias, so the dashboard drew a coloured initial tile for both, and the title-cased fallback rendered the local one as "Devin Cli".
devin-clialso could not be added from the dashboard at all.devin.svgis fetched fromhttps://docs.devin.ai/logo/light.svgand cropped to its symbol. The source is a 160x24 horizontal lockup; the three-leaf mark occupies the left 24 units and thedevinwordmark starts at x=34.2, so aviewBox="0 0 24 24"window keeps the whole symbol and excludes every wordmark path. The thirteen symbol paths and all seven gradients are verbatim and nothing is translated, so theuserSpaceOnUsegradient coordinates stay valid. Cropping a lockup to its symbol is whatcursor-color.svgandgajae-code.svgalready do; the alternative was a wordmark in a 20px box, which the provider-icons README refuses.devin.ai/favicon.svgsits behind a Vercel security checkpoint that answers 429 with an HTML page, andcognition.aipublishes only a raster favicon, so the docs site is the reachable first-party vector. Windsurf does publishwindsurf.com/favicon.svg, a plated W, but that names the retired brand for a provider labelled Cognition. Both ids share the one mark, themeta-model/meta-museshape: they are two transports into the same product. The mark carries a gradient, so it is drawn as an image and is not a candidate for the masked set.The second half is discoverability.
derive.tsbuilds the add-provider list fromfeatured || authKind === "key" || dashboardPreset, anddevin-cliis none of the first two, so the only way to add it was to hand-editconfig.json— which is how it came to be missing from a picker that already carried the clouddevinrow. It is a dashboard preset now. It stays out of the featured strip because it needs an installed CLI and a completeddevin auth loginbefore it can answer anything, unlike Ollama or LM Studio.devinitself is unchanged:devlog/_plan/260911_devin_two_providers/001_plan.mdpins it out of the preset and featured lists as the experimental unofficial bridge.Verification
Assertions checked directly against the built modules (icon src, display names, registry flags, and that the committed SVG carries the symbol paths and no wordmark path) — all pass. The mark was rendered at 96px and 200px to confirm the crop frames the symbol without clipping.
tests/providers/devin-cli-adapter.test.tscarries the regression: both ids resolve to/provider-icons/devin.svg, both display names are readable, anddashboardPresetis pinned true with the reason.Repository-wide
bun run testandbun run typecheck: NOT RUN locally, per the operator constraint for this session. CI covers them on this head.The screenshot above lives on
codex/assets-devin-mark-preview, a branch that exists only to host PR evidence and is never merged.Checklist
devgui/public/provider-icons/README.mdSummary by CodeRabbit