fix: disable doubao coding plan selection - #3379
Conversation
WalkthroughModified Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 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 Tip CodeRabbit can generate a title for your PR based on the changes.Add |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/src/components/table/channels/modals/EditChannelModal.jsx`:
- Line 127: The code uses DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL set to
'doubao-coding-plan', but the backend deprecated special-base is the full
resolved URL, so existing channels with the resolved URL aren't recognized as
deprecated; update the check logic that references
DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL (and all occurrences) to accept both
forms: preserve the existing short token for legacy records and also treat the
backend-resolved URL 'https://ark.cn-beijing.volces.com/api/coding/v3' as
equivalent (either by replacing DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL with the
full URL or by adding a secondary constant and updating comparisons in
EditChannelModal.jsx and the other referenced usages to normalize/compare
against both values before deciding to “keep existing”).
- Around line 422-432: The new user-facing strings
(doubaoCodingPlanDeprecationMessage and the label in
doubaoCodingPlanOptionLabel) are hard-coded and bypass i18n; update the
component to use the useTranslation() hook and replace those literals with
t('...') calls (e.g., t('doubaoCodingPlan.deprecationMessage') and
t('doubaoCodingPlan.label')), keeping canKeepDeprecatedDoubaoCodingPlan logic
unchanged; ensure translation keys are added to the locale resource files and
import/use the hook at the top of EditChannelModal.jsx.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: f949a33c-7e5f-4d30-bfd1-19a4f08d6bf8
📒 Files selected for processing (1)
web/src/components/table/channels/modals/EditChannelModal.jsx
| ], | ||
| }; | ||
|
|
||
| const DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL = 'doubao-coding-plan'; |
There was a problem hiding this comment.
Potential mismatch with backend deprecated base URL breaks “keep existing” behavior
The guard compares/stores doubao-coding-plan, but backend special-base config for OpenAI uses https://ark.cn-beijing.volces.com/api/coding/v3 (constant/channel.go:205-208). If loaded channels carry the resolved URL, existing deprecated channels won’t be recognized as keepable.
🔧 Suggested fix
-const DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL = 'doubao-coding-plan';
+const DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL =
+ 'https://ark.cn-beijing.volces.com/api/coding/v3';
+const DEPRECATED_DOUBAO_CODING_PLAN_LEGACY_KEY = 'doubao-coding-plan';
...
-const canKeepDeprecatedDoubaoCodingPlan =
- initialBaseUrlRef.current === DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL;
+const canKeepDeprecatedDoubaoCodingPlan = [
+ DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL,
+ DEPRECATED_DOUBAO_CODING_PLAN_LEGACY_KEY,
+].includes((initialBaseUrlRef.current || '').trim());Also applies to: 425-425, 963-963, 3081-3083
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@web/src/components/table/channels/modals/EditChannelModal.jsx` at line 127,
The code uses DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL set to
'doubao-coding-plan', but the backend deprecated special-base is the full
resolved URL, so existing channels with the resolved URL aren't recognized as
deprecated; update the check logic that references
DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL (and all occurrences) to accept both
forms: preserve the existing short token for legacy records and also treat the
backend-resolved URL 'https://ark.cn-beijing.volces.com/api/coding/v3' as
equivalent (either by replacing DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL with the
full URL or by adding a secondary constant and updating comparisons in
EditChannelModal.jsx and the other referenced usages to normalize/compare
against both values before deciding to “keep existing”).
| const doubaoCodingPlanDeprecationMessage = | ||
| 'Doubao Coding Plan 不再允许新增。根据火山方舟文档,Coding 套餐额度仅适用于 AI Coding 产品内调用,不适用于单独 API 调用;在非 AI Coding 产品中使用对应的 Base URL 和 API Key 可能被视为违规,并可能导致订阅停用或账号封禁。'; | ||
| const canKeepDeprecatedDoubaoCodingPlan = | ||
| initialBaseUrlRef.current === DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL; | ||
| const doubaoCodingPlanOptionLabel = ( | ||
| <Tooltip content={doubaoCodingPlanDeprecationMessage} position='left'> | ||
| <span className='inline-flex items-center gap-2'> | ||
| <span>Doubao Coding Plan</span> | ||
| </span> | ||
| </Tooltip> | ||
| ); |
There was a problem hiding this comment.
New tooltip/label text bypasses i18n pipeline
Line 422-432 introduces user-facing strings outside t(...). This won’t be localized and violates frontend i18n conventions for this path.
🌐 Suggested fix
- const doubaoCodingPlanDeprecationMessage =
- 'Doubao Coding Plan 不再允许新增。根据火山方舟文档,Coding 套餐额度仅适用于 AI Coding 产品内调用,不适用于单独 API 调用;在非 AI Coding 产品中使用对应的 Base URL 和 API Key 可能被视为违规,并可能导致订阅停用或账号封禁。';
+ const doubaoCodingPlanDeprecationMessage = t(
+ 'Doubao Coding Plan 不再允许新增。根据火山方舟文档,Coding 套餐额度仅适用于 AI Coding 产品内调用,不适用于单独 API 调用;在非 AI Coding 产品中使用对应的 Base URL 和 API Key 可能被视为违规,并可能导致订阅停用或账号封禁。',
+ );
...
- <span>Doubao Coding Plan</span>
+ <span>{t('Doubao Coding Plan')}</span>As per coding guidelines: “Frontend i18n: Use useTranslation() hook and call t('中文key') in components.”
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const doubaoCodingPlanDeprecationMessage = | |
| 'Doubao Coding Plan 不再允许新增。根据火山方舟文档,Coding 套餐额度仅适用于 AI Coding 产品内调用,不适用于单独 API 调用;在非 AI Coding 产品中使用对应的 Base URL 和 API Key 可能被视为违规,并可能导致订阅停用或账号封禁。'; | |
| const canKeepDeprecatedDoubaoCodingPlan = | |
| initialBaseUrlRef.current === DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL; | |
| const doubaoCodingPlanOptionLabel = ( | |
| <Tooltip content={doubaoCodingPlanDeprecationMessage} position='left'> | |
| <span className='inline-flex items-center gap-2'> | |
| <span>Doubao Coding Plan</span> | |
| </span> | |
| </Tooltip> | |
| ); | |
| const doubaoCodingPlanDeprecationMessage = t( | |
| 'Doubao Coding Plan 不再允许新增。根据火山方舟文档,Coding 套餐额度仅适用于 AI Coding 产品内调用,不适用于单独 API 调用;在非 AI Coding 产品中使用对应的 Base URL 和 API Key 可能被视为违规,并可能导致订阅停用或账号封禁。', | |
| ); | |
| const canKeepDeprecatedDoubaoCodingPlan = | |
| initialBaseUrlRef.current === DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL; | |
| const doubaoCodingPlanOptionLabel = ( | |
| <Tooltip content={doubaoCodingPlanDeprecationMessage} position='left'> | |
| <span className='inline-flex items-center gap-2'> | |
| <span>{t('Doubao Coding Plan')}</span> | |
| </span> | |
| </Tooltip> | |
| ); |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@web/src/components/table/channels/modals/EditChannelModal.jsx` around lines
422 - 432, The new user-facing strings (doubaoCodingPlanDeprecationMessage and
the label in doubaoCodingPlanOptionLabel) are hard-coded and bypass i18n; update
the component to use the useTranslation() hook and replace those literals with
t('...') calls (e.g., t('doubaoCodingPlan.deprecationMessage') and
t('doubaoCodingPlan.label')), keeping canKeepDeprecatedDoubaoCodingPlan logic
unchanged; ensure translation keys are added to the locale resource files and
import/use the hook at the top of EditChannelModal.jsx.
commit dbf900a Author: CaIon <i@caion.me> Date: Wed Mar 25 00:04:01 2026 +0800 fix: restore doubao coding plan deprecation and regex ignored models lost during conflict resolution commit 7399e47 Author: CaIon <i@caion.me> Date: Tue Mar 24 23:56:10 2026 +0800 feat: add slide-in animations and update translations for new UI elements # Conflicts: # web/src/components/table/channels/modals/EditChannelModal.jsx commit a5e2026 Author: CaIon <i@caion.me> Date: Tue Mar 24 23:53:50 2026 +0800 security: harden Docker and release CI workflows - Pin all GitHub Actions to commit SHA to prevent supply chain attacks - Enable SLSA provenance attestation (mode=max) and SBOM generation - Add cosign keyless signing for Docker images via GitHub OIDC - Capture and output image digests to GitHub Job Summary - Pin Dockerfile base images to digest (bun:1, golang:1.26.1-alpine, debian:bookworm-slim) - Add SHA256 checksum generation for binary releases (Linux/macOS/Windows) - Update actions/checkout v3->v4, actions/setup-go v3->v5 in release.yml commit 9ae9040 Merge: 0191a68 ded4a12 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:04:06 2026 +0800 Merge pull request QuantumNous#3401 from seefs001/fix/convert-openai-detail-field fix: the "detail" field is empty, an empty field was sent to upstream commit 0191a68 Merge: 16221f8 9ecad90 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:03:57 2026 +0800 Merge pull request QuantumNous#3400 from seefs001/fix/openai-usage refactor: optimize billing flow for OpenAI-to-Anthropic convert commit 16221f8 Merge: 763c3ff 929b506 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:03:47 2026 +0800 Merge pull request QuantumNous#3399 from seefs001/refactor/codex-usage Refactor/codex usage commit 763c3ff Merge: c667e47 e520977 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:03:36 2026 +0800 Merge pull request QuantumNous#3331 from seefs001/fix/claude-beta-query fix: apply forced beta query at final upstream URL stage commit c667e47 Merge: 216b94d b09337e Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:03:23 2026 +0800 Merge pull request QuantumNous#3333 from seefs001/fix/channel-affinity-disable fix: honor channel affinity skip-retry when channel is disabled commit 216b94d Merge: 49eb533 e9f8f62 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:03:01 2026 +0800 Merge pull request QuantumNous#3335 from seefs001/chore/adjuct-default-settings adjuct default settings commit 49eb533 Merge: 7693eda 45f65c2 Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:02:44 2026 +0800 Merge pull request QuantumNous#3381 from seefs001/feature/regex-ignored-upstream-models feat: support regex-prefixed ignored upstream models commit 7693eda Merge: d6982c8 f40eb4e Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 15:02:34 2026 +0800 Merge pull request QuantumNous#3393 from seefs001/fix/oauth-bind fix: oauth bind callback handling commit ded4a12 Author: Seefs <i@seefs.me> Date: Mon Mar 23 15:00:20 2026 +0800 fix: the "detail" field is empty, an empty field was sent to the upstream system. commit d6982c8 Merge: deff59a 6c074ef Author: Calcium-Ion <i@caion.me> Date: Mon Mar 23 14:53:13 2026 +0800 Merge pull request QuantumNous#3379 from seefs001/refactor/rm-coding-plan fix: disable doubao coding plan selection commit 9ecad90 Author: Seefs <i@seefs.me> Date: Mon Mar 23 14:22:12 2026 +0800 refactor: optimize billing flow for OpenAI-to-Anthropic convert commit 929b506 Author: Seefs <i@seefs.me> Date: Mon Mar 23 13:54:54 2026 +0800 refactor: simplify codex account modal and collapse raw json by default commit 755ece2 Author: Seefs <i@seefs.me> Date: Mon Mar 23 00:58:59 2026 +0800 refactor: simplify codex account modal and collapse raw json by default commit f40eb4e Author: Seefs <i@seefs.me> Date: Mon Mar 23 00:48:55 2026 +0800 fix: oauth bind callback handling commit 45f65c2 Author: Seefs <i@seefs.me> Date: Sun Mar 22 15:43:03 2026 +0800 feat: support regex-prefixed ignored upstream models commit 6c074ef Author: Seefs <i@seefs.me> Date: Sun Mar 22 15:01:09 2026 +0800 fix: disable doubao coding plan selection commit deff59a Author: CaIon <i@caion.me> Date: Sun Mar 22 13:55:03 2026 +0800 fix: increase StreamScannerMaxBufferMB limit and add handling for gpt-5.4-nano prefix commit 3c51608 Merge: 4d675b4 e80d867 Author: Seefs <40468931+seefs001@users.noreply.github.com> Date: Sun Mar 22 00:43:13 2026 +0800 Merge pull request QuantumNous#3360 from lcq225/docs/improve-bt-installation-guide docs: 完善宝塔面板部署教程并修复链接错误 commit 4d675b4 Merge: 87b426f 2c3ae32 Author: Seefs <40468931+seefs001@users.noreply.github.com> Date: Sun Mar 22 00:39:49 2026 +0800 Merge pull request QuantumNous#3357 from wenyifancc/cache_llama_cpp feat: Add support for counting cache-hit tokens in llama.cpp commit 87b426f Merge: 42846c6 49db514 Author: Seefs <40468931+seefs001@users.noreply.github.com> Date: Sun Mar 22 00:32:01 2026 +0800 Merge pull request QuantumNous#3369 from RedwindA/feat/logsManagement feat: add server log file management to performance settings commit 49db514 Author: RedwindA <austinaosid@gmail.com> Date: Sat Mar 21 21:48:31 2026 +0800 fix: align log cleanup button with other controls in the row commit 13122aa Author: RedwindA <austinaosid@gmail.com> Date: Sat Mar 21 21:11:52 2026 +0800 fix: refresh log info on partial delete failure commit dcd0911 Author: RedwindA <austinaosid@gmail.com> Date: Sat Mar 21 20:40:39 2026 +0800 fix: log management race condition, partial delete reporting, and UX issues - Fix data race on gin.DefaultWriter during log rotation by adding LogWriterMu - Report partial failure when some log files fail to delete instead of always returning success - Fix misleading "logging disabled" banner shown before API responds - Fix en.json translation for numeric validation message commit e904579 Author: RedwindA <austinaosid@gmail.com> Date: Sat Mar 21 20:06:49 2026 +0800 feat: add server log file management to performance settings Add API endpoints (GET/DELETE /api/performance/logs) to list and clean up server log files by count or by age. Track the active log file path in the logger to prevent deleting the currently open log. Add a management UI section in the performance settings page with log directory info, file statistics, and cleanup controls. Includes i18n translations for all supported languages (en, fr, ja, ru, vi, zh-CN, zh-TW). commit e80d867 Author: mm413 <lcq225@163.com> Date: Fri Mar 20 20:13:30 2026 +0800 Update docs/installation/BT.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> commit cf86fe5 Author: lcq225 <lcq225@163.com> Date: Fri Mar 20 20:06:09 2026 +0800 docs: 完善宝塔面板部署教程并修复链接错误 - 完善 docs/installation/BT.md,从 2 行扩展为完整教程 - 包含前置要求、安装步骤、配置说明、常见问题 - 修复 README.zh_CN.md 中的链接错误 - 所有内容基于官方文档 https://docs.newapi.pro 编写 commit 2c3ae32 Author: wenyifan <yifan.wen@eisgroup.com> Date: Fri Mar 20 16:48:04 2026 +0800 fix map commit 498199b Author: wenyifan <yifan.wen@eisgroup.com> Date: Fri Mar 20 16:38:48 2026 +0800 fix code quality commit ff29900 Author: wenyifan <yifan.wen@eisgroup.com> Date: Fri Mar 20 16:10:18 2026 +0800 feat: Add support for counting cache-hit tokens in llama.cpp OpenAI-Compatible API commit eff5185 Author: Seefs <i@seefs.me> Date: Fri Mar 20 16:00:36 2026 +0800 refactor: show codex account info tag and highlight plan type in usage modal commit e9f8f62 Author: Seefs <i@seefs.me> Date: Thu Mar 19 16:58:13 2026 +0800 fix: raise default overload disk threshold to 95% commit 5fe8e98 Author: Seefs <i@seefs.me> Date: Thu Mar 19 16:56:28 2026 +0800 fix: default codex and claude channel affinity templates to skip retry on failure commit e520977 Author: Seefs <i@seefs.me> Date: Thu Mar 19 15:49:50 2026 +0800 fix: apply forced beta query at final upstream URL stage commit b09337e Author: Seefs <i@seefs.me> Date: Wed Mar 18 16:08:31 2026 +0800 fix: honor channel affinity skip-retry when preferred channel is disabled
…plan fix: disable doubao coding plan selection
Summary by CodeRabbit
Release Notes