feat(v0.1.4): Fix i18n imports + Default open registration

## Changes

### i18n Module Fixes
- Fix import paths in service.ts, languageSelector.tsx, header.tsx, base.tsx, results.tsx
- Change from '../i18n' to '../i18n/index' or './index' for proper module resolution

### Registration (Breaking Change)
- Change ACCOUNT_REGISTRATION default from false to true (out-of-box ready)
- Login and Register pages now both visible by default

### Version Bump
- Update package.json to v0.1.4
- Update CHANGELOG.md with v0.1.4 release notes
- Update README.md and docs with new version numbers

### Build Verification
- bun run build: PASSED
- Docker build: PASSED
- TypeScript compilation: PASSED (no errors)
This commit is contained in:
Your Name 2026-01-20 11:41:43 +08:00
parent 5c68308c36
commit 558d638df8
17 changed files with 266 additions and 234 deletions

View file

@ -98,7 +98,7 @@ server {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# 長時間連線支援(大檔案轉換)
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
@ -114,7 +114,7 @@ convert.example.com {
header_up X-Real-IP {remote_host}
header_up X-Forwarded-Proto {scheme}
}
request_body {
max_size 0 # 無限制
}
@ -165,7 +165,7 @@ example.com {
```yaml
environment:
- MAX_CONVERT_PROCESS=4 # 最多同時 4 個轉換任務
- MAX_CONVERT_PROCESS=4 # 最多同時 4 個轉換任務
```
---
@ -177,8 +177,8 @@ environment:
```yaml
environment:
- ALLOW_UNAUTHENTICATED=true
- HIDE_HISTORY=true # 建議同時隱藏歷史
- AUTO_DELETE_EVERY_N_HOURS=1 # 快速清理
- HIDE_HISTORY=true # 建議同時隱藏歷史
- AUTO_DELETE_EVERY_N_HOURS=1 # 快速清理
```
---
@ -201,7 +201,7 @@ services:
- shared-data:/app/data
environment:
- JWT_SECRET=${JWT_SECRET}
convertx-2:
image: convertx/convertx-cn:latest
volumes:
@ -246,9 +246,9 @@ deploy:
deploy:
resources:
limits:
cpus: '4'
cpus: "4"
reservations:
cpus: '1'
cpus: "1"
```
---

View file

@ -4,28 +4,28 @@ ConvertX-CN 完整版已內建以下所有轉換器,開箱即用。
## 轉換器列表
| 轉換器 | 用途 | 輸入格式數 | 輸出格式數 |
| ------ | ---- | ---------- | ---------- |
| [Inkscape](https://inkscape.org/) | 向量圖形 | 7 | 17 |
| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 |
| [resvg](https://github.com/RazrFalcon/resvg) | SVG | 1 | 1 |
| [Vips](https://github.com/libvips/libvips) | 圖片 | 45 | 23 |
| [libheif](https://github.com/strukturag/libheif) | HEIF | 2 | 4 |
| [XeLaTeX](https://tug.org/xetex/) | LaTeX | 1 | 1 |
| [Calibre](https://calibre-ebook.com/) | 電子書 | 26 | 19 |
| [LibreOffice](https://www.libreoffice.org/) | 文件 | 41 | 22 |
| [Dasel](https://github.com/TomWright/dasel) | 資料檔案 | 5 | 4 |
| [Pandoc](https://pandoc.org/) | 文件 | 43 | 65 |
| [msgconvert](https://github.com/mvz/email-outlook-message-perl) | Outlook | 1 | 1 |
| VCF to CSV | 聯絡人 | 1 | 1 |
| [dvisvgm](https://dvisvgm.de/) | 向量圖形 | 4 | 2 |
| [ImageMagick](https://imagemagick.org/) | 圖片 | 245 | 183 |
| [GraphicsMagick](http://www.graphicsmagick.org/) | 圖片 | 167 | 130 |
| [Assimp](https://github.com/assimp/assimp) | 3D 模型 | 77 | 23 |
| [FFmpeg](https://ffmpeg.org/) | 影音 | ~472 | ~199 |
| [Potrace](https://potrace.sourceforge.net/) | 點陣轉向量 | 4 | 11 |
| [VTracer](https://github.com/visioncortex/vtracer) | 點陣轉向量 | 8 | 1 |
| [Markitdown](https://github.com/microsoft/markitdown) | 文件 | 6 | 1 |
| 轉換器 | 用途 | 輸入格式數 | 輸出格式數 |
| --------------------------------------------------------------- | ---------- | ---------- | ---------- |
| [Inkscape](https://inkscape.org/) | 向量圖形 | 7 | 17 |
| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 |
| [resvg](https://github.com/RazrFalcon/resvg) | SVG | 1 | 1 |
| [Vips](https://github.com/libvips/libvips) | 圖片 | 45 | 23 |
| [libheif](https://github.com/strukturag/libheif) | HEIF | 2 | 4 |
| [XeLaTeX](https://tug.org/xetex/) | LaTeX | 1 | 1 |
| [Calibre](https://calibre-ebook.com/) | 電子書 | 26 | 19 |
| [LibreOffice](https://www.libreoffice.org/) | 文件 | 41 | 22 |
| [Dasel](https://github.com/TomWright/dasel) | 資料檔案 | 5 | 4 |
| [Pandoc](https://pandoc.org/) | 文件 | 43 | 65 |
| [msgconvert](https://github.com/mvz/email-outlook-message-perl) | Outlook | 1 | 1 |
| VCF to CSV | 聯絡人 | 1 | 1 |
| [dvisvgm](https://dvisvgm.de/) | 向量圖形 | 4 | 2 |
| [ImageMagick](https://imagemagick.org/) | 圖片 | 245 | 183 |
| [GraphicsMagick](http://www.graphicsmagick.org/) | 圖片 | 167 | 130 |
| [Assimp](https://github.com/assimp/assimp) | 3D 模型 | 77 | 23 |
| [FFmpeg](https://ffmpeg.org/) | 影音 | ~472 | ~199 |
| [Potrace](https://potrace.sourceforge.net/) | 點陣轉向量 | 4 | 11 |
| [VTracer](https://github.com/visioncortex/vtracer) | 點陣轉向量 | 8 | 1 |
| [Markitdown](https://github.com/microsoft/markitdown) | 文件 | 6 | 1 |
> 註FFmpeg 的格式數量包含部分重複格式。
@ -33,16 +33,16 @@ ConvertX-CN 完整版已內建以下所有轉換器,開箱即用。
ConvertX-CN 完整版已預載:
| 類別 | 內建內容 |
| ---- | -------- |
| **文件轉換** | LibreOffice (headless)、Pandoc |
| **LaTeX** | TexLive Full完整版支援所有 LaTeX 需求) |
| 類別 | 內建內容 |
| ------------ | ---------------------------------------------------------------- |
| **文件轉換** | LibreOffice (headless)、Pandoc |
| **LaTeX** | TexLive Full完整版支援所有 LaTeX 需求) |
| **OCR 識別** | Tesseract OCR + 繁體中文、簡體中文、日文、韓文、英文、德文語言包 |
| **CJK 字型** | Noto CJK中日韓、Noto Emoji、微軟核心字型、標楷體 |
| **影音轉換** | FFmpeg、ImageMagick、GraphicsMagick |
| **向量圖形** | Inkscape、Potrace、VTracer、resvg |
| **電子書** | Calibre |
| **其他** | Ghostscript、MuPDF、Poppler、libheif、libjxl 等 |
| **CJK 字型** | Noto CJK中日韓、Noto Emoji、微軟核心字型、標楷體 |
| **影音轉換** | FFmpeg、ImageMagick、GraphicsMagick |
| **向量圖形** | Inkscape、Potrace、VTracer、resvg |
| **電子書** | Calibre |
| **其他** | Ghostscript、MuPDF、Poppler、libheif、libjxl 等 |
## 新增轉換器

View file

@ -6,11 +6,11 @@ ConvertX-CN 提供預建的 Docker Image包含所有轉換依賴。
### 可用 Tag
| Tag | 說明 |
|-----|------|
| `convertx/convertx-cn:latest` | 最新穩定版 |
| `convertx/convertx-cn:v0.1.3` | 指定版本號 |
| `convertx/convertx-cn:v0.1.3-FULL` | 完整版(與 latest 相同) |
| Tag | 說明 |
| ---------------------------------- | ------------------------ |
| `convertx/convertx-cn:latest` | 最新穩定版 |
| `convertx/convertx-cn:v0.1.4` | 指定版本號 |
| `convertx/convertx-cn:v0.1.4-FULL` | 完整版(與 latest 相同) |
### Image 大小
@ -34,13 +34,13 @@ docker run -d \
### 參數說明
| 參數 | 說明 |
|------|------|
| `-d` | 背景執行 |
| `--name convertx-cn` | 容器名稱 |
| `-p 3000:3000` | 連接埠映射 |
| 參數 | 說明 |
| --------------------- | ---------- |
| `-d` | 背景執行 |
| `--name convertx-cn` | 容器名稱 |
| `-p 3000:3000` | 連接埠映射 |
| `-v ./data:/app/data` | 資料持久化 |
| `-e TZ=Asia/Taipei` | 時區設定 |
| `-e TZ=Asia/Taipei` | 時區設定 |
---

View file

@ -6,17 +6,17 @@
## 安全性設定
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| `JWT_SECRET` | `randomUUID()` | 用於簽署 JWT 的密鑰字串。**生產環境請務必設定** |
| `ACCOUNT_REGISTRATION` | `false` | 是否允許註冊新帳號 |
| `HTTP_ALLOWED` | `false` | 是否允許 HTTP 連線(僅本地使用建議開啟) |
| `ALLOW_UNAUTHENTICATED` | `false` | 是否允許未登入使用 |
| 變數名稱 | 預設值 | 說明 |
| ----------------------- | -------------- | ----------------------------------------------- |
| `JWT_SECRET` | `randomUUID()` | 用於簽署 JWT 的密鑰字串。**生產環境請務必設定** |
| `ACCOUNT_REGISTRATION` | `true` | 是否允許註冊新帳號(預設開放) |
| `HTTP_ALLOWED` | `false` | 是否允許 HTTP 連線(僅本地使用建議開啟) |
| `ALLOW_UNAUTHENTICATED` | `false` | 是否允許未登入使用 |
### 安全建議
```yaml
# 生產環境
# 生產環境(關閉註冊)
environment:
- JWT_SECRET=a-very-long-random-string-at-least-32-characters
- ACCOUNT_REGISTRATION=false
@ -28,9 +28,9 @@ environment:
## 檔案管理
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| `AUTO_DELETE_EVERY_N_HOURS` | `24` | 自動刪除超過 N 小時的檔案0 = 停用) |
| 變數名稱 | 預設值 | 說明 |
| --------------------------- | ------ | ------------------------------------- |
| `AUTO_DELETE_EVERY_N_HOURS` | `24` | 自動刪除超過 N 小時的檔案0 = 停用) |
### 範例
@ -46,11 +46,11 @@ environment:
## 轉換設定
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| `MAX_CONVERT_PROCESS` | `0` | 最大同時轉換數0 = 無限制) |
| `FFMPEG_ARGS` | - | FFmpeg 輸入參數,例如 `-hwaccel vaapi` |
| `FFMPEG_OUTPUT_ARGS` | - | FFmpeg 輸出參數,例如 `-preset veryfast` |
| 變數名稱 | 預設值 | 說明 |
| --------------------- | ------ | ---------------------------------------- |
| `MAX_CONVERT_PROCESS` | `0` | 最大同時轉換數0 = 無限制) |
| `FFMPEG_ARGS` | - | FFmpeg 輸入參數,例如 `-hwaccel vaapi` |
| `FFMPEG_OUTPUT_ARGS` | - | FFmpeg 輸出參數,例如 `-preset veryfast` |
### 硬體加速範例
@ -69,10 +69,10 @@ environment:
## 介面設定
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| `WEBROOT` | - | 子路徑部署,例如 `/convertx` |
| `HIDE_HISTORY` | `false` | 隱藏歷史紀錄頁面 |
| 變數名稱 | 預設值 | 說明 |
| -------------- | ------- | ---------------------------- |
| `WEBROOT` | - | 子路徑部署,例如 `/convertx` |
| `HIDE_HISTORY` | `false` | 隱藏歷史紀錄頁面 |
### 子路徑部署
@ -86,10 +86,10 @@ environment:
## 本地化設定
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| `LANGUAGE` | `en` | 日期格式語言BCP 47 格式) |
| `TZ` | `UTC` | 時區設定 |
| 變數名稱 | 預設值 | 說明 |
| ---------- | ------ | --------------------------- |
| `LANGUAGE` | `en` | 日期格式語言BCP 47 格式) |
| `TZ` | `UTC` | 時區設定 |
### 常用時區
@ -111,8 +111,8 @@ environment:
## 進階設定
| 變數名稱 | 預設值 | 說明 |
|----------|--------|------|
| 變數名稱 | 預設值 | 說明 |
| ------------------------------ | ------- | ---------------------------- |
| `UNAUTHENTICATED_USER_SHARING` | `false` | 未登入使用者是否共享檔案空間 |
---

View file

@ -2,12 +2,12 @@
## 系統需求
| 需求 | 最低 | 建議 |
|------|------|------|
| Docker | 20.10+ | 24.0+ |
| RAM | 4 GB | 8 GB |
| 磁碟空間 | 10 GB | 20 GB |
| CPU | 2 核心 | 4 核心 |
| 需求 | 最低 | 建議 |
| -------- | ------ | ------ |
| Docker | 20.10+ | 24.0+ |
| RAM | 4 GB | 8 GB |
| 磁碟空間 | 10 GB | 20 GB |
| CPU | 2 核心 | 4 核心 |
---

View file

@ -8,118 +8,118 @@ ConvertX-CN 支援 **65 種語言**,是目前最完整的多語言檔案轉換
### 東亞語言5 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| 代碼 | 語言 | 原生名稱 |
| ------- | ---------------- | -------- |
| `zh-TW` | 繁體中文(預設) | 繁體中文 |
| `zh-CN` | 簡體中文 | 简体中文 |
| `en` | 英文 | English |
| `ja` | 日文 | 日本語 |
| `ko` | 韓文 | 한국어 |
| `zh-CN` | 簡體中文 | 简体中文 |
| `en` | 英文 | English |
| `ja` | 日文 | 日本語 |
| `ko` | 韓文 | 한국어 |
### 西歐語言10 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `de` | 德文 | Deutsch |
| `fr` | 法文 | Français |
| `es` | 西班牙文 | Español |
| `it` | 義大利文 | Italiano |
| `pt` | 葡萄牙文 | Português |
| `nl` | 荷蘭文 | Nederlands |
| `ca` | 加泰隆尼亞文 | Català |
| `eu` | 巴斯克文 | Euskara |
| `gl` | 加利西亞文 | Galego |
| `mt` | 馬爾他文 | Malti |
| 代碼 | 語言 | 原生名稱 |
| ---- | ------------ | ---------- |
| `de` | 德文 | Deutsch |
| `fr` | 法文 | Français |
| `es` | 西班牙文 | Español |
| `it` | 義大利文 | Italiano |
| `pt` | 葡萄牙文 | Português |
| `nl` | 荷蘭文 | Nederlands |
| `ca` | 加泰隆尼亞文 | Català |
| `eu` | 巴斯克文 | Euskara |
| `gl` | 加利西亞文 | Galego |
| `mt` | 馬爾他文 | Malti |
### 北歐語言5 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `sv` | 瑞典文 | Svenska |
| `da` | 丹麥文 | Dansk |
| `fi` | 芬蘭文 | Suomi |
| `no` | 挪威文 | Norsk |
| 代碼 | 語言 | 原生名稱 |
| ---- | ------ | -------- |
| `sv` | 瑞典文 | Svenska |
| `da` | 丹麥文 | Dansk |
| `fi` | 芬蘭文 | Suomi |
| `no` | 挪威文 | Norsk |
| `is` | 冰島文 | Íslenska |
### 東歐語言12 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `ru` | 俄文 | Русский |
| `pl` | 波蘭文 | Polski |
| `uk` | 烏克蘭文 | Українська |
| `cs` | 捷克文 | Čeština |
| `hu` | 匈牙利文 | Magyar |
| `ro` | 羅馬尼亞文 | Română |
| `bg` | 保加利亞文 | Български |
| `hr` | 克羅埃西亞文 | Hrvatski |
| `sk` | 斯洛伐克文 | Slovenčina |
| 代碼 | 語言 | 原生名稱 |
| ---- | ------------ | ----------- |
| `ru` | 俄文 | Русский |
| `pl` | 波蘭文 | Polski |
| `uk` | 烏克蘭文 | Українська |
| `cs` | 捷克文 | Čeština |
| `hu` | 匈牙利文 | Magyar |
| `ro` | 羅馬尼亞文 | Română |
| `bg` | 保加利亞文 | Български |
| `hr` | 克羅埃西亞文 | Hrvatski |
| `sk` | 斯洛伐克文 | Slovenčina |
| `sl` | 斯洛維尼亞文 | Slovenščina |
| `sr` | 塞爾維亞文 | Српски |
| `mk` | 馬其頓文 | Македонски |
| `sr` | 塞爾維亞文 | Српски |
| `mk` | 馬其頓文 | Македонски |
### 波羅的海語言3 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `lt` | 立陶宛文 | Lietuvių |
| 代碼 | 語言 | 原生名稱 |
| ---- | ---------- | -------- |
| `lt` | 立陶宛文 | Lietuvių |
| `lv` | 拉脫維亞文 | Latviešu |
| `et` | 愛沙尼亞文 | Eesti |
| `et` | 愛沙尼亞文 | Eesti |
### 其他歐洲語言4 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `el` | 希臘文 | Ελληνικά |
| `sq` | 阿爾巴尼亞文 | Shqip |
| `ga` | 愛爾蘭文 | Gaeilge |
| `cy` | 威爾斯文 | Cymraeg |
| 代碼 | 語言 | 原生名稱 |
| ---- | ------------ | -------- |
| `el` | 希臘文 | Ελληνικά |
| `sq` | 阿爾巴尼亞文 | Shqip |
| `ga` | 愛爾蘭文 | Gaeilge |
| `cy` | 威爾斯文 | Cymraeg |
### 中東語言4 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `ar` | 阿拉伯文 | العربية |
| `he` | 希伯來文 | עברית |
| `fa` | 波斯文 | فارسی |
| `tr` | 土耳其文 | Türkçe |
| 代碼 | 語言 | 原生名稱 |
| ---- | -------- | -------- |
| `ar` | 阿拉伯文 | العربية |
| `he` | 希伯來文 | עברית |
| `fa` | 波斯文 | فارسی |
| `tr` | 土耳其文 | Türkçe |
### 南亞語言10 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `hi` | 印地文 | हिन्दी |
| `bn` | 孟加拉文 | বাংলা |
| `ta` | 泰米爾文 | தமிழ் |
| `te` | 泰盧固文 | తెలుగు |
| `mr` | 馬拉地文 | मराठी |
| `gu` | 古吉拉特文 | ગુજરાતી |
| `kn` | 卡納達文 | ಕನ್ನಡ |
| `ml` | 馬拉雅拉姆文 | മലയാളം |
| `ne` | 尼泊爾文 | नेपाली |
| `si` | 僧伽羅文 | සිංහල |
| 代碼 | 語言 | 原生名稱 |
| ---- | ------------ | -------- |
| `hi` | 印地文 | हिन्दी |
| `bn` | 孟加拉文 | বাংলা |
| `ta` | 泰米爾文 | தமிழ் |
| `te` | 泰盧固文 | తెలుగు |
| `mr` | 馬拉地文 | मराठी |
| `gu` | 古吉拉特文 | ગુજરાતી |
| `kn` | 卡納達文 | ಕನ್ನಡ |
| `ml` | 馬拉雅拉姆文 | മലയാളം |
| `ne` | 尼泊爾文 | नेपाली |
| `si` | 僧伽羅文 | සිංහල |
### 東南亞語言8 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `th` | 泰文 | ไทย |
| `vi` | 越南文 | Tiếng Việt |
| `id` | 印尼文 | Bahasa Indonesia |
| `ms` | 馬來文 | Bahasa Melayu |
| `fil` | 菲律賓文 | Filipino |
| `my` | 緬甸文 | မြန်မာ |
| `km` | 高棉文 | ខ្មែរ |
| `lo` | 寮文 | ລາວ |
| 代碼 | 語言 | 原生名稱 |
| ----- | -------- | ---------------- |
| `th` | 泰文 | ไทย |
| `vi` | 越南文 | Tiếng Việt |
| `id` | 印尼文 | Bahasa Indonesia |
| `ms` | 馬來文 | Bahasa Melayu |
| `fil` | 菲律賓文 | Filipino |
| `my` | 緬甸文 | မြန်မာ |
| `km` | 高棉文 | ខ្មែរ |
| `lo` | 寮文 | ລາວ |
### 非洲語言4 種)
| 代碼 | 語言 | 原生名稱 |
|------|------|----------|
| `af` | 南非語 | Afrikaans |
| 代碼 | 語言 | 原生名稱 |
| ---- | ---------- | --------- |
| `af` | 南非語 | Afrikaans |
| `sw` | 斯瓦希里文 | Kiswahili |
| `am` | 阿姆哈拉文 | አማርኛ |
| `zu` | 祖魯文 | isiZulu |
| `am` | 阿姆哈拉文 | አማርኛ |
| `zu` | 祖魯文 | isiZulu |
---

View file

@ -48,6 +48,7 @@ Job ID 是一個 UUID v4 格式的字串,例如:
```
例如:
```
http://localhost:3000/results/550e8400-e29b-41d4-a716-446655440000
```
@ -123,30 +124,30 @@ ConvertX-CN 使用 SQLite 作為資料庫,儲存於 `/app/data/convertx.db`。
#### users
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | INTEGER | 使用者 ID |
| email | TEXT | 電子郵件 |
| password | TEXT | 密碼雜湊 |
| 欄位 | 類型 | 說明 |
| -------- | ------- | --------- |
| id | INTEGER | 使用者 ID |
| email | TEXT | 電子郵件 |
| password | TEXT | 密碼雜湊 |
#### jobs
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | TEXT | Job UUID |
| user_id | INTEGER | 使用者 ID |
| num_files | INTEGER | 檔案數量 |
| date_created | TEXT | 建立時間 |
| 欄位 | 類型 | 說明 |
| ------------ | ------- | --------- |
| id | TEXT | Job UUID |
| user_id | INTEGER | 使用者 ID |
| num_files | INTEGER | 檔案數量 |
| date_created | TEXT | 建立時間 |
#### file_names
| 欄位 | 類型 | 說明 |
|------|------|------|
| id | INTEGER | 檔案 ID |
| job_id | TEXT | Job UUID |
| input_file_name | TEXT | 原始檔名 |
| output_file_name | TEXT | 輸出檔名 |
| status | TEXT | 轉換狀態 |
| 欄位 | 類型 | 說明 |
| ---------------- | ------- | -------- |
| id | INTEGER | 檔案 ID |
| job_id | TEXT | Job UUID |
| input_file_name | TEXT | 原始檔名 |
| output_file_name | TEXT | 輸出檔名 |
| status | TEXT | 轉換狀態 |
---