Commit graph

925 commits

Author SHA1 Message Date
Your Name
cb8ee290bb fix: 修正 PDFMathTranslate 模型路徑,確保預下載到 babeldoc cache 目錄 2026-01-23 11:48:02 +08:00
Your Name
0bc22411b6 ci: 優化 workflow timeout 和新增手動觸發 2026-01-23 11:29:26 +08:00
Your Name
63f0b57466 chore(release): bump version to 0.1.12 2026-01-23 01:00:18 +08:00
Your Name
31088cf12b fix: 修正表單標籤結構,將文本包裝在 span 中以改善可讀性 2026-01-23 00:52:32 +08:00
Your Name
443cdaa01c refactor(ci): 將 E2E 測試移至服務更新後執行
- docker-build-remote.yml: E2E 測試現在在 Step 20
- 測試在實際部署的 convertx-cn 容器上執行
- 確保服務更新成功後才驗證功能
2026-01-23 00:45:18 +08:00
Your Name
3eec72926f feat(ci): 擴展 CI/CD E2E 測試並新增 Mock 測試
- release.yml: 新增 16 個 Docker 容器 E2E 測試
  - Inkscape (SVG→PNG, SVG→PDF)
  - Pandoc (Markdown→HTML, LaTeX)
  - LibreOffice (TXT→PDF, ODT→DOCX)
  - FFmpeg (音訊、視訊、MP4→GIF)
  - ImageMagick (PNG→JPEG)
  - Calibre (HTML→EPUB)
  - Potrace (PBM→SVG)
  - Tesseract OCR
  - GraphicsMagick, Resvg, VIPS

- docker-build-remote.yml: 新增 21 個遠端 E2E 測試
  - 透過 Tailscale SSH 在遠端 Docker 容器中執行
  - 包含通過/失敗計數和測試摘要

- 新增 Mock 測試 (converters.mock.test.ts)
  - 81 個測試驗證轉換器配置邏輯
  - 不依賴實際工具,可在本地執行
  - 測試 API 結構、格式支援、錯誤處理等
2026-01-23 00:42:12 +08:00
Your Name
56161ed2e1 fix: format E2E tests and add helpers to knip ignore 2026-01-23 00:26:11 +08:00
Your Name
a9f6e1de6f ci: add E2E tests to release workflow
- Add E2E converter tests in Docker container (verify-image job)
  - Inkscape: SVG → PNG
  - Pandoc: Markdown → HTML
  - LibreOffice: TXT → PDF
  - FFmpeg: Audio generation
  - ImageMagick: PNG → JPEG
  - API healthcheck endpoint

- Add cleanup step for verification containers
- Update verification summary to include E2E results
- Install pandoc and imagemagick in run-bun-test workflow for E2E tests
2026-01-23 00:18:03 +08:00
Your Name
840c215597 test(e2e): add End-to-End test suite
Added comprehensive E2E tests:

1. API E2E Tests (api.e2e.test.ts):
   - Healthcheck API testing
   - Static resources verification
   - Module loading tests
   - Converter properties validation
   - File type normalization tests
   - i18n module tests
   - Transfer module tests
   - Database structure tests

2. Converter E2E Tests (converters.e2e.test.ts):
   - Real Inkscape conversions (SVG → PNG/PDF/EPS)
   - Real Pandoc conversions (Markdown → HTML/DOCX/RST)
   - Dasel format conversions (JSON → YAML/TOML)
   - Batch conversion tests
   - Error handling tests
   - Auto-detection of available tools

3. Test Infrastructure:
   - helpers.ts: Tool detection, test file generation
   - fixtures/: Sample test files (SVG, MD, JSON)
   - .gitignore: Exclude output directory

Total: 34 new E2E tests
2026-01-23 00:14:31 +08:00
Your Name
26304a295e fix(inkscape): use headless-safe export syntax (--export-type/--export-filename)
Breaking change from Inkscape 1.0+:
- Old syntax: inkscape input.png -o output.svg (triggers GTK init)
- New syntax: inkscape input.png --export-type=svg --export-filename=output.svg

This is the correct headless-safe approach, no need for xvfb.

Ref: https://inkscape.org/doc/inkscape-man.html
2026-01-23 00:01:24 +08:00
Your Name
b5992a84e0 fix(inkscape): use xvfb-run for headless execution
- Inkscape requires X11 display connection, causing 'GtkStyleContext without display' error
- Solution: use xvfb-run to create virtual X11 display
- Fallback: try direct inkscape if xvfb-run fails
- Add xvfb package to Dockerfile
- Update inkscape tests for new xvfb-run behavior

Fixes: Gtk-ERROR: Can't create a GtkStyleContext without a display connection
2026-01-22 23:56:47 +08:00
Your Name
2f9c418964 Merge branch 'main' of https://github.com/pi-docket/ConvertX-CN 2026-01-22 23:52:28 +08:00
Your Name
4ec60bf696 fix: 更新 bun.lock 中的依賴版本以提升穩定性和安全性 2026-01-22 23:52:25 +08:00
Your Name
d5c9bfa320 feat(ci): add model/headless verification, use --no-ff merge strategy
- Add verify-image job in release.yml with:
  - Headless environment verification (DISPLAY, Xvfb, LibreOffice, Inkscape, Calibre)
  - Model download verification (HuggingFace cache, ONNX models, offline mode)
  - Basic functionality verification (container startup, tool availability)
- Add Test 3 and Test 4 in upstream-sync.yml for headless/model verification
- Update auto-upstream-sync.yml to use git merge --no-ff for better history tracking
2026-01-22 23:51:18 +08:00
evil9369
381de0870d
Update README with testing notes for features 2026-01-22 22:47:53 +08:00
Your Name
89c121bdf9 fix: 簡化 MinerU 和 PDFMathTranslate 的程式碼,改善錯誤處理與參數傳遞 2026-01-22 22:27:40 +08:00
Your Name
566ee48bfe fix: 調整 Dockerfile 中 APT 重試機制與安裝步驟,簡化命令格式 2026-01-22 22:18:41 +08:00
Your Name
a9867ee97c feat: add Dockerfile for ConvertX-CN v0.1.11 with pre-downloaded models and offline-first design
- Introduced a new Dockerfile that builds the ConvertX-CN image with all necessary dependencies and models pre-downloaded.
- Implemented multi-stage builds to optimize image size and build time.
- Added a script for verifying the integrity of pre-downloaded models and dependencies.
- Ensured the image operates in an offline-first manner, eliminating runtime dependencies on external networks.
2026-01-22 22:17:29 +08:00
Your Name
8820aecafe fix: 更新 Docker 映像標籤預設值至 0.1.11.test 2026-01-22 20:10:47 +08:00
Your Name
fd674fac9c fix: 調整 BabelDOC 資源下載邏輯,簡化重試流程並改善錯誤提示 2026-01-22 19:44:26 +08:00
Your Name
e3406a8d04 fix: BabelDOC 改用 generate-offline-assets 方式預下載資源
- 使用 --generate-offline-assets 生成離線包,比 warmup 更穩定
- 添加 10 分鐘超時控制避免無限等待
- 離線包生成後使用 --restore-offline-assets 恢復到快取
- 如果離線包方式失敗,fallback 到 warmup 模式
- 最多重試 3 次,每次失敗後等待 30 秒
- 即使全部失敗,BabelDOC 仍可在 runtime 按需下載
2026-01-22 19:35:04 +08:00
Your Name
5ad22e44ec fix: 優化 Docker 磁碟清理邏輯,針對大型模型與多架構建置進行強化,減少空間使用 2026-01-22 19:24:53 +08:00
Your Name
37b56aed56 fix: 優化 Dockerfile 中模型下載與快取清理邏輯,減少層差異與空間使用 2026-01-22 19:20:56 +08:00
Your Name
11dc51890c fix: 更新 MinerU 模型下載邏輯,增加設定檔驗證與錯誤處理 2026-01-22 19:10:54 +08:00
Your Name
df0082bfb9 feat: 在 Docker Build & Push 工作流程中新增版本顯示,並修正錯誤處理 2026-01-22 17:54:08 +08:00
Your Name
4ca92e3a22 release: v0.1.11 - BabelDOC 翻譯引擎與穩定性改進
## 新增功能

- BabelDOC PDF 翻譯引擎:支援 PDF/Markdown/HTML 輸出,15 種目標語言

- Dockerfile 更新:pipx 安裝 babeldoc,warmup 預載資源

## 修復

- 修正 user.tsx XSS 安全警告(label 包裹 safe span)

## 品質保證

- 173 個測試全數通過

- TypeScript / ESLint / Prettier / Knip 檢查通過
2026-01-22 17:41:12 +08:00
Your Name
6d4ed58637 fix: 更新 PDFMathTranslate 模型下載方式,使用 snapshot_download 避免硬編碼檔名 2026-01-22 16:27:54 +08:00
Your Name
a7ea4e2a0b Merge branch 'main' of https://github.com/pi-docket/ConvertX-CN 2026-01-22 12:33:04 +08:00
Your Name
a5dccccd86 fix: 更新 Dockerfile,修正 huggingface_hub 安裝指令以符合 Debian bookworm 的 PEP 668 要求 2026-01-22 12:33:01 +08:00
evil0119
4569b816b8
更新 README.md 2026-01-22 12:24:23 +08:00
evil0119
4189c88590
更新 README.md 2026-01-22 12:23:57 +08:00
Your Name
05c4261f24 fix: 更新 PDFMathTranslate 描述,強調安全翻譯功能 2026-01-22 11:48:21 +08:00
Your Name
8471dfce42 feat: 更新 README.md,強調 ConvertX-CN 的全功能特性與優勢 2026-01-22 11:46:37 +08:00
Your Name
9ba87cf111 chore: release v0.1.11 2026-01-22 11:01:43 +08:00
Your Name
7df88d2f4e chore: 更新工作流程中的 Node.js 和 Bun 版本,調整依賴項版本 2026-01-22 10:49:42 +08:00
Your Name
0f60f3ae14 feat: 更新 Dockerfile 版本,新增模型驗證腳本以確保預下載模型完整性 2026-01-22 10:38:11 +08:00
Your Name
607ccbb4ac fix: 修正工作流程名稱格式,移除多餘的文字 2026-01-22 09:50:32 +08:00
Your Name
8bb5be2c52 fix: 修正工作流程名稱格式,移除多餘的 emoji 2026-01-22 09:49:58 +08:00
Your Name
69610d28e0 feat: 新增遠端服務更新工作流程,透過 Tailscale SSH 更新 Docker 服務 2026-01-22 09:44:06 +08:00
Your Name
ffb72c531f chore: update Bun version to 1.3.6 in Dockerfiles 2026-01-22 00:58:36 +08:00
Your Name
2169aa90e9 style: fix prettier formatting 2026-01-22 00:51:37 +08:00
Your Name
912546aaa7 fix: ENOENT download error for archive-only converters (PDFMathTranslate/MinerU)
- Add existsSync checks in download.tsx before file access
- Fix normalizeFiletype.ts: md-t/md-i return original format (not tar.gz)
- Add outputMode: 'archive' support in main.ts with auto .tar suffix
- PDFMathTranslate outputs translated-<lang>.pdf + bilingual-<lang>.pdf (no original)
- MinerU outputs complete folder in .tar with logging
- Hide preview icon for .tar files in results.tsx
- Update Bun version: 1.2.2 -> 1.3.6
- Add Step 19: auto-deploy to remote server after Docker push

All 159 tests pass.
2026-01-22 00:47:37 +08:00
Your Name
1f800c3619 feat: 新增自動生成 Changelog 和 GitHub Release 的步驟 2026-01-21 23:53:44 +08:00
Your Name
cf8aa32ea8 fix: 移除多餘的空行以改善 YAML 格式 2026-01-21 22:41:28 +08:00
Your Name
258313fcbb fix: 正則表達式支援任意數量的版本數字段
- 舊規則:^[0-9]+\.[0-9]+\.[0-9]+$ (僅 X.Y.Z)
- 新規則:^[0-9]+(\.[0-9]+)+$ (支援 X.Y.Z.W...)
- 0.1.10 → latest ✓
- 0.1.10.1 → latest ✓
- 0.1.10.test → 不加 latest
2026-01-21 22:40:33 +08:00
Your Name
2f6c3fc0c6 feat: 根據版本號格式決定是否標記 latest
- 純數字版本(如 0.1.10)→ 同時標記 latest
- 測試版本(如 0.1.10.test)→ 僅標記版本號
- 使用正則表達式 ^[0-9]+\.[0-9]+\.[0-9]+$ 判斷
2026-01-21 22:38:37 +08:00
Your Name
cac29bfff1 fix: 修正 Dockerfile 中 dasel 和 resvg 安裝步驟的縮排問題 2026-01-21 21:10:33 +08:00
Your Name
947d189b6d fix: 修復 resvg ARM64 無預編譯版本問題
- 更新 resvg repo URL 從 RazrFalcon 到 linebender
- ARM64 架構跳過 resvg 安裝(官方無預編譯版本)
- x86_64 正常安裝 resvg v0.44.0
- ARM64 可使用 ImageMagick/Inkscape 作為 SVG 轉換替代方案
2026-01-21 21:04:40 +08:00
Your Name
4e07cd57aa fix: 修復 bookworm 缺少 dasel 和 resvg 套件的問題
- 從 apt-get install 移除 dasel 和 resvg
- 改用 GitHub releases 下載二進位檔案
- dasel v2.8.1 支援 amd64/arm64
- resvg v0.44.0 支援 amd64/arm64
2026-01-21 20:56:39 +08:00
Your Name
7c4a361e3f fix: 更新 Tailscale SSH 連線步驟,新增手動網頁驗證提示並設定連線超時 2026-01-21 20:53:14 +08:00