Skip to content

v0.13.1

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jun 12:32
· 1 commit to master since this release
14855a2
TidGi-Desktop v0.13.1 发布报告

发布日期:2026-06-12
基于标签:v0.13.0v0.13.1-fix
改动范围:337 个文件变更,新增 21,569 行,删除 11,615 行


目录

  1. 重大变更与依赖升级
  2. MCP 服务器修复与增强
  3. Bug 修复
  4. E2E 测试与 CI 改进
  5. 杂项与文档

1. 重大变更与依赖升级

🔼 全量依赖升级 + Vite 8 / Rolldown 迁移 (#719)

一次性将几乎所有依赖升级到最新版本,并解决了大量兼容性问题:

类别 变更内容
构建系统 Vite 8 + Rolldown 替换旧版 Vite,修复 ESM/CJS 互操作问题
Electron 升级至 Electron 41.7.1(Node.js 22),配合 better-sqlite3 原生模块
Electron Forge 升级至 v8 alpha,使用异步 hooks 和新版 packageAfterPrune 签名
MUI MUI v9 迁移:system-propssx prop,Autocomplete freeSolo 改用 Enter 键处理
TypeORM v1.0 关系 API 迁移:string[] → 对象格式 {x: true}
inversify v8:rebindSyncrebind
核心输出格式 主进程改为 ESM 输出,修复 rotating-file-stream 类方法断裂
date-fns 3.6 → 4.4(大版本跳升)
default-gateway 6.0 → 7.2(统一 API gateway4()
electron-unhandled 4.0 → 5.0(需 bridge 模块配合 dynamic import()
移除依赖 移除 moment.jstypescript-styled-is 等废弃库

🔒 安全漏洞修复 (#722)

  • 修复 ini(CVE)和 bl(CVE)两个 transitive 依赖的安全漏洞
  • 通过 pnpm.overrides 锁定 ini@^1.3.8bl@^4.1.0
  • 更新 git-sync-js 2.3.3 → 2.4.0(ESLint 10/TypeScript 6 兼容)
  • 更新 eslint-config-tidgi 2.2.0 → 3.1.0(ESLint 10 迁移)
  • ESLint 启用 --max-warnings 0,消除所有 lint 警告

2. MCP 服务器修复与增强 (#723)

这是本版本最大的功能更新,对 MCP(Model Context Protocol)服务器进行了全面重构:

方面 变更
架构重构 Schema-driven 开发工具设置,统一偏好设置页面
安全性 ui_navigate 禁止操作 app 窗口目标;移除废弃的 --mcp-port/MCP_PORT CLI 绕过
Token 认证 默认关闭 token 认证(mcpServerRequireToken: false),避免新用户被空 token 阻塞
打包修复 修复 packaged 应用中 @modelcontextprotocol/sdkrequire() ESM 加载错误
启动健壮性 EADDRINUSE 时清除 server handle 以便重试;端口范围验证
CI 修复 非 Windows 平台跳过 registry-js(pnpmfile hook),添加 Linux lint 类型声明
Git 修复 CI 上使用 HTTPS 替代 SSH git 协议,修复 Windows runner 上的 pnpm 安装

3. Bug 修复

🖼️ 图片上下文菜单:复制图片到剪贴板 (#718)

  • 右键图片可一键复制到剪贴板

🌀 子工作区休眠/唤醒同步 (#718)

  • 子工作区的 UI 状态(侧栏图标灰色/恢复)与主工作区同步
  • 应用启动时子工作区的休眠状态也会正确同步

📂 文件系统监听器:修复 .tid 文件格式保存错误 (#718)

关键修复 — 解决了 issue #669

  • 文件监听器检测到变更后加载数据时,错误地使用 tiddler 的 content type(如 text/markdown)作为文件格式类型
  • 导致后续保存时 TiddlyWiki 误用 JSON 格式而非 .tid 格式保存
  • 修复:使用 fileDescriptor.type(文件格式)而不是 tiddler.type(内容类型)
  • 添加 inferFileTypeFromExtension() 容错回退

🔧 动态 import() 替换为静态 import — 修复 Node.js 22 ESM 错误 (#718)

  • Electron 41(Node.js 22)中,带路径别名(@/@services/)的动态 import() 在打包代码中运行时崩溃
  • 将所有动态 import 转换为静态顶层 import(涉及 5 个核心文件 + 测试文件)

🪟 迷你窗口视图竞争条件修复 (#712)

  • 首次创建路径正确处理 WebContentsView 创建
  • 修复 addViewForAllBrowserViews 中菜单栏窗口未就绪时的未捕获 rejection
  • 避免迷你窗口启动锁死锁

🔄 Git 操作修复 (#718)

  • 死锁修复acquireOperationLock 超时触发时不再永久锁定工作区
  • 本地工作区隐藏"同步到远程"按钮和未推送图标
  • 工作区休眠时跳过 git 操作
  • 添加 try/catch 包裹 commitAndSyncforcePull 的锁获取

📋 Git 日志修复 (#718)

  • 本地工作区的 loadMore() 正确应用守卫逻辑
  • 为本地工作区添加同步设置标签页

🧩 其他修复

  • 修复 E2E 拖拽(dnd)在 Windows CI 上的指针 Y 坐标问题(使用 activatorEvent.clientY + delta.y

4. E2E 测试与 CI 改进

⏱️ E2E 校准系统 (#704, #723)

  • 引入独立的校准运行机制(test:e2e:calibrate),CI 在分片前运行一次
  • 移除所有硬编码的超时回退值,全部从校准测量中获取
  • 步骤超时 = 各类型(launch + wait + element)测量最大值的总和
  • Log-marker 等待使用步骤超时预算(而非紧张的测量值)
  • CI 上每个 OS 运行一次校准,上传 .calibration.json 工件

🔧 CI 工作流改进

  • 修复 upload-artifact v4+ 跳过隐藏文件(dotfiles)的问题
  • 修复 Linux 校准缺少 X display 的问题
  • 添加 pre-push hook(husky),推送前自动运行 tsc + eslint
  • FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 已移除(actions 将在 2026.09 前自然升级)

5. 杂项与文档

  • README.zh-CN.md 更新
  • macOS 终端命令:添加从终端移除 TidGi app quarantine 属性的命令说明
  • 移除了废弃的 Analytics 披露弹窗 (#719)
  • 修复 Tiddler 多轮 filter 污染:停止在 filter 字符串后追加 +[!is[system]],改用 wiki.isSystemTiddler() 后过滤

完整 PR 列表

PR 标题 类型
#704 Fix/misc bug1 修复
#712 Fix/mini window view race 修复
#718 Fix/misc batch 2026 06 修复/功能
#719 chore: upgrade all deps to latest, fix ESM/CJS interop 依赖升级
#722 chore(deps): fix security vulns 安全修复
#723 Fix/mcp 修复/重构

完整对比: v0.13.0...v0.13.1-fix

# TidGi-Desktop v0.13.1 Release Report

Release Date: 2026-06-12
Tag Range: v0.13.0v0.13.1-fix
Scope: 337 files changed, 21,569 insertions, 11,615 deletions


Table of Contents

  1. Major Changes & Dependency Upgrades
  2. MCP Server Fixes & Enhancements
  3. Bug Fixes
  4. E2E Testing & CI Improvements
  5. Miscellaneous & Documentation

1. Major Changes & Dependency Upgrades

🔼 Full Dependency Upgrade + Vite 8 / Rolldown Migration (#719)

Upgraded nearly all dependencies to their latest versions, resolving numerous compatibility issues:

Category Changes
Build System Vite 8 + Rolldown replaces legacy Vite; fixed ESM/CJS interop issues
Electron Upgraded to Electron 41.7.1 (Node.js 22), compatible with better-sqlite3 native module
Electron Forge Upgraded to v8 alpha with async hooks and new packageAfterPrune signature
MUI MUI v9 migration: system-propssx prop, Autocomplete freeSolo uses explicit Enter key handling
TypeORM v1.0 relations API migration: string[] → object format {x: true}
inversify v8: rebindSyncrebind
Main Process Output Changed to ESM output to fix rotating-file-stream class method breakage
date-fns 3.6 → 4.4 (major version jump)
default-gateway 6.0 → 7.2 (unified gateway4() API)
electron-unhandled 4.0 → 5.0 (requires bridge module with dynamic import())
Removed Dependencies Removed moment.js, typescript-styled-is, and other deprecated libraries

🔒 Security Vulnerability Fixes (#722)

  • Fixed security vulnerabilities in ini (CVE) and bl (CVE) transitive dependencies
  • Pinned ini@^1.3.8 and bl@^4.1.0 via pnpm.overrides
  • Updated git-sync-js 2.3.3 → 2.4.0 (ESLint 10/TypeScript 6 compatibility)
  • Updated eslint-config-tidgi 2.2.0 → 3.1.0 (ESLint 10 migration)
  • ESLint now enforces --max-warnings 0, eliminating all lint warnings

2. MCP Server Fixes & Enhancements (#723)

This is the largest feature update in this release, with a comprehensive refactor of the MCP (Model Context Protocol) server:

Area Changes
Architecture Schema-driven developer tools settings, unified preferences pages
Security ui_navigate blocked on app window targets; removed deprecated --mcp-port/MCP_PORT CLI bypass
Token Auth Default token authentication disabled (mcpServerRequireToken: false) to avoid blocking new users
Packaging Fix Fixed require() ESM loading error for @modelcontextprotocol/sdk in packaged app
Startup Robustness Clears server handle on EADDRINUSE for retry capability; port range validation
CI Fixes Skip registry-js on non-Windows platforms; added Linux lint type declarations
Git Fixes Use HTTPS instead of SSH git protocol on CI; fixed pnpm installation on Windows runners

3. Bug Fixes

🖼️ Image Context Menu: Copy Image to Clipboard (#718)

  • Right-click images to copy directly to clipboard

🌀 Sub-Workspace Hibernate/Wake Sync (#718)

  • Sub-workspace UI state (sidebar icons gray/restored) now syncs with the main workspace
  • Sub-workspace hibernation state is correctly synced on app startup

📂 FileSystemWatcher: Fix .tid File Format Corruption (#718)

Critical Fix — resolves issue #669

  • The file watcher was incorrectly using the tiddler's content type (e.g., text/markdown) as the file format type when loading changed data
  • This caused subsequent saves to use JSON format instead of the correct .tid format
  • Fix: uses fileDescriptor.type (file format) instead of tiddler.type (content type)
  • Added inferFileTypeFromExtension() fallback for robustness

🔧 Dynamic import() Replaced with Static Imports — Fix Node.js 22 ESM Error (#718)

  • In Electron 41 (Node.js 22), dynamic import() with path aliases (@/, @services/) crashes at runtime in bundled code
  • Converted all dynamic imports to static top-level imports (5 core files + test files)

🪟 Mini Window View Race Condition Fix (#712)

  • First-creation path now correctly handles WebContentsView creation
  • Fixed unhandled rejection in addViewForAllBrowserViews when menubar window is not ready
  • Avoided mini window startup lock deadlock

🔄 Git Operations Fixes (#718)

  • Deadlock Fix: acquireOperationLock no longer permanently locks the workspace on timeout
  • Local workspaces now hide the "sync-to-remote" button and unpushed icon
  • Git operations are skipped when workspace is hibernated
  • Added try/catch wrapping commitAndSync and forcePull lock acquisition

📋 Git Log Fixes (#718)

  • loadMore() correctly applies local-workspace guard logic
  • Added sync settings tab for local workspaces

🧩 Other Fixes

  • Fixed E2E drag-and-drop pointer Y coordinate issue on Windows CI (uses activatorEvent.clientY + delta.y)

4. E2E Testing & CI Improvements

⏱️ E2E Calibration System (#704, #723)

  • Introduced independent calibration run (test:e2e:calibrate), executed once per OS on CI before sharding
  • Removed all hardcoded fallback timeout values; all timeouts come exclusively from calibration measurements
  • Step timeout = sum of measured per-type maxima (launch + wait + element)
  • Log-marker waits use the generous step timeout budget (instead of tight measured values)
  • Calibration runs on each OS, uploading .calibration.json as CI artifact

🔧 CI Workflow Improvements

  • Fixed upload-artifact v4+ skipping hidden files (dotfiles)
  • Fixed Linux calibration missing X display
  • Added pre-push hook (husky) that automatically runs tsc + eslint before git push
  • Removed FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 (actions will naturally upgrade by September 2026)

5. Miscellaneous & Documentation

  • README.zh-CN.md updated
  • macOS Terminal Command: Added instructions to remove quarantine attribute from TidGi app via terminal
  • Removed deprecated Analytics disclosure dialog (#719)
  • Fixed tiddler multi-run filter corruption: Stopped appending +[!is[system]] to filter strings; uses wiki.isSystemTiddler() for post-filtering instead

Complete PR List

PR Title Type
#704 Fix/misc bug1 Fix
#712 Fix/mini window view race Fix
#718 Fix/misc batch 2026 06 Fix/Feature
#719 chore: upgrade all deps to latest, fix ESM/CJS interop Dependency Upgrade
#722 chore(deps): fix security vulns Security Fix
#723 Fix/mcp Fix/Refactor

Full Changelog: v0.13.0...v0.13.1-fix