Skip to content

fix: disable doubao coding plan selection - #3379

Merged
Calcium-Ion merged 1 commit into
QuantumNous:mainfrom
seefs001:refactor/rm-coding-plan
Mar 23, 2026
Merged

fix: disable doubao coding plan selection#3379
Calcium-Ion merged 1 commit into
QuantumNous:mainfrom
seefs001:refactor/rm-coding-plan

Conversation

@seefs001

@seefs001 seefs001 commented Mar 22, 2026

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • Bug Fixes
    • Improved handling of deprecated channel configuration with clear deprecation notices
    • Enhanced channel editing state management to properly distinguish between creating new channels and editing existing ones

@coderabbitai

coderabbitai Bot commented Mar 22, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

Modified EditChannelModal.jsx to handle deprecation of the "Doubao Coding Plan" base URL option. Added a deprecation constant and state tracking to preserve existing deprecated configurations while preventing new channels from adopting the deprecated value. Updated the selector UI to display a tooltip message and conditionally disable the option based on loaded channel state.

Changes

Cohort / File(s) Summary
Deprecation Handling for Doubao Coding Plan
web/src/components/table/channels/modals/EditChannelModal.jsx
Added DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL constant and initialBaseUrlRef to track deprecated base URLs. Updated channel base URL selector to render deprecation tooltip, disable "Doubao Coding Plan" option for new channels, and preserve ability to maintain existing deprecated configurations. Set/cleared ref during channel load and creation cycles.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 A plan deprecated hops away,
Yet old friends hold their sway,
With tooltip whispers, soft and kind,
New paths excluded, not confined,
The modal remembers what came before! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: disabling the Doubao Coding Plan selection in the channel modal UI.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

CodeRabbit can generate a title for your PR based on the changes.

Add @coderabbitai placeholder anywhere in the title of your PR and CodeRabbit will replace it with a title based on the changes in the PR. You can change the placeholder by changing the reviews.auto_title_placeholder setting.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between deff59a and 6c074ef.

📒 Files selected for processing (1)
  • web/src/components/table/channels/modals/EditChannelModal.jsx

],
};

const DEPRECATED_DOUBAO_CODING_PLAN_BASE_URL = 'doubao-coding-plan';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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”).

Comment on lines +422 to +432
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>
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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.

Suggested change
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.

@Calcium-Ion
Calcium-Ion merged commit d6982c8 into QuantumNous:main Mar 23, 2026
1 check passed
RoodraNambisa added a commit to RoodraNambisa/new-api that referenced this pull request Mar 24, 2026
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
VeryGoodUser1 pushed a commit to xmz-ai/new-api that referenced this pull request Apr 3, 2026
…plan

fix: disable doubao coding plan selection
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants