## TidGi-Mobile v0.10.2-fix 发布报告
发布时间: 2026-05-30 ~ 2026-06-12
标签范围: v0.10.1 → v0.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 check和pnpm run lint - ESLint flat config 兼容:
lintscript 适配新版 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.1 → v0.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
BackgroundSyncServiceimplementssyncWithStandardGitProtocolusing nativegitFetch+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
ImporterServerConfigscomponent 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
buildGitIndexfailure leaving empty index, causinggit statusto 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
gitGetAheadCommitCountincorrectly returning all local commits when remote is ahead - Default workspace persistence:
defaultWorkspaceIdexplicitly stored with migration from first wiki
Performance & Resources
- Push/fetch hot path optimization: Cached
ensureGitConfigForMobileper directory (once per session);gitGetAheadCommitCountfast-path (compare OIDs, return 0 immediately if matched);LOG_DEPTHreduced 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
Clipboardtoexpo-clipboard - Navigation param safety: Added optional chaining for
currentRoute?.params?.id - Duplicate haptic feedback: Fixed double vibration in
syncWithStandardGitProtocol - Dynamic import
.jsextension: Fixed Metro resolution issue with.tssource 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 checkandpnpm 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.