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 檢查通過
This commit is contained in:
Your Name 2026-01-22 17:41:12 +08:00
parent 6d4ed58637
commit 4ca92e3a22
5 changed files with 852 additions and 19 deletions

View file

@ -124,8 +124,8 @@ export const user = new Elysia()
</header>
<form method="post" action={`${WEBROOT}/register`} class="p-4">
<fieldset class="mb-4 flex flex-col gap-4">
<label class="flex flex-col gap-1" safe>
{t("auth", "email")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "email")}</span>
<input
type="email"
name="email"
@ -135,8 +135,8 @@ export const user = new Elysia()
required
/>
</label>
<label class="flex flex-col gap-1" safe>
{t("auth", "password")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "password")}</span>
<input
type="password"
name="password"
@ -191,8 +191,8 @@ export const user = new Elysia()
<article class="article">
<form method="post" class="flex flex-col gap-4">
<fieldset class="mb-4 flex flex-col gap-4">
<label class="flex flex-col gap-1" safe>
{t("auth", "email")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "email")}</span>
<input
type="email"
name="email"
@ -202,8 +202,8 @@ export const user = new Elysia()
required
/>
</label>
<label class="flex flex-col gap-1" safe>
{t("auth", "password")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "password")}</span>
<input
type="password"
name="password"
@ -313,8 +313,8 @@ export const user = new Elysia()
<article class="article">
<form method="post" class="flex flex-col gap-4">
<fieldset class="mb-4 flex flex-col gap-4">
<label class="flex flex-col gap-1" safe>
{t("auth", "email")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "email")}</span>
<input
type="email"
name="email"
@ -324,8 +324,8 @@ export const user = new Elysia()
required
/>
</label>
<label class="flex flex-col gap-1" safe>
{t("auth", "password")}
<label class="flex flex-col gap-1">
<span safe>{t("auth", "password")}</span>
<input
type="password"
name="password"