fix: preserve exports on close and support themed PDF without export quotas
This commit is contained in:
@@ -156,3 +156,14 @@ PDF、DOCX 保持浅色打印样式;选择其他主题时返回明确 warning
|
||||
警告框识别与工作区一致:标记与标题之间可不留空格,类型允许数字、下划线和连字符;自定义类型回退 note 配色并保留自定义标题,省略标题时使用类型名称首字母大写。
|
||||
|
||||
警告框、普通引用、列表及交叉嵌套中的 Markdown 表格均启用容器内部解析,HTML 输出 table、PDF 输出 Table、DOCX 输出原生表格。测试逐一检查单元格内容和产物结构。每个 HTML 警告框独立初始化颜色变量,避免 NOTE 等类型继承外层 WARNING 的颜色;已在五套内置导出主题中检查嵌套配色及表格显示。
|
||||
|
||||
|
||||
### PDF 主题与资源策略更新(2026-09-07)
|
||||
|
||||
当前 PDF 行为以此节为准,覆盖上文早期 PR 的浅色打印和资源预算说明。
|
||||
|
||||
PDF 使用导出按钮点击时的主题配色快照,支持六种内置/社区主题与自定义主题的七项颜色。页背景、正文、引用、代码块、表格、链接、语义提示块、Mermaid、公式与函数图均参与主题适配;公式使用透明底再合成主题表面色,深色曲线使用较亮的默认色。标题随下一块分页,代码保留背景与边框。PDF 不执行 CSS 装饰或主题脚本。
|
||||
|
||||
PDF 取消导出源/产物大小限制、Mermaid 数量和像素预算、请求资源数量和字节预算、Vault 图片大小/累计预算、MathText 长度/深度预算、函数图数量/表达式数量及 AST 预算。HTML/DOCX、在线预览仍使用原有限制;有效图片、Vault 路径、表达式语法校验和数值求解退出条件仍生效。无限制指移除应用导出配额,实际文件规模仍受浏览器、解析器和可用内存约束。
|
||||
|
||||
关闭窗口仅结束 UI 生命周期,导出流程继续;主动取消仍取消提交中的后台任务。回归测试见 `ExportDialog.spec.ts`、`exportService.spec.ts`、`test_pdf_theme_resources.py`。
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# PDF 主题与资源限制修复验收
|
||||
|
||||
工作目录:`G:/OSProject/NotesAgent`;分支:`feat/phase2-completion`。
|
||||
|
||||
## 完成内容
|
||||
|
||||
1. 修复关闭窗口误取消提交中的导出任务,保留主动取消。
|
||||
2. PDF 移除前后端导出数量、大小、图片像素及累计资源配额,详见接口契约。
|
||||
3. PDF 读取点击导出时的主题颜色快照,覆盖六套主题和自定义调色板,移除强制浅色打印提示。
|
||||
4. 公式透明底、Mermaid 主题变量、矢量函数图、代码背景与边框、表格、提示块和页面背景都使用对应主题颜色。
|
||||
|
||||
## 验证
|
||||
|
||||
- 全量后端:879 项通过,1 条既有 Starlette/httpx 弃用警告。
|
||||
- 全量前端:82 文件、448 项通过。
|
||||
- 分页/代码背景最终调整后:相关后端 108 项通过。
|
||||
- 前端生产构建通过,仍有既有大分包提示。
|
||||
- 超旧限制回归:17 个 Mermaid、65 个文档资源、单图超过 400 万像素、超过旧源/产物阈值、17 条函数表达式与20个函数图。
|
||||
- 真实前端 Mermaid 栅格化 + 后端导出流水线生成 light/dark/sepia/paper-moments/ocean-blue/midnight-purple 六份 PDF;Poppler 渲染并检查全部12页,未出现白底公式、不可读深色文字、图表裁切或孤立章节标题。
|
||||
- 验证数据与截图:本机 `.local-plans/pdf-theme/`;全部接口拦截为测试数据,未访问真实模型或用户笔记。
|
||||
|
||||
本次未改动用户已有的三份笔记修改。主题适配使用颜色与语义样式,不将任意主题 CSS/脚本直接用于 PDF。
|
||||
@@ -0,0 +1,104 @@
|
||||
[
|
||||
{
|
||||
"theme": "light",
|
||||
"pages": 2,
|
||||
"bytes": 67245,
|
||||
"sha256": "5b6efed909df971f455253958ceadce47a7bd198b52ca1a1c755d9d25c51dc05",
|
||||
"palette": {
|
||||
"page": "#ffffff",
|
||||
"surface": "#ffffff",
|
||||
"text": "#1f2328",
|
||||
"muted": "#656d76",
|
||||
"code": "#f7f8fa",
|
||||
"border": "#e4e7eb",
|
||||
"accent": "#5b67f1"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
},
|
||||
{
|
||||
"theme": "dark",
|
||||
"pages": 2,
|
||||
"bytes": 66788,
|
||||
"sha256": "b09da4dc97246b7444f17d2b5756dea6dda004981cbcbd360bc2de3d26bd00cf",
|
||||
"palette": {
|
||||
"page": "#0d1117",
|
||||
"surface": "#161b22",
|
||||
"text": "#e6edf3",
|
||||
"muted": "#8b949e",
|
||||
"code": "#161b22",
|
||||
"border": "#30363d",
|
||||
"accent": "#7d8bff"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
},
|
||||
{
|
||||
"theme": "sepia",
|
||||
"pages": 2,
|
||||
"bytes": 66836,
|
||||
"sha256": "abc329f9691ba46d8ddd25e4b3621b63fc4cc8baba8823800c47d68feb910e0c",
|
||||
"palette": {
|
||||
"page": "#fbf3df",
|
||||
"surface": "#fff8e8",
|
||||
"text": "#40372b",
|
||||
"muted": "#746653",
|
||||
"code": "#f4e8ca",
|
||||
"border": "#ddcfad",
|
||||
"accent": "#8a5b32"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
},
|
||||
{
|
||||
"theme": "paper-moments",
|
||||
"pages": 2,
|
||||
"bytes": 66808,
|
||||
"sha256": "e1929fbec0486b59abcc808fab557f4103ec102ad70e6fb9f0b26f84414c0fe4",
|
||||
"palette": {
|
||||
"page": "#faf7ee",
|
||||
"surface": "#fffdf5",
|
||||
"text": "#493f35",
|
||||
"muted": "#6e6053",
|
||||
"code": "#f3eee3",
|
||||
"border": "#b5a693",
|
||||
"accent": "#875343"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
},
|
||||
{
|
||||
"theme": "ocean-blue",
|
||||
"pages": 2,
|
||||
"bytes": 67260,
|
||||
"sha256": "1e567daeb2ba8bcb5c13af465f174865a3662ade444c58cd09af66ae99233346",
|
||||
"palette": {
|
||||
"page": "#ffffff",
|
||||
"surface": "#ffffff",
|
||||
"text": "#1e293b",
|
||||
"muted": "#64748b",
|
||||
"code": "#f8fafc",
|
||||
"border": "#e2e8f0",
|
||||
"accent": "#0077b6"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
},
|
||||
{
|
||||
"theme": "midnight-purple",
|
||||
"pages": 2,
|
||||
"bytes": 66788,
|
||||
"sha256": "fd5efcedec0d7f4892fb987e0e4ba9052aa88b7361159cbb2ca3b7e00dde495c",
|
||||
"palette": {
|
||||
"page": "#1a1b26",
|
||||
"surface": "#24283b",
|
||||
"text": "#c0caf5",
|
||||
"muted": "#9aa5ce",
|
||||
"code": "#24283b",
|
||||
"border": "#3b3f5c",
|
||||
"accent": "#9d4edd"
|
||||
},
|
||||
"warnings": [],
|
||||
"visual_review": "passed"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user