Skip to content

Conversation

@daniel-lxs
Copy link
Member

@daniel-lxs daniel-lxs commented Nov 7, 2025

Fixes crash when using MiniMax M2 Stable and other OpenAI-compatible providers.

Problem

Streaming chunks with choices: null caused "Cannot read properties of null (reading '0')" error.

Solution

  • Use choices?.[0] instead of choices[0] for safe array access
  • Add provider-specific error handling for MiniMax base_resp errors
  • Add regression test for null choices handling

Testing

✅ All tests passing (4013 passed)
✅ Specific test for null choices array added

Fixes "Cannot read properties of null (reading '0')" error when using MiniMax M2 Stable and other OpenAI-compatible providers that send heartbeat/error chunks with null choices arrays.

Changes:
- Use choices?.[0] instead of choices[0] for safe array access
- Add provider-specific error handling for MiniMax base_resp errors
- Add regression test for null choices handling
@daniel-lxs daniel-lxs requested review from cte, jr and mrubens as code owners November 7, 2025 17:47
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. bug Something isn't working labels Nov 7, 2025
@roomote
Copy link
Contributor

roomote bot commented Nov 7, 2025

Rooviewer Clock   See task on Roo Cloud

Review complete. No issues found.

The PR correctly fixes the null choices array crash by using safe array access (?. operator) and adding provider-specific error handling for MiniMax. The test coverage is comprehensive.

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Nov 7, 2025
@daniel-lxs daniel-lxs moved this from Triage to PR [Needs Review] in Roo Code Roadmap Nov 7, 2025
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Nov 7, 2025
@mrubens mrubens merged commit fc2147a into main Nov 7, 2025
21 checks passed
@mrubens mrubens deleted the fix/null-choices-array-crash branch November 7, 2025 18:18
@github-project-automation github-project-automation bot moved this from PR [Needs Review] to Done in Roo Code Roadmap Nov 7, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Nov 7, 2025
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Nov 9, 2025
* fix(i18n): Update zh-TW run command title (RooCodeInc#8631)

* feat(commands, webview): Add TDD built-in command; Refactor welcome tips and test guide definition

* refactor(project-wiki): separate command from subtask initialization

* feat(command): update built-in commands count and names in tests

* Add Claude Haiku 4.5 (RooCodeInc#8673)

* Release v3.28.17 (RooCodeInc#8674)

* Changeset version bump (RooCodeInc#8675)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(editor): prevent file editing issues when git diff views are open (RooCodeInc#8676)

* fix(editor): prevent file editing issues when git diff views are open

Add scheme checks to ensure only file:// URIs are matched when finding editors,
avoiding issues with git diffs and other schemes. Includes error logging for
failed editor lookups.

* Remove the warnings

* fix(editor): enforce file:// scheme in editor lookups to prevent git diff issues

---------

Co-authored-by: daniel-lxs <[email protected]>

* web: Cloud page and updates to Pricing to explain Cloud Agent Credits (RooCodeInc#8605)

* Adds mention of Cloud agents to /pricing

* Credit pricing FAQ

* Skeleton of a /cloud page and more pricing page tweaks

* Lint

* Update apps/web-roo-code/src/app/cloud/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* Code review

* Updates copy to new credit system

* Moves Terms of Service to be backed by a markdown file, easier to read/edit/diff

* Updated ToS

* Twerm copy tweaks

* Cloud screenshot and style adjustments

* Style tweaks

* Styles

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: Add userAgent to Bedrock client for version tracking (RooCodeInc#8663)

Co-authored-by: Roo Code <[email protected]>

* feat: Cloud agents in extension (RooCodeInc#8470)

Co-authored-by: Matt Rubens <[email protected]>

* feat: Z AI: only two coding endpoints (RooCodeInc#8687) (RooCodeInc#8693)

* Remove request content from UI messages (RooCodeInc#8696)

* Left align the welcome title (RooCodeInc#8700)

* Update image generation model selection (RooCodeInc#8698)

* feat(core): enhance client ID validation and CSP configuration

* web: Mobile image in /cloud (RooCodeInc#8705)

* feat(ui): add option to hide API request details by default

* Revert cloud agents for now (RooCodeInc#8713)

* chore: add changeset for v3.28.18 (RooCodeInc#8715)

* fix(task): adjust API request handling and error message assignment

* Changeset version bump (RooCodeInc#8716)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* test: update telemetry client mocks and fix test id typo

* Normalize docs-extractor audience tags; remove admin/stakeholder; strip tool invocations (RooCodeInc#8717)

docs(extractor): normalize audience to type="user"; remove admin/stakeholder; strip tool invocation examples

* Add Intercom as a subprocessor (RooCodeInc#8718)

* web: Leftover white bg (RooCodeInc#8719)

Leftover white bg

* feat(zgsm): add supportsMaxTokens flag and adjust max token handling

* docs: update Configuring Profiles video link (RooCodeInc#8189)

Co-authored-by: Roo Code <[email protected]>

* Fix link text for Roomote Control in README (RooCodeInc#8742)

* Try a 5s status mutation timeout (RooCodeInc#8734)

* web: Landing page for the reviewerFirst pass (RooCodeInc#8740)

* First pass

* SEO

* Update apps/web-roo-code/src/app/reviewer/page.tsx

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Remove GPT‑5 instructions/reasoning_summary from UI message metadata to prevent ui_messages.json bloat (RooCodeInc#8756)

chore(gpt5): stop persisting instructions/reasoning_summary in UI message metadata

Problem: ui_messages.json was getting bloated with unused or duplicated content (system 'instructions' and 'reasoning_summary') that we do not read back. Root cause: earlier OpenAI Responses API implementation persisted these fields to per-message metadata; however, 'instructions' are already sent as top-level request instructions and 'reasoning_summary' is surfaced live via streaming events. Neither field is consumed from storage. Changes: (1) Task.persistGpt5Metadata now stores only previous_response_id; (2) removed instructions and reasoning_summary from types; (3) updated Zod schema; (4) persistence layer writes messages as-is (no sanitizer); (5) tests green. Impact: smaller ui_messages.json, no runtime behavior change for requests. Migration: old metadata fields will be ignored by schema.

* Z.ai: add GLM-4.5-X, AirX, Flash (expand model coverage) (RooCodeInc#8745)

* feat(zai): add GLM-4.5-X, AirX, Flash; sync with Z.ai docs; keep canonical api line keys

* feat(zai): add GLM-4.5V vision model (supportsImages, pricing, 16K max output); add tests

* feat(types,zai): sync Z.AI international model map and tests
- Update pricing, context window, and capabilities for:
  glm-4.5-x, glm-4.5-airx, glm-4.5-flash, glm-4.5v, glm-4.6
- Add glm-4-32b-0414-128k
- Align tests with new model specs

* fix(zai): align handler generics with expanded model ids to satisfy CI compile step

* chore(zai): remove tier pricing blocks for Z.ai models

* fix(zai): simplify names in zaiApiLineConfigs for clarity

* chore(zai): set default temperature to 0.6

---------

Co-authored-by: Roo Code <[email protected]>

* Enable browser-use tool for all image-capable models (RooCodeInc#8121)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Skip failing tools tests (RooCodeInc#8767)

* Update text for clarity in reviewer page (RooCodeInc#8753)

* feat: add GLM-4.6-turbo model to chutes ai provider (RooCodeInc#8502)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* web: Dynamic OpenGraph images (RooCodeInc#8773)

Co-authored-by: Roo Code <[email protected]>

* web: Updates CTA link in /reviewer to send people to /cloud-agents/welcome (RooCodeInc#8774)

* feat: add 'anthropic/claude-haiku-4.5' to prompt caching models (RooCodeInc#8764)

Co-authored-by: daniel-lxs <[email protected]>

* refactor(core): consolidate global custom instructions and improve shell handling

* fix: update X/Twitter username from roo_code to roocode (RooCodeInc#8780)

Co-authored-by: Roo Code <[email protected]>

* fix(zgsm): safely pass optional language metadata to avoid runtime errors

* test: update test expectations for shell handling and prompt enhancement

* fix: always show checkpoint restore options regardless of change detection (RooCodeInc#8758)

* feat: add token-budget based file reading with intelligent preview (RooCodeInc#8789)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Remove a very verbose error for cloud agents (RooCodeInc#8795)

* fix: retry API requests on stream failures instead of aborting task (RooCodeInc#8794)

* feat: improve auto-approve button responsiveness (RooCodeInc#8798)

- Add responsive breakpoint at 300px for compact view
- Icon correctly reflects state (X when off, ✓ when on) at all screen sizes
- Show abbreviated labels on very narrow screens (< 300px)
- Add triggerLabelOffShort translation key to all locales

Fixes issues from PR RooCodeInc#8152:
- Icon always showing checkmark on narrow screens
- Breakpoint activating too early (was 400px)
- Incorrect Tailwind class ordering

* Add checkpoint initialization timeout settings and fix checkpoint timeout warnings (RooCodeInc#8019)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add dynamic model loading for Roo Code Cloud provider (RooCodeInc#8728)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* refactor(tools): move imageHelpers to tools directory and update imports

* Improve checkpoint menu translations for PR RooCodeInc#7841 (RooCodeInc#8796)

Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: NaccOll <[email protected]>

* Handle Roo provider pricing correctly (RooCodeInc#8802)

* fix: preserve trailing newlines in stripLineNumbers for apply_diff (RooCodeInc#8227)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Fix checkpoints test (RooCodeInc#8803)

* Chore: Update magistral-medium-latest in mistral.ts (RooCodeInc#8364)

Co-authored-by: daniel-lxs <[email protected]>

* fix: respect nested .gitignore files in search_files (RooCodeInc#8804)

* fix(export): exclude max tokens field for models that don't support it (RooCodeInc#8464)

* chore: add changeset for v3.29.0 (RooCodeInc#8806)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#8807)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: adjust GLM-4.6-turbo max output tokens to prevent context limit errors (RooCodeInc#8822)

Co-authored-by: Roo Code <[email protected]>

* fix: change Add to Context keybinding to avoid Redo conflict (RooCodeInc#8653)

Co-authored-by: Roo Code <[email protected]>

* feat: add Google Ads conversion tracking to reviewer page (RooCodeInc#8831)

* feat: add Google Ads conversion tracking to reviewer page

* fix: add asChild prop to first button to prevent invalid HTML nesting

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Fix provider model loading race conditions (RooCodeInc#8836)

* Release v3.29.1 (RooCodeInc#8854)

chore: add changeset for v3.29.1

* Changeset version bump (RooCodeInc#8855)

* changeset version bump

* Update CHANGELOG for version 3.29.1 release

Updated version number and added release notes for 3.29.1.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* Fix caching logic in Roo provider (RooCodeInc#8860)

* fix: Remove specific Claude model version from settings descriptions (RooCodeInc#8437)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Daniel <[email protected]>

* feat: add LongCat-Flash-Thinking-FP8 models to Chutes AI provider (RooCodeInc#8426)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* Make sure not to show prices for free models (RooCodeInc#8864)

* chore: add changeset for v3.29.2 (RooCodeInc#8865)

* Changeset version bump (RooCodeIn