Skip to content

chore: update @typescript/native-preview and vue-tsgo versions#1640

Merged
zhangmo8 merged 5 commits into
devfrom
tsgo-upgrade
May 19, 2026
Merged

chore: update @typescript/native-preview and vue-tsgo versions#1640
zhangmo8 merged 5 commits into
devfrom
tsgo-upgrade

Conversation

@zhangmo8
Copy link
Copy Markdown
Collaborator

@zhangmo8 zhangmo8 commented May 18, 2026

Summary by CodeRabbit

  • Chores

    • Updated many dependencies and the package manager declaration.
    • Synced and bumped registry agent versions and their distribution references.
  • Bug Fixes

    • Fixed agent reset so creating or reselecting an agent reliably returns the editor to the correct state.
  • Improvements

    • More robust channel status and overview formatting in remote settings.
    • Normalized chat search input handling.
    • Improved message reasoning timing and display.
    • Tighter model/listing and message-type handling for more reliable UI behavior.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 331cfd22-673b-4df9-9a86-ee000c9fe6d0

📥 Commits

Reviewing files that changed from the base of the PR and between 7fa0d60 and ce1a02a.

📒 Files selected for processing (12)
  • package.json
  • resources/acp-registry/registry.json
  • resources/model-db/providers.json
  • src/renderer/settings/components/DeepChatAgentsSettings.vue
  • src/renderer/settings/components/ProviderModelList.vue
  • src/renderer/settings/components/RemoteSettings.vue
  • src/renderer/src/components/chat/AgentProgressFloat.vue
  • src/renderer/src/components/chat/ChatSearchBar.vue
  • src/renderer/src/components/chat/ChatStatusBar.vue
  • src/renderer/src/components/chat/ChatToolInteractionOverlay.vue
  • src/renderer/src/components/message/MessageBlockThink.vue
  • src/renderer/src/pages/ChatPage.vue
✅ Files skipped from review due to trivial changes (2)
  • src/renderer/src/components/chat/AgentProgressFloat.vue
  • src/renderer/src/pages/ChatPage.vue
🚧 Files skipped from review as they are similar to previous changes (6)
  • src/renderer/src/components/message/MessageBlockThink.vue
  • src/renderer/settings/components/DeepChatAgentsSettings.vue
  • src/renderer/settings/components/ProviderModelList.vue
  • src/renderer/src/components/chat/ChatSearchBar.vue
  • package.json
  • src/renderer/settings/components/RemoteSettings.vue

📝 Walkthrough

Walkthrough

Bumps package/development dependencies and packageManager; syncs many ACP registry agent versions/distributions; tightens virtual model typing; refactors resetEditor, input normalization, reasoning/verbosity typings, pending-interaction block types, and message reasoning-time normalization.

Changes

Renderer typing & UI changes

Layer / File(s) Summary
Reset editor flow & model typing
src/renderer/settings/components/DeepChatAgentsSettings.vue, src/renderer/settings/components/ProviderModelList.vue
resetEditor reads selectedAgentId then calls startCreate() or selectAgent(agentId); VirtualModelListItem 'model' variant includes explicit metadata fields, VirtualModelItem alias added, cached-item initialization and toRendererModel use the narrowed type.
Chat input & option typing
src/renderer/src/components/chat/ChatSearchBar.vue, src/renderer/src/components/chat/ChatStatusBar.vue
Input update:model-value events funneled to handleModelValueUpdate that normalizes values to string; reasoning/verbosity option helpers use NonNullable-based aliases and adjusted fallback filtering.
Pending interaction types & message timing
src/renderer/src/components/chat/ChatToolInteractionOverlay.vue, src/renderer/src/components/message/MessageBlockThink.vue, src/renderer/src/pages/ChatPage.vue, src/renderer/src/components/chat/AgentProgressFloat.vue
Narrowed PendingInteractionView.block to DisplayAssistantMessageBlock; normalized props.block.reasoning_time into ReasoningTimeRange, updated reasoningDuration, timer startTimestamp fallback, and watch sources; small aria-expanded binding change.

package.json updates

Layer / File(s) Summary
Package manager & dependencies
package.json
Updated packageManager string and bumped many dependencies (AI/SDKs, AWS Bedrock client, Electron utilities, fflate, jsonrepair, nanoid, safe-regex2, turndown, undici, etc.).
DevDependencies / tooling
package.json
Bumped dev tooling including @typescript/native-preview, vue-tsgo to 0.2.2, Playwright, Tailwind/Vite/Vue ecosystem packages, and other developer dependencies.

ACP registry updates

Layer / File(s) Summary
Agent versions & distribution references
resources/acp-registry/registry.json
Bumped versions and updated corresponding distribution package names and per-platform binary archive URLs for many agents (Auggie CLI, Claude, Cline, Codebuddy, Corust, Dirac, Factory Droid, fast-agent, Gemini CLI, GitHub Copilot, GLM, goose, Junie, Kilo, Kimi CLI, Nova, OpenCode, pi ACP, Qoder CLI, Qwen Code, Stakpak).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • zerob13

Poem

🐰 I hop through versions, types, and tiny fixes,
nudging reset paths and model-list tricks.
Registry refreshed, inputs made neat —
timers aligned and types complete.
A carrot-coded cheer for this tidy feat.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title mentions updating @typescript/native-preview and vue-tsgo versions, but the actual changes include updates to 20+ other packages, new type refactorings across multiple Vue components, and registry updates for 20+ agents—making the title incomplete and misleading about the true scope of changes. Update the title to reflect the broader scope, e.g., 'chore: update dependencies and refactor component types' or 'chore: bump dev dependencies and tighten type definitions across components.'
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tsgo-upgrade

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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.

@zhangmo8 zhangmo8 marked this pull request as draft May 18, 2026 09:53
@zhangmo8 zhangmo8 marked this pull request as ready for review May 18, 2026 10:46
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/renderer/src/components/message/MessageBlockThink.vue (1)

11-176: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix Oxfmt violations blocking CI.

oxfmt --check is failing for this file in CI, so formatting needs to be applied before merge.

As per coding guidelines, src/**/*.{ts,tsx,js,jsx,vue} must "Use Oxfmt formatting with single quotes, no semicolons, and width 100; run pnpm run format".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/renderer/src/components/message/MessageBlockThink.vue` around lines 11 -
176, This file (MessageBlockThink.vue) fails Oxfmt checks; run the project
formatter to apply the required style (single quotes, no semicolons, width 100)
by executing the repo formatting script (pnpm run format) or invoking oxfmt with
those options, then commit the changed file; locate the component by the
top-level script block and symbols such as updateDisplayedSeconds,
scheduleNextUpdate, stopTimer, and the createConfigClient usage to ensure the
generated formatting changes are applied across the script section consistently.
src/renderer/src/components/chat/ChatStatusBar.vue (1)

885-2978: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix Oxfmt violations blocking CI.

oxfmt --check is failing for this file in CI, so this PR cannot pass build-check until formatting is applied.

As per coding guidelines, src/**/*.{ts,tsx,js,jsx,vue} must "Use Oxfmt formatting with single quotes, no semicolons, and width 100; run pnpm run format".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/renderer/src/components/chat/ChatStatusBar.vue` around lines 885 - 2978,
The file ChatStatusBar.vue fails oxfmt checks; run the project formatter to fix
style (single quotes, no semicolons, width 100) and commit the formatted file:
run pnpm run format (or oxfmt with the repo config) and re-run oxfmt --check;
ensure the script block (script setup lang="ts") and exported symbols like
changeModelSelection, syncGenerationSettings, updateLocalGenerationSettings, and
resolveDefaultGenerationSettings are preserved while applying the formatting
changes, then commit the updated ChatStatusBar.vue so CI passes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/renderer/src/components/message/MessageBlockThink.vue`:
- Around line 46-56: The toReasoningTimeRange function currently accepts
start/end when typeof === 'number', which allows NaN/Infinity; update to
validate that both value.start and value.end are finite numbers using
Number.isFinite (or an equivalent finite-check) before returning { start, end }
and otherwise return null so downstream timer scheduling (e.g., code using
ReasoningTimeRange) never receives non-finite delays; locate and change the
checks in toReasoningTimeRange (and any similar conversions of
DisplayAssistantMessageBlock['reasoning_time']) to use the finite-number guard.

---

Outside diff comments:
In `@src/renderer/src/components/chat/ChatStatusBar.vue`:
- Around line 885-2978: The file ChatStatusBar.vue fails oxfmt checks; run the
project formatter to fix style (single quotes, no semicolons, width 100) and
commit the formatted file: run pnpm run format (or oxfmt with the repo config)
and re-run oxfmt --check; ensure the script block (script setup lang="ts") and
exported symbols like changeModelSelection, syncGenerationSettings,
updateLocalGenerationSettings, and resolveDefaultGenerationSettings are
preserved while applying the formatting changes, then commit the updated
ChatStatusBar.vue so CI passes.

In `@src/renderer/src/components/message/MessageBlockThink.vue`:
- Around line 11-176: This file (MessageBlockThink.vue) fails Oxfmt checks; run
the project formatter to apply the required style (single quotes, no semicolons,
width 100) by executing the repo formatting script (pnpm run format) or invoking
oxfmt with those options, then commit the changed file; locate the component by
the top-level script block and symbols such as updateDisplayedSeconds,
scheduleNextUpdate, stopTimer, and the createConfigClient usage to ensure the
generated formatting changes are applied across the script section consistently.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 23d9541c-d56b-4c6a-bb4e-108245810283

📥 Commits

Reviewing files that changed from the base of the PR and between 37a5e1c and 5e66738.

📒 Files selected for processing (9)
  • package.json
  • resources/acp-registry/registry.json
  • resources/model-db/providers.json
  • src/renderer/settings/components/RemoteSettings.vue
  • src/renderer/src/components/chat/ChatSearchBar.vue
  • src/renderer/src/components/chat/ChatStatusBar.vue
  • src/renderer/src/components/chat/ChatToolInteractionOverlay.vue
  • src/renderer/src/components/message/MessageBlockThink.vue
  • src/renderer/src/pages/ChatPage.vue
✅ Files skipped from review due to trivial changes (2)
  • src/renderer/src/components/chat/ChatToolInteractionOverlay.vue
  • src/renderer/src/pages/ChatPage.vue

Comment on lines +46 to +56
const toReasoningTimeRange = (
value: DisplayAssistantMessageBlock['reasoning_time']
): ReasoningTimeRange | null => {
if (!value || typeof value !== 'object') {
return null
}

return typeof value.start === 'number' && typeof value.end === 'number'
? { start: value.start, end: value.end }
: null
}
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 | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

cat -n src/renderer/src/components/message/MessageBlockThink.vue | head -150

Repository: ThinkInAIXYZ/deepchat

Length of output: 5041


🏁 Script executed:

# Check if the file exists and get its size
wc -l src/renderer/src/components/message/MessageBlockThink.vue

Repository: ThinkInAIXYZ/deepchat

Length of output: 127


🏁 Script executed:

# Search for scheduleNextUpdate and delay calculations
rg -n "scheduleNextUpdate|delay" src/renderer/src/components/message/MessageBlockThink.vue -A 5 -B 2

Repository: ThinkInAIXYZ/deepchat

Length of output: 898


🏁 Script executed:

# Look for how reasoningTimeRange is used
rg -n "reasoningTimeRange" src/renderer/src/components/message/MessageBlockThink.vue -A 3 -B 1

Repository: ThinkInAIXYZ/deepchat

Length of output: 780


🏁 Script executed:

# Check formatting issues - run oxfmt check on the file
rg -n "const toReasoningTimeRange\|const isFiniteNumber" src/renderer/src/components/message/MessageBlockThink.vue -A 10

Repository: ThinkInAIXYZ/deepchat

Length of output: 47


🏁 Script executed:

# Double-check JavaScript behavior with NaN
node <<'EOF'
console.log('typeof NaN:', typeof NaN)
console.log('typeof Infinity:', typeof Infinity)
console.log('NaN.toFixed(2) throws:', (() => { try { NaN.toFixed(2) } catch(e) { return e.name } })())
console.log('NaN - 100:', NaN - 100)
console.log('Math.max(0, NaN):', Math.max(0, NaN))
console.log('setTimeout with NaN delay:', 'fires immediately (coerced to 0)')
EOF

Repository: ThinkInAIXYZ/deepchat

Length of output: 238


Validate reasoning timestamps as finite numbers before scheduling timers.

typeof value.start === 'number' allows NaN and Infinity, which propagate into timer delay calculations and cause immediate timer firing instead of proper scheduling intervals.

Proposed fix
 const toReasoningTimeRange = (
   value: DisplayAssistantMessageBlock['reasoning_time']
 ): ReasoningTimeRange | null => {
   if (!value || typeof value !== 'object') {
     return null
   }

-  return typeof value.start === 'number' && typeof value.end === 'number'
-    ? { start: value.start, end: value.end }
-    : null
+  const isFiniteNumber = (input: unknown): input is number =>
+    typeof input === 'number' && Number.isFinite(input)
+
+  return isFiniteNumber(value.start) && isFiniteNumber(value.end) && value.end >= value.start
+    ? { start: value.start, end: value.end }
+    : null
 }
📝 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 toReasoningTimeRange = (
value: DisplayAssistantMessageBlock['reasoning_time']
): ReasoningTimeRange | null => {
if (!value || typeof value !== 'object') {
return null
}
return typeof value.start === 'number' && typeof value.end === 'number'
? { start: value.start, end: value.end }
: null
}
const toReasoningTimeRange = (
value: DisplayAssistantMessageBlock['reasoning_time']
): ReasoningTimeRange | null => {
if (!value || typeof value !== 'object') {
return null
}
const isFiniteNumber = (input: unknown): input is number =>
typeof input === 'number' && Number.isFinite(input)
return isFiniteNumber(value.start) && isFiniteNumber(value.end) && value.end >= value.start
? { start: value.start, end: value.end }
: null
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/renderer/src/components/message/MessageBlockThink.vue` around lines 46 -
56, The toReasoningTimeRange function currently accepts start/end when typeof
=== 'number', which allows NaN/Infinity; update to validate that both
value.start and value.end are finite numbers using Number.isFinite (or an
equivalent finite-check) before returning { start, end } and otherwise return
null so downstream timer scheduling (e.g., code using ReasoningTimeRange) never
receives non-finite delays; locate and change the checks in toReasoningTimeRange
(and any similar conversions of DisplayAssistantMessageBlock['reasoning_time'])
to use the finite-number guard.

@zhangmo8 zhangmo8 merged commit ec22c6a into dev May 19, 2026
3 checks passed
@zhangmo8 zhangmo8 deleted the tsgo-upgrade branch May 19, 2026 07:04
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.

1 participant