Skip to content

chore: integrated vue-tsgo#1299

Merged
zhangmo8 merged 3 commits intodevfrom
vue-tsgo
Feb 5, 2026
Merged

chore: integrated vue-tsgo#1299
zhangmo8 merged 3 commits intodevfrom
vue-tsgo

Conversation

@zhangmo8
Copy link
Collaborator

@zhangmo8 zhangmo8 commented Feb 5, 2026

Summary by CodeRabbit

  • Chores
    • Updated recommended VS Code extensions for development environments.
    • Improved TypeScript type-checking tooling and project configuration for more reliable local checks.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 5, 2026

📝 Walkthrough

Walkthrough

Migrates web type-checking from vue-tsc to vue-tsgo (package.json script and devDependency), adds a new tsconfig.app.tsgo.json with path aliases and includes, updates tsconfig.app.json compiler flags/paths, and recommends TypeScriptTeam.native-preview in VSCode extensions.

Changes

Cohort / File(s) Summary
VSCode Configuration
​.vscode/extensions.json
Added TypeScriptTeam.native-preview to recommended extensions.
Type Checking Migration
package.json
Replaced devDependency vue-tsc with vue-tsgo and updated typecheck:web script to use vue-tsgo --project tsconfig.app.tsgo.json.
New tsgo TSConfig
tsconfig.app.tsgo.json
Added new TS config extending web base, sets compilerOptions (module: esnext, composite:false, noEmit:true, etc.), path aliases (@/*, @shell/*, @shared/*, @shadcn/*), and explicit include globs for renderer/shell/floating/splash/preload/shared.
TSConfig Adjustments
tsconfig.app.json
Changed composite from true→false, removed baseUrl, added declaration:false, emitDeclarationOnly:false, noEmit:true, and updated path mappings to use relative ("./...") targets.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I hopped through configs, keen and light,
Swapped old checks for a brand new sight,
Aliases snug in tidy rows,
Native preview gently glows,
Type-checked carrots — what a bite!

🚥 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 'chore: integrated vue-tsgo' accurately describes the main change: replacing vue-tsc with vue-tsgo across configuration files and package.json.
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
  • Post copyable unit tests in a comment
  • Commit unit tests in branch vue-tsgo

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.

Copy link
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

🤖 Fix all issues with AI agents
In `@package.json`:
- Line 183: The dependency "vue-tsgo": "0.0.1-yggdrasill.11" in package.json is
invalid and will break pnpm install/typecheck; replace that entry with the
official Vue type-checker "vue-tsc" (e.g., "vue-tsc": "3.2.4") or, if you intend
to use TypeScript's native preview, replace it with "@typescript/native-preview"
instead, and update any scripts (e.g., the typecheck:web script) to call the
chosen binary name ("vue-tsc" or "@typescript/native-preview"/"tsgo") so pnpm
run typecheck:web resolves correctly.

"vue-router": "4",
"vue-sonner": "^2.0.9",
"vue-tsc": "^2.2.12",
"vue-tsgo": "0.0.1-yggdrasill.11",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

vue-tsgo npm package version 0.0.1-yggdrasill.11 TypeScript compatibility

💡 Result:

I couldn’t find any publicly indexed npm package/version matching vue-tsgo@0.0.1-yggdrasill.11 (no npm/unpkg results for that exact name+version), so I can’t verify its TypeScript compatibility from authoritative metadata (e.g., peerDependencies).

To determine compatibility, check the published manifest directly from your environment:

npm view vue-tsgo@0.0.1-yggdrasill.11 peerDependencies
npm view vue-tsgo@0.0.1-yggdrasill.11 engines
npm view vue-tsgo@0.0.1-yggdrasill.11 dependencies

If it’s actually vue-tsc (the common Vue typecheck CLI), current releases declare peerDependencies.typescript as >=5.0.0. (app.unpkg.com)

Citations:


🌐 Web query:

vue-tsgo latest version TypeScript 5.8 compatibility

💡 Result:

  • “vue-tsgo”: there doesn’t appear to be an official Vue tool by that name; the Vue CLI type-checker is vue-tsc (part of vuejs/language-tools). [4]
  • Latest vue-tsc: v3.2.4 (released 2026-01-26). [1] (Also reflected by Snyk as “latest version 3.2.4”.) [2]
  • TypeScript 5.8 compatibility: vue-tsc declares a peer dependency of typescript >= 5.0.0, so TypeScript 5.8.x is compatible. [3]
  • TypeScript “tsgo” (native preview) compatibility: not a drop-in replacement for vue-tsctsgo is a separate executable provided by @typescript/native-preview and Vue tooling currently targets the normal typescript (tsc/tsserver) ecosystem rather than tsgo. [5]

Sources: [1] [2] [3] [4] [5]


🏁 Script executed:

cat package.json | head -50

Repository: ThinkInAIXYZ/deepchat

Length of output: 3835


🏁 Script executed:

rg "vue-tsgo|vue-tsc" --type json

Repository: ThinkInAIXYZ/deepchat

Length of output: 195


🏁 Script executed:

git ls-files | grep -E "(package\.json|\.npmrc|pnpm-workspace|lerna)" | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 97


🏁 Script executed:

cat pnpm-workspace.yaml

Repository: ThinkInAIXYZ/deepchat

Length of output: 129


🏁 Script executed:

fd vue-tsgo

Repository: ThinkInAIXYZ/deepchat

Length of output: 47


🏁 Script executed:

find . -name "tsconfig.app.tsgo.json" -o -name "tsconfig*" | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 153


🏁 Script executed:

cat tsconfig.app.tsgo.json

Repository: ThinkInAIXYZ/deepchat

Length of output: 1222


🏁 Script executed:

cat package.json | sed -n '183,185p'

Repository: ThinkInAIXYZ/deepchat

Length of output: 178


🏁 Script executed:

rg "typecheck:web" -A 2 -B 2

Repository: ThinkInAIXYZ/deepchat

Length of output: 1512


Remove or replace "vue-tsgo"—this package does not exist in any public registry.

The package vue-tsgo@0.0.1-yggdrasill.11 is not found on npm or any public package registry. This will fail during pnpm install and break the pnpm run typecheck:web script.

Replace it with the official Vue type-checker vue-tsc (latest v3.2.4, compatible with TypeScript ≥5.0.0), or if using TypeScript's native preview tool tsgo directly, add @typescript/native-preview instead.

🤖 Prompt for AI Agents
In `@package.json` at line 183, The dependency "vue-tsgo": "0.0.1-yggdrasill.11"
in package.json is invalid and will break pnpm install/typecheck; replace that
entry with the official Vue type-checker "vue-tsc" (e.g., "vue-tsc": "3.2.4")
or, if you intend to use TypeScript's native preview, replace it with
"@typescript/native-preview" instead, and update any scripts (e.g., the
typecheck:web script) to call the chosen binary name ("vue-tsc" or
"@typescript/native-preview"/"tsgo") so pnpm run typecheck:web resolves
correctly.

Copy link
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: 2

🤖 Fix all issues with AI agents
In `@tsconfig.app.json`:
- Around line 27-30: The tsconfig.app.json is listed in the root tsconfig.json
project references but has "composite": false and "noEmit": true, which prevents
it from being built by tsc --build; either remove tsconfig.app.json from the
root tsconfig.json references array if it is intended only for type-checking, or
make it a proper composite project by setting "composite": true (and
adjusting/delete "noEmit": true/"declaration": false/"emitDeclarationOnly" as
appropriate so it can emit artefacts) to ensure tsc --build includes it.
- Around line 31-43: The tsconfig's compilerOptions.paths (aliases like "@/*",
"@shell/*", "@shared/*", "@shadcn/*") won't be resolved because
compilerOptions.baseUrl is missing; add a "baseUrl" entry under compilerOptions
(e.g., "baseUrl": "./") in the same tsconfig (next to "paths") so TypeScript can
resolve those aliases.

Comment on lines +27 to +30
"composite": false,
"declaration": false,
"emitDeclarationOnly": false,
"noEmit": true,
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Check for project references in tsconfig files
find . -name "tsconfig*.json" -type f | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 146


🏁 Script executed:

# Search for "references" in tsconfig files
rg -n "\"references\"" --type json

# Search for tsconfig.app.json references in build-related files
rg -n "tsconfig\.app\.json" --type json --type json5

# Check package.json for build scripts using tsc or related tools
rg -n "tsc|vue-tsc|tsgo" package.json

Repository: ThinkInAIXYZ/deepchat

Length of output: 387


🏁 Script executed:

# Read the tsconfig.app.json file to see full config including extends
cat -n tsconfig.app.json

Repository: ThinkInAIXYZ/deepchat

Length of output: 1544


🏁 Script executed:

# Read tsconfig.json to see the references array
sed -n '1,20p' tsconfig.json

Repository: ThinkInAIXYZ/deepchat

Length of output: 324


🏁 Script executed:

# Look for any other references to tsconfig.app.json in the codebase
rg -n "tsconfig\.app\.json" --type json --type ts --type js

Repository: ThinkInAIXYZ/deepchat

Length of output: 116


Remove tsconfig.app.json from project references or set composite: true.

This config is in the root tsconfig.json references array (line 8) but has composite: false and noEmit: true. With composite: false, it won't be built by tsc --build, so it shouldn't remain in project references. Either remove it from the references array if it's type-checking only, or set composite: true if it should be a proper project reference for the build process.

🤖 Prompt for AI Agents
In `@tsconfig.app.json` around lines 27 - 30, The tsconfig.app.json is listed in
the root tsconfig.json project references but has "composite": false and
"noEmit": true, which prevents it from being built by tsc --build; either remove
tsconfig.app.json from the root tsconfig.json references array if it is intended
only for type-checking, or make it a proper composite project by setting
"composite": true (and adjusting/delete "noEmit": true/"declaration":
false/"emitDeclarationOnly" as appropriate so it can emit artefacts) to ensure
tsc --build includes it.

Comment on lines 31 to 43
"paths": {
"@/*": [
"src/renderer/src/*"
"./src/renderer/src/*"
],
"@shell/*": [
"src/renderer/shell/*"
"./src/renderer/shell/*"
],
"@shared/*": [
"src/shared/*"
"./src/shared/*"
],
"@shadcn/*": [
"src/shadcn/*"
"./src/shadcn/*"
]
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Find all tsconfig files in the repo
find . -name 'tsconfig*.json' -type f | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 146


🏁 Script executed:

# Check the content of tsconfig.app.json to see extends and baseUrl
cat -n tsconfig.app.json 2>/dev/null || echo "File not found at root"

Repository: ThinkInAIXYZ/deepchat

Length of output: 1544


🏁 Script executed:

# Check in common directories
fd 'tsconfig.*\.json$' | xargs -I {} sh -c 'echo "=== {} ===" && head -20 {}'

Repository: ThinkInAIXYZ/deepchat

Length of output: 2168


🏁 Script executed:

# Check if node_modules has the package
find . -path "*/node_modules/@electron-toolkit/tsconfig/tsconfig.web.json" 2>/dev/null | head -5

Repository: ThinkInAIXYZ/deepchat

Length of output: 47


🏁 Script executed:

# Check package.json for the electron-toolkit version
cat package.json | grep -A 5 -B 5 "@electron-toolkit" || echo "Not found in package.json"

Repository: ThinkInAIXYZ/deepchat

Length of output: 908


🏁 Script executed:

# Search for any documentation or README about baseUrl usage
rg "baseUrl" --type json | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 1891


🏁 Script executed:

# Let me check if there's documentation or if we can find the external package online
# First, check if tsconfig validation would fail
npm ls `@electron-toolkit/tsconfig` 2>&1 | head -20

Repository: ThinkInAIXYZ/deepchat

Length of output: 118


🏁 Script executed:

# Check the Prettier formatting of tsconfig.app.json
cat tsconfig.app.json | python3 -m json.tool > /dev/null 2>&1 && echo "Valid JSON"

Repository: ThinkInAIXYZ/deepchat

Length of output: 75


🌐 Web query:

@electron-toolkit/tsconfig tsconfig.web.json baseUrl configuration

💡 Result:

@electron-toolkit/tsconfig/tsconfig.web.json does not set compilerOptions.baseUrl. It only extends the package’s base tsconfig.json and adds DOM libs. (app.unpkg.com)

So if you want baseUrl (and typically paths) you add/override it in your renderer tsconfig:

{
  "extends": "@electron-toolkit/tsconfig/tsconfig.web.json",
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/renderer/src/*"]
    }
  }
}

TypeScript resolves paths relative to baseUrl, so pick a baseUrl that matches how you want to write imports (commonly "." at repo root, or the renderer source folder).

Citations:


🏁 Script executed:

# Check if tsconfig.app.json conforms to Prettier formatting
cat tsconfig.app.json | python3 << 'EOF'
import json
import sys

with open('tsconfig.app.json', 'r') as f:
    config = json.load(f)

# Output with Prettier-like formatting (2 spaces)
formatted = json.dumps(config, indent=2)
print(formatted)
EOF

Repository: ThinkInAIXYZ/deepchat

Length of output: 1222


🏁 Script executed:

# Verify the file is being used as the renderer tsconfig (check vite config or build setup)
rg "tsconfig.app" --type js --type ts | head -10

Repository: ThinkInAIXYZ/deepchat

Length of output: 47


Add baseUrl to enable path alias resolution.

The extended config @electron-toolkit/tsconfig/tsconfig.web.json does not define baseUrl, which is required by TypeScript for compilerOptions.paths to resolve. Without it, the path aliases (@/*, @shell/*, etc.) will not work.

Required fix
  "compilerOptions": {
+   "baseUrl": ".",
    "module": "esnext",
🤖 Prompt for AI Agents
In `@tsconfig.app.json` around lines 31 - 43, The tsconfig's compilerOptions.paths
(aliases like "@/*", "@shell/*", "@shared/*", "@shadcn/*") won't be resolved
because compilerOptions.baseUrl is missing; add a "baseUrl" entry under
compilerOptions (e.g., "baseUrl": "./") in the same tsconfig (next to "paths")
so TypeScript can resolve those aliases.

@zhangmo8 zhangmo8 merged commit fe2ec87 into dev Feb 5, 2026
2 checks passed
zerob13 added a commit that referenced this pull request Feb 5, 2026
* chore: typecheck with tsgo (#1278)

* feat: image left align

* feat: app settings skills (#1283)

* docs: add spec for app-settings

* feat: implement chat-driven settings control with skill gating

Add a safe, validated API for modifying DeepChat application settings via natural language. Settings changes are controlled by a dedicated 'deepchat-settings' skill to ensure tools are only available when contextually relevant.

Key features:
- Skill-gated tool injection: settings tools only appear when deepchat-settings skill is active
- Safe settings apply API with Zod validation and strict allowlist
- Support for toggles (sound, copy COT, chat mode) and enums (language, theme, font size)
- Defense-in-depth: runtime skill verification before applying changes
- Deep-linked settings navigation for unsupported/complex settings
- Comprehensive test coverage for validation, mapping, and skill gating

Changes:
- Add ChatSettingsToolHandler with validated apply/open methods
- Integrate with AgentToolManager for tool definition gating
- Create deepchat-settings built-in skill with clear activation rules
- Add shared types for requests/responses (chatSettings.ts)
- Implement settings window navigation with SECTION_ALIASES
- Add unit tests for handler and integration tests for tool gating
- Translate spec documents (plan.md, spec.md, tasks.md) to Chinese
- Fix type errors in getCurrentValue and OPEN_SECTION_VALUES

* refactor: remove chatMode from settings control and add permission service

Remove chatMode setting from the allowlist as it requires conversation-scoped updates that are better handled separately. Add permission checking for settings window opening to provide user control over settings navigation.

Key changes:
- Remove setChatMode tool and related schemas from ChatSettingsToolHandler
- Add SettingsPermissionService for managing tool approvals (one-time and session)
- Add permission check for deepchat_settings_open tool
- Update PermissionHandler to handle settings permission grants
- Add rememberable flag to permission request structure
- Update AgentToolManager to consume approvals before opening settings
- Add settingsPermissionService to main presenter index
- Clear settings approvals when conversation ends
- Update spec documents to reflect removed chatMode feature
- Remove chatMode-related tests and types

This ensures settings window opening requires explicit user approval and provides a cleaner separation of concerns for chat mode management.

* docs: translate to en

* chore: yo browser less context (#1284)

* docs: add specs for yo browesr context manager

* feat(yo-browser): improve skill description and add yo_browser_cdp_send to offload whitelist

* refactor(yobrowser): remove skill gating and make CDP tools always available in agent mode

* refactor(yobrowser): add CDP method schema validation with strict enums

- Add enum-based validation for cdp_send method (11 common CDP methods)
- Add detailed union schemas for each method's parameters with examples
- Add normalizeCdpParams method to handle both object and JSON string inputs
- Prevent method typos and provide better type safety for CDP interactions

* fix(yobrowser): add strict tab ID validation in CDP send handler

* chore: update deps

* refactor: agent provider simplification (#1286)

* docs: add spec for agent provider

* refactor(agent): remove BaseAgentProvider layer and simplify provider hierarchy

* feat(mcp): implement real Apple Maps search using URL scheme (#1289)

* feat: support voice.ai (#1291)

* feat: remove custome tiptap (#1295)

* feat: settings auto scroll toggle (#1293)

* feat: settings auto scroll toggle

* feat: i18n support

* fix(renderer): remove specific event listeners instead of all

* feat: add tooltip for filling default API URL in settings (#1296)

* fix: fix model list refresh failed (#1297)

* feat: add question tools  (#1298)

* feat(agent): add question tool flow

* feat(mcp): implement real Apple Maps search using URL scheme (#1289)

* feat: support voice.ai (#1291)

* feat: remove custome tiptap (#1295)

* feat: settings auto scroll toggle (#1293)

* feat: settings auto scroll toggle

* feat: i18n support

* fix(renderer): remove specific event listeners instead of all

* feat: add tooltip for filling default API URL in settings (#1296)

* refactor(question): simplify question request UI to single-choice interface

* fix(chat): restore pending question state

* fix: review issues

---------

Co-authored-by: Qi Jin <jin.qi1@northeastern.edu>
Co-authored-by: xiaomo <wegi866@gmail.com>

* chore: integrated vue-tsgo (#1299)

* chore: integrated vue-tsgo

* chore: update recommendation exteion

* chore: update

* feat: add prompt for ask tool

* chore: version to 0.5.7

---------

Co-authored-by: xiaomo <wegi866@gmail.com>
Co-authored-by: wanna <wanna.w@binarywalk.com>
Co-authored-by: Qi Jin <jin.qi1@northeastern.edu>
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