Skip to content

fix(dashboard): expose Volcano console cookie field and unwrap error objects - #13107

Merged
diegosouzapw merged 2 commits into
diegosouzapw:release/v3.8.51from
HouMinXi:fix/volcengine-connect-error-and-cookie-input
Sep 11, 2026
Merged

diegosouzapw merged 2 commits into
diegosouzapw:release/v3.8.51from
HouMinXi:fix/volcengine-connect-error-and-cookie-input

Conversation

@HouMinXi

@HouMinXi HouMinXi commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  1. Console cookie field: Volcano Ark Plan (volcengine-coding-plan / volcengine-agent-plan) quota fetchers require console session cookies (volcConsoleCookie), but the UI only offered in-app browser login automation. When deployed on remote or headless instances where browser binaries are missing, operators had no way to configure the cookie. Added volcConsoleCookie to QuotaScrapingFields so cookies can be entered and edited directly in the dashboard.
  2. Error unwrapping: In VolcengineConnectModal, structured error responses (such as route guard rejections { code: "LOCAL_ONLY", message: "..." }) were previously passed as data?.error into new Error(), rendering [object Object] in the UI toast. Switched to extractErrorMessage to unpack nested error messages cleanly.

Testing

  • Added tests/unit/volcengine-plan-cookie-field.test.ts covering credential assignment, blank-input retention, schema validation limits, and error unwrapping.
  • Ran npm run typecheck:core (clean).
  • Ran node scripts/check/check-file-size.mjs (clean).

@HouMinXi
HouMinXi force-pushed the fix/volcengine-connect-error-and-cookie-input branch 2 times, most recently from 6e98cbb to 7665098 Compare September 10, 2026 12:58
…objects

Volcano Ark Plan quota fetchers require console cookies, but the dashboard
only offered in-app browser automation which is blocked on remote instances
via LOCAL_ONLY route guards and missing headless browser binaries.

Expose volcConsoleCookie in QuotaScrapingFields so operators can paste
their console cookie directly when editing or adding connections. Also
unwrap structured error objects via extractErrorMessage in VolcengineConnectModal
to prevent rendering '[object Object]' when backend route guards fail.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
@HouMinXi
HouMinXi force-pushed the fix/volcengine-connect-error-and-cookie-input branch from 7665098 to 6b84148 Compare September 11, 2026 08:21
The dashboard cookie/error-unwrap change had no changelog.d fragment,
so Merge integrity failed this PR as unique.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
@HouMinXi

Copy link
Copy Markdown
Contributor Author

Pushed 5b6b205e0. This PR had no changelog.d fragment; added changelog.d/fixes/13107-volcengine-console-cookie.md.

Remaining Merge integrity cli-tunnel dry-run, Docs Gates (356 vs 358), Fast Quality (autoCombo.test.ts TS2739 / pack-policy), ESLint (volcengine-plan-binding-upsert.test.ts any), and the unit-shard failures are the same set currently on release/v3.8.51. Unique diff does not touch those files.

@diegosouzapw
diegosouzapw merged commit 1714214 into diegosouzapw:release/v3.8.51 Sep 11, 2026
8 of 16 checks passed
@HouMinXi
HouMinXi deleted the fix/volcengine-connect-error-and-cookie-input branch September 16, 2026 12:44
Githab-capibara added a commit to Githab-capibara/OmniRoute that referenced this pull request Sep 17, 2026
…objects (diegosouzapw#13107)

Both halves are real. A quota fetcher that needs console cookies with no way to enter them is unusable on any headless or remote install, and `new Error($'{'}object{'}'}` rendering `[object Object]` in a toast is exactly what makes a route-guard rejection unreadable.

---

Validated in one consolidated worktree cut from `release/v3.8.51`, boarded with the other 19 PRs of this batch. Two in-batch conflicts, both additive and resolved by keeping each side: the `ENVIRONMENT.md` table (diegosouzapw#13035 + diegosouzapw#13011) and the `chatHelpers.ts` import block (diegosouzapw#12975 on the tip + diegosouzapw#13017).

- `typecheck:core` clean; `check:dashboard-typecheck` OK (206 pre-existing, within baseline); `check:changelog-integrity` OK; `check:docs-counts` migrations ✓
- complexity 2816 / baseline 3218 and cognitive-complexity 1271 / baseline 1437 — both under baseline
- 531 of 532 focused assertions green across the batch's 46 test files
- `check-file-size` rebaselined for the batch's real growth (annotation `_rebaseline_2026_09_11_mergebatch_v3851_houminxi`, landed on diegosouzapw#13038), attributed per PR

The single red is **not this batch**: `tests/unit/combo/quota-weighted-strategy.test.ts` → "A/B isolation: 7 hard-empty + 2 at 0.5% + 1 at 40%, floor=1" asserts an order between two connections of identical weight and flakes on the pure tip too — 2 failures in 4 runs at `origin/release/v3.8.51` with nothing from this batch applied.

⚠️ base-red inherited: diegosouzapw#12732 — `Docs Gates`, `Merge integrity`, `No new ESLint warnings`, `Unit Tests fast-path` and `Fast Quality Gates` reproduce on the pure tip (provider count 356 vs the 358 the modules define, SKILL.md drift, and `open-sse/utils/stream.ts` at 3115 > frozen 3098, untouched here).

Thanks @HouMinXi — the live evidence on these (X500 logs, `storage.sqlite` state, real `/v1/models` probes, the 36-minute outage write-up) is what let a 20-PR batch be reviewed as a unit.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…objects (diegosouzapw#13107)

Both halves are real. A quota fetcher that needs console cookies with no way to enter them is unusable on any headless or remote install, and `new Error($'{'}object{'}'}` rendering `[object Object]` in a toast is exactly what makes a route-guard rejection unreadable.

---

Validated in one consolidated worktree cut from `release/v3.8.51`, boarded with the other 19 PRs of this batch. Two in-batch conflicts, both additive and resolved by keeping each side: the `ENVIRONMENT.md` table (diegosouzapw#13035 + diegosouzapw#13011) and the `chatHelpers.ts` import block (diegosouzapw#12975 on the tip + diegosouzapw#13017).

- `typecheck:core` clean; `check:dashboard-typecheck` OK (206 pre-existing, within baseline); `check:changelog-integrity` OK; `check:docs-counts` migrations ✓
- complexity 2816 / baseline 3218 and cognitive-complexity 1271 / baseline 1437 — both under baseline
- 531 of 532 focused assertions green across the batch's 46 test files
- `check-file-size` rebaselined for the batch's real growth (annotation `_rebaseline_2026_09_11_mergebatch_v3851_houminxi`, landed on diegosouzapw#13038), attributed per PR

The single red is **not this batch**: `tests/unit/combo/quota-weighted-strategy.test.ts` → "A/B isolation: 7 hard-empty + 2 at 0.5% + 1 at 40%, floor=1" asserts an order between two connections of identical weight and flakes on the pure tip too — 2 failures in 4 runs at `origin/release/v3.8.51` with nothing from this batch applied.

⚠️ base-red inherited: diegosouzapw#12732 — `Docs Gates`, `Merge integrity`, `No new ESLint warnings`, `Unit Tests fast-path` and `Fast Quality Gates` reproduce on the pure tip (provider count 356 vs the 358 the modules define, SKILL.md drift, and `open-sse/utils/stream.ts` at 3115 > frozen 3098, untouched here).

Thanks @HouMinXi — the live evidence on these (X500 logs, `storage.sqlite` state, real `/v1/models` probes, the 36-minute outage write-up) is what let a 20-PR batch be reviewed as a unit.
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