Skip to content

Commit fde7a82

Browse files
authored
chore: upgrade all deps to latest, fix ESM/CJS interop for Vite 8/Rolldown (#719)
* chore: update docs, TS6 config, Vite8/Vitest4 config compatibility * fix: MUI v9 system-props migration to sx prop (codemod) * fix: TypeORM 1.0 relations API migration (string[] to object) * fix: inversify 8 rebindSync→rebind, logform types, test mocks for vitest 4 * fix: other type compatibility fixes for upgraded deps * chore: upgrade all non-ESM deps to latest (excl date-fns, default-gateway, electron-unhandled) * fix: add missing @testing-library/dom dev dependency * fix: ensure node-linker=hoisted for forge compatibility * fix: proper onlyBuiltDependencies in workspace.yaml for pnpm 11 compat * chore: upgrade all non-ESM deps with clean lockfile * fix: add onlyBuiltDependencies to .npmrc for pnpm 11 compat * fix: downgrade electron to 41.7.1 for better-sqlite3 native module compat * fix: external rotating-file-stream with CJS patch for Electron 41 * fix: strip Rolldown e.a() wrapper for rotating-file-stream via plugin * fix: bundle rotating-file-stream as CJS via alias (not external) to fix class method breakage * feat: output main process as ESM to fix rotating-file-stream class methods * fix: force rotating-file-stream as CJS via commonjsOptions.include * fix: upgrade to electron-forge v8 alpha with ESM hooks * fix: add external for typeorm expo-sqlite optional dep * fix: strip Rolldown e.a() wrapper for rotating-file-stream via post-build plugin * chore: upgrade all deps to latest, fix ESM/CJS interop for Vite 8/Rolldown - Upgrade date-fns 3.6→4.4, default-gateway 6.0→7.2, electron-unhandled 4.0→5.0 - Fix rotating-file-stream ESM→CJS interop: external + afterPack copy - Fix moment CJS function export: external + afterPack copy - Fix default-gateway v7: migrate from platform sub-paths to unified gateway4() - Fix electron-unhandled v5: bridge module with dynamic import() - Fix TypeORM 1.0 relations: string[]→{x:true} in agentRepository - Fix MUI v9 Autocomplete freeSolo: explicit Enter key handling for tag input - Fix Forge v8 alpha: async hooks, packageAfterPrune signature - Fix worker URL: post-build plugin strips {}.url in CJS output - Add validate-e2e-args.ts guard with clear error messages pointing to docs - Add moment + rotating-file-stream to afterPack with dereference support - All deps latest except electron@41.7.1 (better-sqlite3 V8 API compat) * fix: lint errors (file rename, no-throw-in-finally, naming) * fix: resolve all lint and TypeScript errors for CI - Rename validate-e2e-arguments.ts → validate-cucumber-arguments.ts to fix unicorn/prevent-abbreviations - Fix type safety in validate-cucumber-arguments.ts (explicit string[] types, unify function names) - Fix no-unsafe-finally in afterPack.ts by moving throw out of finally block - Remove unused is/isNot imports from Sidebar.tsx - Fix no-unsafe-assignment in FormComponents.tsx with explicit type casts - Fix await-thenable and no-confusing-void-expression in wikiSearchPlugin.test.ts - Fix no-unsafe-return in log/index.ts with eslint-disable on any-return - Fix unicorn/prevent-abbreviations in workerAdapter.ts (err → error_) - Fix restrict-template-expressions in systemPreferences/index.ts (String(key)) - Migrate WorkspaceSelectorBase.tsx from transient props () to data-* attributes for MUI v9 compat - Fix vitest mock types in NewWikiForm.test.tsx and KeyboardShortcutRegister.test.tsx * style: auto-fix format/dprint warnings across codebase * fix(pnpm): disable block-exotic-subdeps for @reforged/maker-appimage git dep * fix: E2E failures in workspaceGroup and subWiki - Remove duplicate data-drag-intent from WorkspaceSelectorBase Root (kept on Avatar) to fix strict mode violation in workspaceGroup E2E test - Merge Autocomplete parameters.slotProps instead of overriding in NewWikiForm to fix subWiki tag input (UITestTag not applied) * fix(test): update NewWikiForm test for MUI v9 Autocomplete combobox role * fix(pnpm): duplicate blockExoticSubdeps=false in pnpm-workspace.yaml for CI * fix(copilot): address PR review comments - restore TransformableInfo type, re-enable skipped tests, fix vitest config comment * chore: remove moment.js dependency - Override file-stream-rotator to 1.0.0 (drops moment) - Remove moment from vite main externals and afterPack copy rules - Restore block-exotic-subdeps=false in .npmrc * refactor(analytics): remove deprecated disclosure dialog and related dead code - Remove AnalyticsDisclosure window, route, window props, and i18n strings - Remove shouldShowDisclosure, recordDisclosureVersion, showDisclosureIfNeeded from IAnalyticsService and AnalyticsService - Remove analyticsDisclosureVersion from IAnalyticsSecretSettings - Remove showDisclosureIfNeeded call from main.ts - Simplify isEnabled to rely solely on analyticsEnabled preference fix(wiki): prevent multi-run filter corruption in getTiddlersJSON - Stop appending '+[!is[system]]' to the filter string, which broke multi-run filters by corrupting their union/accumulator logic - Post-filter system tiddlers via wiki.isSystemTiddler() instead - Add skipSystemFilter option to bypass post-filter entirely for filters that return field names or other non-title values * chore: remove typescript-styled-is and clean up peer dep rules - Remove unused typescript-styled-is dependency from package.json - Add auto-install-peers=false to .npmrc to prevent auto-installing optional peer deps - Add peerDependencyRules.ignoreMissing for moment variants in pnpm-workspace.yaml - Regenerate pnpm-lock.yaml: drops moment override, styled-components, babel deps * fix(mcp): default token auth off and fix CJS require in packaged app - Set mcpServerRequireToken default to false so new users don't get blocked by empty token when enabling MCP server - Write {type: 'commonjs'} package.json into @modelcontextprotocol/sdk dist/cjs after copy in afterPack hook, fixing ESM-not-found error when require() loads the SDK in the packaged Electron app Refs: runtime crash on MCP server start due to createEsmNotFoundErr * fix(dnd): use activatorEvent + delta for pointer Y on Windows CI Derive live pointer Y from dnd-kit's activatorEvent.clientY + delta.y instead of relying on a global pointermove listener. Playwright on Windows CI/Electron does not reliably fire pointermove events, causing deriveDragState to fallback to stale rect centers and mis-detect 'group' intent as 'reorder-after'. - Update deriveDragState signature to accept activatorEvent - Compute activatorPointerY = activatorEvent.clientY + delta.y - Prefer activatorPointerY over pointerYReference in all branches - Fix lint: remove unnecessary type assertion, rename mcpSdkDest Fixes workspaceGroup E2E failures on windows-2022-3.
1 parent e561f03 commit fde7a82

98 files changed

Lines changed: 4581 additions & 4152 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.npmrc

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
strict-peer-dependencies=false
2+
# Don't auto-install peer deps (including optional ones like moment).
3+
# We explicitly declare all dependencies we need.
4+
auto-install-peers=false
25
# This is a workaround for VSCode's Eslint extension not loading plugins correctly,
36
# see: https://github.com/pnpm/pnpm/issues/5447
47
public-hoist-pattern[]=*eslint*
5-
node-linker=hoisted
8+
node-linker=hoisted
9+
# pnpm 11 blocks exotic subdependencies by default, but @reforged/maker-appimage
10+
# depends on @electron/node-gyp via git tarball. Allow it for build tooling.
11+
block-exotic-subdeps=false
12+
onlyBuiltDependencies[]=@swc/core
13+
onlyBuiltDependencies[]=better-sqlite3
14+
onlyBuiltDependencies[]=dprint
15+
onlyBuiltDependencies[]=dugite
16+
onlyBuiltDependencies[]=electron-winstaller
17+
onlyBuiltDependencies[]=esbuild
18+
onlyBuiltDependencies[]=nsfw
19+
onlyBuiltDependencies[]=registry-js
20+
onlyBuiltDependencies[]=unrs-resolver

.skip-forge-system-check

Whitespace-only changes.

docs/Development.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,21 @@ Some library doesn't fit electron usage, we move their code to this repo and mod
156156
- [sqlite-vec](https://github.com/asg017/sqlite-vec): The path from its method `getLoadablePath` maybe incorrect after electron app packaged. (It will be in `.webpack/main/index.js` in the dist folder instead of in `node_modules/sqlite-vec` folder.)
157157
- Still need to install its `optionalDependencies` like `sqlite-vec-darwin-x64` in package.json
158158
159-
## Don't upgrade these dependency
159+
## ESM/CJS Interop Issues
160160
161-
### pure ESM
161+
### Forge v8 / Vite 8 Strategy
162162
163-
Electron forge webpack don't support pure ESM yet
163+
Forge v8 plugin-vite defaults main process output to CJS (`formats: ['cjs']`), which is the recommended path.
164164
165-
- default-gateway
166-
- electron-unhandled
167-
- date-fns
165+
Rolldown (Vite 8's bundler) can't correctly bundle certain packages into CJS:
166+
167+
| Package | Issue | Solution |
168+
| --------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
169+
| `rotating-file-stream` (pure ESM) | Rolldown wraps `require("rotating-file-stream")` with `e.a()` interop, breaking class methods | **External** — Node.js native `require()` uses its `"exports.require"` CJS entry |
170+
| `electron-unhandled` v5 (pure ESM, top-level await) | Can't bundle into CJS, can't `require()` from CJS | **Bridge module** (`src/services/libs/electronUnhandledBridge.ts`) using dynamic `import()` |
171+
| `default-gateway` v7 (pure ESM) | Used via dynamic `import()` for platform-specific sub-paths; v7 removed sub-paths | **External + code migration** to v7 unified API (`gateway4()`) |
172+
173+
`electron` is intentionally held at 41.7.1 — Electron 42+ breaks `better-sqlite3` V8 API compatibility.
168174
169175
## Code Tour
170176

forge.config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import type { ForgeConfig } from '@electron-forge/shared-types';
44
import { readJsonSync } from 'fs-extra';
55
import path from 'path';
66
import afterPack from './scripts/afterPack';
7-
import beforeAsar from './scripts/beforeAsar';
87

98
const packageJson = readJsonSync(path.join(__dirname, 'package.json')) as { description: string };
109
const supportedLanguages = readJsonSync(path.join(__dirname, 'localization', 'supportedLanguages.json')) as Record<string, string>;
@@ -42,8 +41,9 @@ const config: ForgeConfig = {
4241
electronLanguages: supportedLanguageCodes,
4342
},
4443
appBundleId: 'com.tidgi',
45-
afterPrune: [afterPack],
46-
beforeAsar: [beforeAsar],
44+
},
45+
hooks: {
46+
packageAfterPrune: afterPack,
4747
},
4848
makers: [
4949
{

localization/locales/en/translation.json

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,6 @@
9292
"WorkspaceUserName": "Workspace User Name",
9393
"WorkspaceUserNameDetail": "The editor name used in the Wiki will be fill in the creator field when the Tiddler is created or edited. The editor name set in the workspace will override the global default editor name assigned in the preferences. This allows you to create Tiddlers with different identities in the same Wiki, with multiple workspace configed with different user name."
9494
},
95-
"AnalyticsDisclosure": {
96-
"Title": "Anonymous Analytics",
97-
"Message": "Help Improve TidGi",
98-
"Description": "TidGi can send anonymous, coarse-grained desktop usage analytics to help improve the app.",
99-
"WeCollect": "We Collect:",
100-
"CollectFeatureUsage": "Feature usage (e.g., workspace created, sync triggered, theme changed)",
101-
"CollectPlatform": "Platform info (OS, app version)",
102-
"CollectErrors": "Error reports (anonymized)",
103-
"WeDoNotCollect": "We Do NOT Collect:",
104-
"NotCollectWikiContent": "Wiki content, tiddler names, or note data",
105-
"NotCollectPaths": "File paths or folder names",
106-
"NotCollectPersonalData": "Personal data, tokens, or credentials",
107-
"ChangeAnytime": "You can turn analytics on or off at any time in Preferences > Privacy & Security.",
108-
"DisableAnalytics": "Turn Off Analytics",
109-
"EnableAnalytics": "Enable Analytics"
110-
},
11195
"Cancel": "Cancel",
11296
"ClickForDetails": "Click For Details",
11397
"Confirm": "confirm",

localization/locales/zh-Hans/translation.json

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,6 @@
9292
"WorkspaceUserName": "工作区编辑者名",
9393
"WorkspaceUserNameDetail": "在知识库中使用的编辑者名,将在创建或编辑条目时填入 creator 字段。工作区内设置的编辑者名,将覆盖设置里配的全局的默认编辑者名。这方便你通过创建多个配了不同编辑者名的工作区,在同一个知识库里用不同的身份创建条目。"
9494
},
95-
"AnalyticsDisclosure": {
96-
"Title": "匿名使用分析",
97-
"Message": "帮助改进太记",
98-
"Description": "太记可以发送匿名、粗粒度的桌面端使用分析数据,以帮助改进应用。",
99-
"WeCollect": "我们会收集:",
100-
"CollectFeatureUsage": "功能使用情况(如工作区创建、同步触发、主题变更)",
101-
"CollectPlatform": "平台信息(操作系统、应用版本)",
102-
"CollectErrors": "错误报告(已匿名化)",
103-
"WeDoNotCollect": "我们不会收集:",
104-
"NotCollectWikiContent": "知识库内容、条目名称或笔记数据",
105-
"NotCollectPaths": "文件路径或文件夹名称",
106-
"NotCollectPersonalData": "个人信息、令牌或凭证",
107-
"ChangeAnytime": "您可以随时在「设置 > 隐私和安全」中开启或关闭分析功能。",
108-
"DisableAnalytics": "关闭分析",
109-
"EnableAnalytics": "启用分析"
110-
},
11195
"Cancel": "取消",
11296
"ClickForDetails": "点击了解详情",
11397
"Confirm": "确认",

package.json

Lines changed: 48 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"test:unit": "cross-env ELECTRON_RUN_AS_NODE=1 ./node_modules/.bin/electron --max-old-space-size=8192 ./node_modules/vitest/vitest.mjs run",
2121
"test:unit:coverage": "pnpm run test:unit --coverage",
2222
"test:prepare-e2e": "cross-env READ_DOC_BEFORE_USING='docs/Testing.md' && pnpm run clean && pnpm run build:plugin && cross-env NODE_ENV=test DEBUG=electron-forge:* electron-forge package",
23-
"test:e2e": "rimraf -- ./test-artifacts && cross-env NODE_ENV=test tsx scripts/developmentMkdir.ts && cross-env NODE_ENV=test tsx scripts/end-to-end-preflight.ts && cross-env NODE_ENV=test cucumber-js --config features/cucumber.config.js --exit",
23+
"test:e2e": "rimraf -- ./test-artifacts && cross-env NODE_ENV=test tsx scripts/developmentMkdir.ts && cross-env NODE_ENV=test tsx scripts/end-to-end-preflight.ts && cross-env NODE_ENV=test tsx scripts/validate-cucumber-arguments.ts",
2424
"test:manual-e2e": "pnpm exec cross-env SHOW_E2E_WINDOW=1 NODE_ENV=test tsx ./scripts/start-e2e-app.ts",
2525
"make": "pnpm run build:plugin && cross-env NODE_ENV=production electron-forge make",
2626
"make:analyze": "cross-env ANALYZE=true pnpm run make",
@@ -34,10 +34,10 @@
3434
"author": "Lin Onetwo <linonetwo012@gmail.com>, Quang Lam <quang.lam2807@gmail.com>",
3535
"main": ".vite/build/main.js",
3636
"dependencies": {
37-
"@ai-sdk/anthropic": "^2.0.45",
38-
"@ai-sdk/deepseek": "^1.0.29",
39-
"@ai-sdk/openai": "^2.0.71",
40-
"@ai-sdk/openai-compatible": "^1.0.27",
37+
"@ai-sdk/anthropic": "^3.0.81",
38+
"@ai-sdk/deepseek": "^2.0.35",
39+
"@ai-sdk/openai": "^3.0.68",
40+
"@ai-sdk/openai-compatible": "^2.0.48",
4141
"@algolia/autocomplete-js": "^1.19.8",
4242
"@algolia/autocomplete-theme-classic": "^1.19.8",
4343
"@applitools/dom-snapshot": "^4.17.2",
@@ -49,44 +49,44 @@
4949
"@fontsource/roboto": "^5.2.10",
5050
"@modelcontextprotocol/sdk": "^1.29.0",
5151
"@monaco-editor/react": "^4.7.0",
52-
"@mui/icons-material": "^7.3.5",
53-
"@mui/material": "^7.3.5",
54-
"@mui/system": "^7.3.5",
55-
"@mui/types": "^7.4.8",
56-
"@mui/x-date-pickers": "^8.19.0",
52+
"@mui/icons-material": "^9.0.1",
53+
"@mui/material": "^9.0.1",
54+
"@mui/system": "^9.0.1",
55+
"@mui/types": "^9.0.0",
56+
"@mui/x-date-pickers": "^9.4.0",
5757
"@rjsf/core": "6.6.1",
5858
"@rjsf/mui": "6.6.1",
5959
"@rjsf/utils": "6.6.1",
6060
"@rjsf/validator-ajv8": "6.6.1",
6161
"@tomplum/react-git-log": "^3.5.1",
62-
"ai": "^5.0.98",
62+
"ai": "^6.0.197",
6363
"ansi-to-html": "^0.7.2",
6464
"app-path": "^4.0.0",
6565
"beautiful-react-hooks": "5.0.3",
6666
"best-effort-json-parser": "1.4.1",
6767
"better-sqlite3": "^12.10.0",
6868
"bluebird": "3.7.2",
6969
"croner": "^10.0.1",
70-
"date-fns": "3.6.0",
71-
"default-gateway": "6.0.3",
70+
"date-fns": "4.4.0",
71+
"default-gateway": "7.2.2",
7272
"dugite": "3.2.2",
7373
"electron-dl": "^4.0.0",
7474
"electron-ipc-cat": "2.4.0",
7575
"electron-settings": "5.0.0",
76-
"electron-unhandled": "4.0.1",
76+
"electron-unhandled": "5.0.0",
7777
"electron-window-state": "5.0.3",
7878
"espree": "^11.2.0",
7979
"exponential-backoff": "^3.1.3",
8080
"fs-extra": "11.3.5",
8181
"git-sync-js": "^2.3.3",
8282
"graphql-hooks": "8.2.0",
8383
"html-minifier-terser": "^7.2.0",
84-
"i18next": "25.6.3",
85-
"i18next-electron-fs-backend": "3.0.3",
84+
"i18next": "26.3.1",
85+
"i18next-electron-fs-backend": "4.0.0",
8686
"i18next-fs-backend": "2.6.6",
87-
"immer": "^10.2.0",
87+
"immer": "^11.1.8",
8888
"intercept-stdout": "0.1.2",
89-
"inversify": "7.10.4",
89+
"inversify": "8.1.0",
9090
"ipaddr.js": "2.4.0",
9191
"jimp": "1.6.1",
9292
"json5": "^2.2.3",
@@ -99,20 +99,20 @@
9999
"node-fetch": "3.3.2",
100100
"nsfw": "^2.3.1",
101101
"oidc-client-ts": "^3.5.0",
102-
"ollama-ai-provider-v2": "^1.5.5",
102+
"ollama-ai-provider-v2": "^3.5.1",
103103
"playwright-core": "1.60.0",
104104
"react": "19.2.7",
105105
"react-dom": "19.2.7",
106-
"react-i18next": "16.3.5",
106+
"react-i18next": "17.0.8",
107107
"react-masonry-css": "^1.0.16",
108108
"react-window": "^2.2.7",
109109
"react-window-infinite-loader": "^2.0.1",
110110
"reflect-metadata": "0.2.2",
111111
"registry-js": "1.16.1",
112112
"rotating-file-stream": "^3.2.9",
113113
"rxjs": "7.8.2",
114-
"semver": "7.8.1",
115-
"serialize-error": "^12.0.0",
114+
"semver": "7.8.2",
115+
"serialize-error": "^13.0.1",
116116
"simplebar": "6.3.3",
117117
"simplebar-react": "3.3.2",
118118
"source-map-support": "0.5.21",
@@ -121,8 +121,7 @@
121121
"tapable": "^2.3.3",
122122
"tiddlywiki": "5.4.0",
123123
"type-fest": "5.7.0",
124-
"typeorm": "^0.3.27",
125-
"typescript-styled-is": "^2.1.0",
124+
"typeorm": "^1.0.0",
126125
"v8-compile-cache-lib": "^3.0.1",
127126
"winston": "3.19.0",
128127
"winston-daily-rotate-file": "5.0.0",
@@ -132,23 +131,21 @@
132131
"zustand": "^5.0.14",
133132
"zx": "8.8.5"
134133
},
135-
"optionalDependencies": {
136-
"@electron-forge/maker-deb": "7.11.2",
137-
"@electron-forge/maker-flatpak": "7.11.2",
138-
"@electron-forge/maker-msix": "7.11.2",
139-
"@electron-forge/maker-rpm": "7.11.2",
140-
"@electron-forge/maker-snap": "7.11.2",
141-
"@electron-forge/maker-squirrel": "7.11.2",
142-
"@electron-forge/maker-zip": "7.11.2",
143-
"@reforged/maker-appimage": "5.2.0"
144-
},
145134
"devDependencies": {
146-
"@cucumber/cucumber": "^12.9.0",
147-
"@electron-forge/cli": "7.11.2",
148-
"@electron-forge/plugin-auto-unpack-natives": "7.11.2",
149-
"@electron-forge/plugin-vite": "7.11.2",
135+
"@cucumber/cucumber": "^13.0.0",
136+
"@electron-forge/cli": "8.0.0-alpha.9",
137+
"@electron-forge/maker-deb": "8.0.0-alpha.9",
138+
"@electron-forge/maker-flatpak": "8.0.0-alpha.9",
139+
"@electron-forge/maker-msix": "8.0.0-alpha.9",
140+
"@electron-forge/maker-rpm": "8.0.0-alpha.9",
141+
"@electron-forge/maker-snap": "8.0.0-alpha.9",
142+
"@electron-forge/maker-squirrel": "8.0.0-alpha.9",
143+
"@electron-forge/maker-zip": "8.0.0-alpha.9",
144+
"@electron-forge/plugin-auto-unpack-natives": "8.0.0-alpha.9",
145+
"@electron-forge/plugin-vite": "8.0.0-alpha.9",
150146
"@electron/rebuild": "^4.0.4",
151147
"@fetsorn/vite-node-worker": "^1.0.1",
148+
"@reforged/maker-appimage": "5.2.0",
152149
"@testing-library/jest-dom": "^6.9.1",
153150
"@testing-library/react": "^16.3.2",
154151
"@testing-library/user-event": "^14.6.1",
@@ -159,59 +156,41 @@
159156
"@types/html-minifier-terser": "^7.0.2",
160157
"@types/intercept-stdout": "0.1.4",
161158
"@types/lodash": "4.17.24",
162-
"@types/node": "24.10.1",
163-
"@types/react": "19.2.16",
159+
"@types/node": "25.9.2",
160+
"@types/react": "19.2.17",
164161
"@types/react-dom": "19.2.3",
165162
"@types/react-jsonschema-form": "^1.7.13",
166163
"@types/semver": "7.7.1",
167164
"@types/source-map-support": "0.5.10",
168-
"@vitejs/plugin-react": "^5.1.1",
169-
"@vitest/coverage-v8": "^3.2.4",
170-
"@vitest/ui": "^3.2.4",
171-
"baseline-browser-mapping": "^2.10.33",
165+
"@vitejs/plugin-react": "^6.0.2",
166+
"@vitest/coverage-v8": "^4.1.8",
167+
"@vitest/ui": "^4.1.8",
168+
"baseline-browser-mapping": "^2.10.34",
172169
"chai": "6.2.2",
173170
"cross-env": "10.1.0",
174171
"dprint": "^0.54.0",
175-
"electron": "41.1.1",
172+
"electron": "41.7.1",
176173
"electron-chrome-web-store": "^0.13.0",
177174
"esbuild": "^0.28.0",
178175
"eslint-config-tidgi": "^2.2.0",
179176
"identity-obj-proxy": "^3.0.0",
180-
"jsdom": "^27.2.0",
177+
"jsdom": "^29.1.1",
181178
"memory-fs": "^0.5.0",
182179
"node-loader": "2.1.0",
183-
"oauth2-mock-server": "^8.2.2",
180+
"oauth2-mock-server": "^8.2.3",
184181
"path-browserify": "^1.0.1",
185182
"playwright": "^1.60.0",
186183
"rimraf": "^6.1.3",
187184
"ts-node": "10.9.2",
188185
"tsx": "^4.22.4",
189186
"tw5-typed": "^1.1.5",
190-
"typescript": "5.9.3",
187+
"typescript": "6.0.3",
191188
"typesync": "0.14.3",
192189
"unplugin-swc": "^1.5.9",
193-
"vite": "^7.2.4",
194-
"vite-bundle-analyzer": "^1.2.3",
190+
"vite": "^8.0.16",
191+
"vite-bundle-analyzer": "^1.3.8",
195192
"vite-plugin-monaco-editor": "^1.1.0",
196-
"vitest": "^3.2.4"
197-
},
198-
"pnpm": {
199-
"overrides": {
200-
"prebuild-install": "latest",
201-
"node-addon-api": "^7.1.1"
202-
},
203-
"onlyBuiltDependencies": [
204-
"@swc/core",
205-
"better-sqlite3",
206-
"dprint",
207-
"dugite",
208-
"electron",
209-
"electron-winstaller",
210-
"esbuild",
211-
"nsfw",
212-
"registry-js",
213-
"unrs-resolver"
214-
]
193+
"vitest": "^4.1.8"
215194
},
216195
"private": false
217196
}

0 commit comments

Comments
 (0)