Skip to content

v0.10.2

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jun 12:32
## TidGi-Mobile v0.10.2-fix 发布报告

发布时间: 2026-05-30 ~ 2026-06-12
标签范围: v0.10.1v0.10.2-fix
提交数: 4 个主要 commits(含 squash PR)
变更文件: 85 个文件,+4,222 / −655 行


✨ 新功能

1. 标准 Git 协议支持

  • 服务端配置新增 「Use standard git protocol」 开关,可在添加/编辑服务器时选择
  • BackgroundSyncService 实现 syncWithStandardGitProtocol,走原生 gitFetch + gitPush 路径
  • 支持标准 Git 协议的后备降级(当原生模块不可用时回退到 Bundle 协议)

2. 按工作区选择存储后端

  • 新增 per-workspace storage selection 功能,可为不同 Wiki 选择不同存储实现
  • 配套导入时的存储协议选项

3. 模板 Wiki 系统

  • 新增 buildWikiTemplateZip.mjs 构建模板 zip
  • wiki 子模块引入模板 Wiki
  • 工作区创建流程整合模板选择

4. 导入器重做(Importer)

  • Index.tsx 大规模重构 (+470 行)
  • 新增 ImporterServerConfigs 组件,导入时配置服务器
  • 支持导入存储协议选项

5. 移动端分析追踪

  • 新增 AnalyticsService(+236 行),带队列上限限制

6. 快捷键设置 UI

  • WorkspaceSettings 新增 「Enable Quick Load」 开关(此前逻辑已存在但缺少设置入口)

7. 工作区同步页面

  • WorkspaceSyncPage 新增 「Sync Now」 按钮和服务器列表
  • 按钮显示实时同步状态(loading / success / failure)
  • 子 Wiki 不显示独立服务器列表(继承主 Wiki)

🔧 Bug 修复

Git 相关

  • 归档克隆失败后的目录残留: 修复 buildGitIndex 失败后 index 为空导致 git status 全部显示为 modified(#97
  • 原生 JGit 回退前清理: 修复 archive 克隆失败后残留文件导致 "Destination path already exists" 错误
  • 预提交数 false-positive: 修复远端领先时 gitGetAheadCommitCount 错误返回本地全部提交数的问题
  • 默认工作区持久化修复: defaultWorkspaceId 显式存储,迁移从首 Wiki 自动设置

性能和资源

  • push/fetch 热路径优化: 缓存 ensureGitConfigForMobile(按目录记忆,每会话只跑一次);gitGetAheadCommitCount 增加快速路径(先检查 ref OID 是否一致,一致直接返回 0);LOG_DEPTH 从 300 降至 100
  • 减少同步中的 UI 冻结时间

其他修复

  • ARCore 弹窗: 新增 arOptional 可选配置插件,避免 "Please install Google Play Services for AR" 对话框
  • LoggerService 静默写失败: 修复内部存储 URI 路径处理导致的日志写入被静默吞掉
  • Clipboard 弃用迁移: 从 Clipboard 迁移到 expo-clipboard
  • 导航参数安全: 使用 optional chaining 处理 currentRoute?.params?.id
  • 重复触觉反馈: 修复 syncWithStandardGitProtocol 中的双重 vibration
  • 动态导入 .js 后缀: 修复 Metro 对 .ts 源文件解析 .js 后缀的问题

🎨 样式与代码质量

  • StyleSheet 迁移到 styled-components: 大规模替换内联样式(配置页、导入器、Wiki 变更页等),修复 lint 警告
  • CI 增加 lint 门禁: 所有构建 workflow 加入 pnpm run checkpnpm run lint
  • ESLint flat config 兼容: lint script 适配新版 ESLint

🌐 i18n 新键值

新增以下翻译键(en / zh_CN):

领域
服务器 DefaultWorkspace, SetAsDefault
服务器列表 LastSync, AheadCommits, Settings, StandardGitProtocol, UseStandardGitProtocol, UseStandardGitProtocolDescription

🤖 E2E 测试

  • 新增 workspace feature 测试场景(+11 行 feature, +196 行 step definitions)
  • 测试 hooks 增强(+89 行)

🔧 CI/CD 和工具链

  • APK npm workflow: 对齐 pnpm lockfile
  • Git Hooks: 新增 pre-push + setupGitHooks.mjs
  • 构建模板: runDetox.mjs 新增 Detox 运行器脚本

📊 总览

85 files changed, 4222 insertions(+), 655 deletions(-)
类别 数量
新功能 ~8 项
Bug 修复 ~12 项
新文件 ~20 个
重构文件 ~15 个
贡献者 主要作者 + Sisyphus (AI 协作)
## TidGi-Mobile v0.10.2-fix Release Report

Release Period: 2026-05-30 ~ 2026-06-12
Tag Range: v0.10.1v0.10.2-fix
Commits: 4 (including squashed PRs)
Files Changed: 85 files, +4,222 / −655 lines


✨ New Features

1. Standard Git Protocol Support

  • Added "Use standard git protocol" toggle in server add/edit UI
  • BackgroundSyncService implements syncWithStandardGitProtocol using native gitFetch + gitPush
  • Graceful fallback to bundle protocol when native modules are unavailable

2. Per-Workspace Storage Selection

  • Workspaces can now choose their own storage backend independently
  • Import flow exposes storage protocol options

3. Template Wiki System

  • New buildWikiTemplateZip.mjs for building template archives
  • wiki submodule introduced
  • Template selection integrated into workspace creation flow

4. Importer Rewrite

  • Index.tsx heavily refactored (+470 lines)
  • New ImporterServerConfigs component for configuring servers during import
  • Storage protocol options available in import flow

5. Mobile Analytics Tracking

  • New AnalyticsService (+236 lines) with queue size limits

6. Quick Load Toggle UI

  • WorkspaceSettings now exposes "Enable Quick Load" toggle (logic existed, UI was missing)

7. Workspace Sync Page

  • WorkspaceSyncPage adds "Sync Now" button and server list
  • Button shows live sync status (loading / success / failure)
  • Sub-wikis inherit server list from the main workspace

🔧 Bug Fixes

Git Related

  • Archive clone partial cleanup: Fixed buildGitIndex failure leaving empty index, causing git status to report all files as modified (fixes #97)
  • Directory cleanup before JGit fallback: Prevents "Destination path already exists and is not an empty directory" error after failed archive clone
  • Ahead-count false positive: Fixed gitGetAheadCommitCount incorrectly returning all local commits when remote is ahead
  • Default workspace persistence: defaultWorkspaceId explicitly stored with migration from first wiki

Performance & Resources

  • Push/fetch hot path optimization: Cached ensureGitConfigForMobile per directory (once per session); gitGetAheadCommitCount fast-path (compare OIDs, return 0 immediately if matched); LOG_DEPTH reduced from 300 to 100
  • Reduced UI freeze time during sync

Other Fixes

  • ARCore dialog: Added optional ARCore config plugin arOptional to suppress "Please install Google Play Services for AR" prompt
  • LoggerService silent write failure: Fixed URI path handling for internal storage log writes
  • Deprecated Clipboard: Migrated from Clipboard to expo-clipboard
  • Navigation param safety: Added optional chaining for currentRoute?.params?.id
  • Duplicate haptic feedback: Fixed double vibration in syncWithStandardGitProtocol
  • Dynamic import .js extension: Fixed Metro resolution issue with .ts source files

🎨 Styling & Code Quality

  • StyleSheet → styled-components migration: Large-scale inline style extraction across config pages, importer, wiki changes, and settings pages
  • CI lint gates: All build workflows now run pnpm run check and pnpm run lint
  • ESLint flat config: Lint script updated for new ESLint configuration format

🌐 i18n New Keys

Added translation keys for both en and zh_CN:

Domain Keys
Workspace DefaultWorkspace, SetAsDefault
Server List LastSync, AheadCommits, Settings, StandardGitProtocol, UseStandardGitProtocol, UseStandardGitProtocolDescription

🤖 E2E Testing

  • New workspace feature test scenarios (+11 feature lines, +196 step definition lines)
  • Enhanced test hooks (+89 lines)

🔧 CI/CD & Tooling

  • APK npm workflow: Aligned with pnpm lockfile
  • Git Hooks: New pre-push + setupGitHooks.mjs
  • Detox runner: New runDetox.mjs

📊 Summary

Category Count
New Features ~8 items
Bug Fixes ~12 items
New Files ~20
Refactored Files ~15
Contributors Primary author + Sisyphus (AI-assisted)

Key Theme: This release focuses on Git reliability and user experience — fixing long-standing issues with archive cloning, sync performance, and storage configuration, while adding the standard Git protocol as an alternative sync method. The importer rewrite and template wiki system lay groundwork for a smoother onboarding experience.