feat(export): separate resume/cover-letter downloads, redesign dialog, add Markdown export (#3217)

* feat(export): separate resume/cover-letter downloads, redesign dialog, add Markdown

Let people export the resume and cover letter as distinct documents, and add a
Markdown format alongside PDF / DOCX / JSON (handy for AI agents).

- Server/API: scope PDF generation and download URLs to a resume/cover-letter target.
- Export domain: getResumeExportData + resumeHasCoverLetter in @reactive-resume/resume.
- Redesign the download dialog: one global "What to export" scope toggle (Tabs) plus
  flattened per-format rows, reusing existing UI components and design language.
- Add Markdown export (@reactive-resume/resume/markdown) with a small tiptap-HTML converter.
- Fix blank section headings in DOCX and Markdown by injecting the locale-aware
  section-title resolver (titles are stored empty and resolved at render time).
- Locale catalogs updated for the new strings.

* test(e2e): open the download dialog before exporting JSON

The JSON export moved into the redesigned download dialog, so the spec now opens
the dialog from the Export sidebar section before clicking "Download JSON".
This commit is contained in:
Amruth Pillai
2026-07-05 14:40:49 +02:00
committed by GitHub
parent 6e7fc68068
commit 20c803e934
76 changed files with 2919 additions and 1773 deletions
+36 -29
View File
@@ -507,6 +507,10 @@ msgstr "提供多款精美模板供你选择,并且还会不断增加。"
msgid "Bengali"
msgstr "孟加拉语"
#: src/features/resume/export/download-dialog.tsx
msgid "Best for applications, sharing, and printing."
msgstr ""
#: src/routes/agent/-components/new-thread-setup.tsx
msgid "Blank draft"
msgstr "空白草稿"
@@ -655,6 +659,10 @@ msgstr "选择一份简历"
msgid "Choose an existing conversation from the sidebar, or start a new draft-focused thread."
msgstr "从侧边栏选择现有对话,或发起新的以草稿为中心的讨论串。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
msgid "Choose PDF, DOCX, or JSON. Export your resume and cover letter separately when available."
msgstr ""
#: src/components/level/combobox.tsx
msgid "Circle"
msgstr "圆形"
@@ -819,6 +827,10 @@ msgstr "连接验证失败。请检查 API 密钥、模型和基本 URL。"
msgid "Couldn't save"
msgstr "无法保存"
#: src/features/resume/export/download-dialog.tsx
msgid "Cover letter"
msgstr ""
#. Fallback title for a custom cover letter item in resume builder when recipient is empty
#. Fallback title for a custom cover letter item in resume builder when recipient is unavailable
#: src/dialogs/resume/sections/custom.tsx
@@ -1149,7 +1161,11 @@ msgid "Donate to Reactive Resume"
msgstr "为 Reactive Resume 捐款"
#. Action button to download two-factor backup codes as a text file
#. Primary action in the builder header to open resume download options
#: src/dialogs/auth/enable-two-factor.tsx
#: src/features/resume/export/download-dialog.tsx
#: src/routes/builder/$resumeId/-components/header.tsx
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
msgid "Download"
msgstr "下载"
@@ -1157,30 +1173,13 @@ msgstr "下载"
msgid "Download a copy of all your data, including your profile and every resume, as a JSON file."
msgstr "下载包含您的个人资料和所有简历在内的所有数据的副本,格式为 JSON 文件。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
msgid "Download a copy of your resume as a Word document. Use this file to further customize your resume in Microsoft Word or Google Docs."
msgstr "以 Word 文档形式下载简历副本。使用此文件在 Microsoft Word 或 Google Docs 中进一步定制您的简历。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
msgid "Download a copy of your resume in JSON format. Use this file for backup or to import your resume into other applications, including AI assistants."
msgstr "以 JSON 格式下载一份你的简历副本。你可以将此文件用于备份,或导入到包括 AI 助手在内的其他应用程序中。"
#: src/routes/builder/$resumeId/-sidebar/right/sections/export.tsx
msgid "Download a copy of your resume in PDF format. Use this file for printing or to easily share your resume with recruiters."
msgstr "以 PDF 格式下载一份你的简历副本。你可以用它来打印,或轻松分享给招聘人员。"
#. Primary action in the builder header to open resume download options
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Download DOCX"
msgstr "下载 DOCX"
msgid "Download options"
msgstr ""
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Download JSON"
msgstr "下载 JSON"
#. Primary action in the builder header to download the resume as a PDF
#: src/features/resume/public/public-resume.tsx
#: src/routes/agent/$threadId.tsx
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Download PDF"
msgstr "下载为 PDF 文档"
@@ -1258,6 +1257,10 @@ msgstr "编辑详情"
msgid "Edit keyword"
msgstr "编辑关键字"
#: src/features/resume/export/download-dialog.tsx
msgid "Editable in Word, Google Docs, and Pages."
msgstr ""
#: src/routes/builder/$resumeId/-sidebar/left/index.tsx
msgid "Editing is disabled until you unlock it."
msgstr "编辑功能目前处于禁用状态,需解锁后方可编辑。"
@@ -1397,6 +1400,10 @@ msgstr "导出"
msgid "Export my data"
msgstr "导出我的数据"
#: src/features/resume/export/download-dialog.tsx
msgid "Export your resume or cover letter in the format you need."
msgstr ""
#: src/routes/_home/-sections/features.tsx
msgid "Export your resume to PDF instantly, without any waiting or delays."
msgstr "立即将简历导出为PDF格式,无需等待或延迟。"
@@ -1653,6 +1660,10 @@ msgstr "自由形式"
msgid "French"
msgstr "法语"
#: src/features/resume/export/download-dialog.tsx
msgid "Full resume data for backup or import."
msgstr ""
#. Layout editor toggle label that makes a page single-column
#: src/routes/builder/$resumeId/-sidebar/right/sections/layout/pages.tsx
msgid "Full Width"
@@ -2285,10 +2296,6 @@ msgstr "缺少工作简历"
msgid "Model"
msgstr "模型"
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "More download options"
msgstr "更多下载选项"
#: src/routes/builder/$resumeId/-sidebar/right/sections/layout/pages.tsx
msgid "Move section to another column or page"
msgstr "将本节内容移至另一列或页面"
@@ -2636,6 +2643,10 @@ msgstr "选择一个图标"
msgid "Picture"
msgstr "图片"
#: src/features/resume/export/download-dialog.tsx
msgid "Plain text, ideal for AI tools and quick edits."
msgstr ""
#: src/features/auth/pages/reset-password.tsx
msgid "Please enter a new password for your account"
msgstr "请为你的账号输入一个新密码"
@@ -2718,10 +2729,6 @@ msgstr "预览"
msgid "Primary Color"
msgstr "主颜色"
#: src/routes/builder/$resumeId/-components/header.tsx
msgid "Print"
msgstr "打印"
#: src/dialogs/resume/sections/skill.tsx
msgid "Proficiency"
msgstr "熟练度"
@@ -2938,6 +2945,7 @@ msgstr "恢复到此补丁之前的状态?这将回滚此补丁以及其后应
msgid "Restore this version?"
msgstr "恢复此版本?"
#: src/features/resume/export/download-dialog.tsx
#: src/routes/agent/$threadId.tsx
msgid "Resume"
msgstr "恢复"
@@ -4308,4 +4316,3 @@ msgstr "缩小"
#: src/libs/locale.ts
msgid "Zulu"
msgstr "祖鲁语"