Spaces:
Running
Running
Commit History
2 days ago
-
fix(pdf-jobs): download端点补Content-Length——66.9MB取件事故随行修正——createReadStream().pipe()默认chunked无总长,客户端拿不到大小无法做下载预算/进度,chunked对部分idle型中间盒也不友好;statSync设置CL,stat失败退回chunked流式语义不变(2026-11-01瑞士PRO 44.2MB payload/66.9MB成品取件被客户端30s旧表误杀事故的配套修正,客户端侧stall-watchdog修复在XWXExporter仓库) Running
ab19cdf -
fix(widget): 142号方案 mermaid定义信封渲染分支+本地vendor内联去CDN(方案D)+replace函数形式修复——背景:XWXExporter v3.2.5起扩展包内不得含远程脚本URL(CWS MV3远程托管代码政策,违规参考ID Blue Argon,2026-11-01 3.2.4被拒——content.bundle.js载荷里cdn.jsdelivr.net/npm/mermaid@10脚本URL被静态扫描判违规,即使扩展自身从不执行、URL仅为渲染端载荷),扩展改为只传定义信封{"_xwxMermaidDef":def},执行环境由本端自建——①新建lib/mermaid-widget-html.js:parseMermaidDefEnvelope互斥判别(完整HTML以<!DOCTYPE或<开头,信封以{开头且可解析出_xwxMermaidDef字符串字段;畸形/缺失/非字符串一律null落回旧路径)+buildMermaidWidgetCode(模板提供#widget-container容器,本代码以%%WIDGET_CODE%%注入其内,getElementById命中容器本身);②renderMermaid信封分支:识别→本地vendor内联构建执行代码,未识别→widgetHtml逐字透传(≤3.2.4旧扩展完整HTML载荷零改动向下兼容,v11→v10降级逻辑不受影响);③方案D去CDN:vendor/mermaid-10.9.1.min.js(3.3MB,与桌面BatchExporter pdf-render/vendor同版本)内联<script>,</script与<!--标准转义(esbuild/webpack内联同款;源文件实测0处</script、1处<!--且均在字符串字面量内)——单widget渲染实测~0.9s(旧CDN路径每次渲染联网拉3.3MB,预算15s),受限网络下不再依赖jsdelivr;④附带修复_renderWidgetPuppeteerImpl的template.replace('%%WIDGET_CODE%%',widgetCode)字符串形式会解释$&/$'/$$替换模式的静默损坏(压缩库与用户'$100'节点标签均可触发),改函数形式replace——本修复对所有widget类型的载荷注入生效,对旧载荷只会修复损坏不可能引入回归;⑤初始化参数与扩展旧执行模板逐字一致(theme default/flowchart htmlLabels/securityLevel loose,v10规避v11 ER themeVariables缺陷),导出位图与3.2.4前同语义。验证:Puppeteer真渲染探针26/26($&毒药样本/反引号/中文节点/sequenceDiagram/pie/信封判别8边界);docker pdf-test/pdf-prod双容器重建后经真实HTTP端到端实测:信封请求3.6s出SVG(viewBox=-8 -8 160 310,含中文节点'下单'),与插件发出的同款请求逐字段一致
ac5fcb4 -
fix(chart): PDF图表渲染器接入官方spec归一化(bZj.b同构移植,备忘录141)——官方渲染主链路spec必过bZj.a(zod VTN)→bZj.b(normalize)再进渲染/View-as-table,本模块此前直读原始spec,与官方四类形态分叉(真机9图均未踩中,属契约缺口而非现行bug,取证temp/test/chatgpt/2026-11-01-chart-fallback/):①series[].valueFormat/valuePrefix/valueSuffix缺省应回退spec顶层同名字段(fmtValue只读系列级);②valueFormat官方缺省compact(bZj:t.valueFormat??compact)——无axes ticks的spec网页y刻度12000→12K(zh locale 1.2万),本模块是Intl默认分组12,000;③series整体缺失/为空时官方用valueKey合成一条渲染,本模块渲染空容器(SPEC.series空档);④xKey/valueKey/nameKey缺省推导(首行首个string值键/首个≠xKey的number键/nameKey=xKey)缺失;修法:normalizeChatGPTSpec(bZj.b逐字移植,+68行)在buildChatGPTChartHtml入口chartType分发之后整包归一化,四类分叉一次性对齐官方,显式字段不受影响(formattedData仍不消费,yAxisMin/xAxisLabel等官方不读字段仍不读);验证:场景A顶层字段合并/B compact缺省+xKey推导/C series合成/D真机spec0显式字段原样(pdf-test容器重建后生产HTTP入口/api/render_charts 9/9出图),10-14的13张保真语料13/13且PNG尺寸与修复前逐字节同量级(显式ticks的图零变化),patchright行为级断言y刻度文本=同进程Intl compact逐一相等(0/2万/4万/6万/8万)且无旧分组形态;桌面副本xwx-backup/app/src-tauri/pdf-render/chatgpt-chart-html.js已逐字节同步(MD5 4cf674bc),插件侧共享模块chatgpt-chart-table.js同一bZj移植(插件仓73dd551)
afe1c54
4 days ago
-
fix(pdf): 作业回环取件解除undici默认300s头超时——大文档渲染成功却被判死根除+RUNNING孤儿看守30分钟(136号方案)
根因(2026-10-30 NotebookLM 469问真机取证): worker回环调用/api/generate_pdf用 globalThis.fetch, 其默认Dispatcher带headersTimeout/bodyTimeout=300000ms。 渲染>300s的文档(16.8MB纯文本/2811页实测264~327s)取件在~301s整抛 TypeError: fetch failed(cause=HeadersTimeoutError/UND_ERR_HEADERS_TIMEOUT), 作业判死→客户端收500→按退避整轮重试再烧一遍完整渲染, 最坏10分钟且可能再败。 pdf-test容器日志三例全卡300s线: 296.61s成功/327s渲染完成但301s判死/264s成功。 135号思考步导出使渲染时长从~120s推过300s线才踩响这条存量地雷。 修复①: createNoTimeoutLoopbackFetch()——npm undici fetch+Agent (headersTimeout:0/bodyTimeout:0)为默认loopbackFetch; cfg.fetchImpl测试注入 语义不变; fetch与Agent同包同引擎, 规避node20内置undici 5.x与npm 7.x跨包 brand校验风险。与server.js既有server.requestTimeout=0(入站方向,408修复) 配套, 覆盖出站回环方向; 渲染预算单一所有权仍是同步端点应用层动态超时 (立方公式封顶60min, Promise.race强制), 传输层不设竞争性超时。 修复②: RUNNING孤儿看守orphanMaxAgeMs默认30分钟(env PDF_JOB_ORPHAN_MAX_AGE_MS): 解除传输超时后'同步端点永不响应'场景失去旧300s的意外自愈——RUNNING不过期+ 同内容重提交按摘要复用=永久卡死。30min=客户端作业总预算20min(插件 PDF_JOB_BUDGET_MS)耗尽后+10min余量, 彼时已无客户端在等, 只做后端内部卫生; 已观测渲染最长5.5min给足5倍余量。判死同时abort取消通道中止回环fetch, execute()尽快落终态释放并发闸槽位; execute晚…7a795b3
7 days ago
-
fix(chart): claude-chart-html 补 _widgetRendered 渲染完成信号(导出耗时 9.5s/张 → 1.4s/张)
渲染端等的是 _widgetRendered(_renderFullHtmlImpl / 桌面 widget_renderer.rs),本渲染器只设了 _widgetReady → 每张 claude_chart 都等满截图超时(后端 8s),同步端点 PDF 逐张白等。animation:false 下 new Chart() 构造返回即画完,构造后直接置位;catch 分支同样放行,立即截错误占位。与 chatgpt-chart-html 同一契约;桌面 pdf-render 副本同步同一改动(xwx-backup c9face8)。2e02419
8 days ago
-
chore(release): 版本号 3.1.2 → 3.2.3(用户指定,与插件 3.2.3 主线对齐;自 125 轮以来 widgets 家族/异步PDF作业等多轮未升版,一次对齐)
c124112 -
chore(make): backup-source.js 支持 BACKUP_LABEL 环境变量——语义化标签(如中文工作总结)替代时间戳命名,未设置时保持 v{version}_{时间戳} 原行为(与 XWXExporter make/backup-source.js 同款)
2a1bff3 -
feat(chart): Claude chart_display_v0 渲染器入库(备忘录125/126/127)——lib/claude-chart-html.js(125/126轮创建但漏未提交,与server.js的renderClaudeChart路由成对入库)+server.js claude_chart case(125)+CD视觉皮肤全套(8色调色板真机仲裁值/官方刻度算法cdYScale/cdTicks/横向判定/柱圆角/页内组装config防JSON.stringify丢函数(126根因))+127轮官方类目slot几何:xwx-cd-slot插件afterLayout按c20f35e63 D()/j()逐字数值化barThickness(pitch=轴长/类目数,slot=min(20n+2(n-1),pitch-inset),lane=(slot-2(n-1))/n),修复Q502类目间隔被categoryPercentage:1占满(用户实测图1);烟测9/9(柱宽20±0.5px/组间隙≥8px/line不受污染),容器端到端出图,真机PDF p6与网页同构。space/main未push(生产需人工;桌面pdf-render副本已同步md5 ae539ef5)
515ca75
19 days ago
-
feat(pdf): 新增异步作业端点 /api/pdf_jobs(提交+轮询+取件),同步端点一字节未改
起因:pro 用户 NotebookLM 导 PDF 报 ERROR(MD/JSON 正常)。PostHog 与 Space 运行日志 对账:同一份 7.78MB/354 消息文档,后端 8 次全部渲染成功(66.2–70.8s,出参 12.68MB), 客户端两次独立尝试都在发出请求后 60.28s/60.57s 抛 TypeError: Failed to fetch —— 后端还在 算、客户端已死约 10 秒,8 次重试把 cpu-basic 2 vCPU 全白烧。插件侧已实测排除(SW 可等 75s 静默、真插件跑到后端 127.7s 仍成功),且真链路实测 176.36s 静默 + 11.01MB 响应可正常 送达 ⇒ 病根不是"某处一定 60 秒断",而是**同步模式让一次长静默交互把命交给链路上任意一个 idle 型中间盒**(该用户具体凶手仍未定性)。 改动: - lib/pdf-jobs.js(新):作业层。契约对齐 Azure Asynchronous Request-Reply / Google LRO / RFC 9110:POST 202+Location+Retry-After;GET /:id 200 状态体(status/phase/createdAt/ lastUpdatedAt/error),完成用 **303 See Other**(规范点名不用 302:302 不保证改方法, 客户端可能重放 POST 从而重复渲染);GET /:id/download 流式(首字节即时);DELETE 取消。 幂等键=请求体 SHA-256 ⇒ 同内容重复提交复用既有作业,**结构性消灭白烧 CPU**(这是本案 实际损失最大的一条)。并发闸默认 2 并带队列/429 背压——排队时客户端只在轮询,不占长连接, 这是同步模式做不到的。结果落 os.tmpdir()/xwx-pdf-jobs,终态一律保留 ttlMs(含 FAILED, 失败原因必须仍可被轮询读到并分类),TTL 30 分钟 + 总量上限 LRU 淘汰。 - server.js:仅 require + register 两处 12 行。**/api/generate_pdf 一行未改**——它同时服务 全部已安装插件版本(近 30 天活跃设备…265de41
20 days ago
-
feat(chart): GPT-6 服务端组件 StockChart 渲染器——插件 chatgpt-dil 整包透传的股票行情出图(备忘录120)——①插件侧把 StockChart(服务端组件,componentResults[rid].state 21参数)按官方组件源码合成同构 DIL 树(头部/档位条/指标表走既有渲染层), <chart> 的 data/series/xAxis/yAxis 逐字透传到本构建器, payload 带 __xwxKind:'stock-chart' 标记; ②本文件内 buildChatGPTChartHtml 入口最前分流到新增 buildChatGPTStockChartHtml(必须在旧位置签名兼容之前判, 否则无 chartType 的 payload 被 legacy 归一化误吞—冒烟实证) → server.js 与桌面 Rust 调用点零改动, 桌面 pdf-render/chatgpt-chart-html.js 由 build-pdf-render-assets.mjs 逐字节同步(MD5 150de6f4); ③渲染契约按三重取证: Recharts 3.10.1 AreaChart, series[].color 语义色随涨跌方向(CSSOM 实测 --green-500:#00a240/--red-500:#e02e2a), Area strokeWidth2 + fill 线性渐变(stopOpacity 0.45→0) + fillOpacity0.6, xAxis ticks+labels 映射+preserveStartEnd+tickMargin8+padding.right10, yAxis 右轴 width40+domain/ticks+axisLine false, 水平虚线网格 #ccc '3 3', dot/activeDot false, 桌面档高340; ④验证: verify-stock-render.mjs 真机 payload(a8a911ef 的 5D 档72点) puppeteer 9/9 断言(线色/渐变两档/fill-opacity/网格5条/y刻度220-240/x刻度来自labels映射), pdf-test 容器重建后 /api/render_charts 出图; 端到端 29 页 PDF 逐页比对股票卡与网页一致. 生产 space/main 未推送(用户指示:会影响生产环境; 待推送后线上 StockChart 才出图, 未推期间该 payload 走旧入口返回 null 由上层回退 MD 表格)
d49b1fe -
fix(chart): GPT-6 charts_widget_v2 饼图契约补全+引擎对齐官方Recharts v3(备忘录119重写)——①根因: server.js/桌面Rust按位置白名单挑9字段传构建器, 而官方zod schema是.loose()透传未知键, 导致官方消费的 layout(水平条形图)/xAxisScale(数值x轴) 被静默丢弃 → 改为整包传 spec buildChatGPTChartHtml(chartData), 位置白名单这一层结构性消失(保留旧9参归一化供Rust未重编窗口期); ②饼图11参数按官方44829 qOl-A/AXa逐字补全: 恒环形 innerRadius40%/outerRadius78%/startAngle90/endAngle-270/paddingAngle.5/Cell stroke var(--color-surface)+strokeWidth2, showValueLabels与showLabelLines默认false故不画数值标签与引线(旧实现无条件画=截图里多出"搜索引擎4.2K"一圈), colorCount=data.length逐扇区取6色盘, nameKey作xAxis且nameKey=__sliceLabel; ③图例顺序根因=引擎差异: v3 Legend.defaultProps.itemSorter='value'按标签码点升序, v2无此行为 → 换 recharts@3.10.1 UMD(实测peer支持React18;首版"v3不可用"只对SSR成立), 由引擎产出而非手工sort(3.0.0不复现,勿降); ④补首版未取到的726342 IMu柱图档位表: gapPx=卡片容器宽>=768?12:8再按dataLen收敛(>=24→3/>=16→6), barRadius按 containerSize/dataLen/有效系列数*0.65 落档56→8/36→6/16→4/0→2, maxBarSize除「2行×2系列」外恒120(水平48,条件方向易读反); ⑤移除官方从不消费的 formattedData/yAxisMin/yAxisMax/xAxisLabel/axes[].label 路径(官方不画轴标题,x刻度标签来自data行而非axes,仅认恰好一条dimension=y), bar的x刻度改官方foreignObject+div盒, line/scatter保留引擎默认text刻度(dy 2/3em), minTickGap 10, 轴宽=ceil(实测标签)+4(旧Y_AXIS_PAD6系在已漂移的旧捕获上标定,实测9/10命中±1px); ⑥验证: temp/test/chatgpt/2026-10-14-chart-pie/ 三方对照13张真实图官方DOM oracle逐值diff — 现网34.2% → 移植层+v2 94.3%(掉分全是饼图图例序) → 采用层+v3 95.8%, 3张饼图25/25 25/25 23/25, 柱图44/44与39/39, 首版verify-r1的34项bar契约无一复发; pdf-test(17861)重建后走生产HTTP入口 /api/render_charts 14/14出图, 非官方4类chartType返回null交上层回退表格. 备份 backend-service_v3.1.2_2026-10-14T02-50-03(159文件). 生产 space/main 未推送(用户指示:会影响生产环境)
3b9619e
21 days ago
-
fix(chart): GPT-6 charts_widget_v2 PDF渲染重写对齐官方网页契约(备忘录119)——①lib/chatgpt-chart-html.js按官方v2契约重写: 渐变圆角柱(stopOpacity1→0.9+radius8+barCategoryGap自适应3/6/8+maxBarSize120)/仅横向#ccc"3 3"网格/12px rgb(93,93,93)刻度轴无边线/图例=series>1才显示/header固定块min-height68px+line-clamp2/footer固定; ②server.js meta整包下传(title/description单一来源修双写重复)+legacy字符串签名归一; ③Recharts v2.12.7两引擎坑实测修复: YAxis width:'auto'整图不渲染→隐藏span逐标签offsetWidth量宽+TICK_MARGIN4+Y_AXIS_PAD6(官方81=71+4+6), 默认tick Text按16px估宽致长标签tspan折行丢空格→双轴自定义<text>组件; ④验证: verify-r1 34项DOM契约全过+pdf-test容器(17861)E2E渲染比对官方常量一致(2026-10-13)。生产space/main未推送(用户指示:会影响生产环境)
b689996
22 days ago
-
feat(dil): 图标占位符后端内联 lucide SVG(用户决策B,2026-10-12)——客户端只输出 data-dil-icon 占位符不带图标集(lucide整包480KB/gzip130KB,官方图标在按需chunk无法提取子集);后端按需读取,单次PDF只付实际用到的图标(真机15次/10个);server.js 注入点放在所有HTML变换之后、setContent之前(pdf-test实测放Shiki之前会被后续改写链路破坏成不可见);缺失图标降级保留占位符不中断PDF;新增依赖 lucide-static@1.55.0(与官方bundle版本一致);API契约零改动
7ffc5c1
30 days ago
-
chore(release): bump version to 3.1.2(与插件版本同步)——PDF体积根因修复(38f9bb7)随版,待手动push至HF Space部署
572a46d -
fix(pdf): tagged PDF显式关闭+容器CJK字体换静态TrueType——PDF体积3倍竞品根因修复(2026-10-04)——①server.js page.pdf显式tagged:false+outline:false:Puppeteer24 parsePDFOptions把tagged默认翻true(node_modules/puppeteer-core/common/util.js),每文字运行产StructElem(436轮NotebookLM实测63,171个5.65MB,xref 79,817);②Dockerfile弃装fonts-noto-cjk(CFF-in-OTC无法子集→全部汉字逐页Type3,745字典2.4MB CharProcs),改构建期从google/fonts(commit固定a85815a)下载SC/TC/JP/KR/HK变量字体+fonttools实例化400/700静态TrueType装系统(--update-name-table防family名带Thin致fontconfig miss;--no-install-recommends下需显式ca-certificates+fontconfig;fonttools走python3 -m入口);emoji字体保留(位图Type3残余0.02MB,视觉优先);真实容器端到端:同会话HTML POST实测26.66MB→8.69MB(-67%)低于竞品9.41MB,xref→3,182,Type3→45,图片5.19MB→0.69MB与竞品同量级,文本保真98.15%字符级一致,嵌入字体全TTF子集;本机pdf-test(17861)/pdf-prod(7860)已重建验证字节级一致;12平台API契约零改动,新旧插件全兼容;证据链XWXExporter/temp/test/notebooklm/2026-10-04/与解决方案API/111;HF Space待用户手动push部署
38f9bb7
-
refactor(chart): 提取buildChatGPTChartHtml为共享模块lib/chatgpt-chart-html.js(课题2,备忘录34)——server.js类方法改为转发,函数体逐字节一致仅类方法→独立函数;桌面APP经make/build-pdf-render-assets.mjs逐字节同步同一文件(漂移校验报错),chatgpt_chart渲染两端单一事实源
6800ea9
-
fix(server): 413 entity.too.large干净JSON响应+content-length盲区观测(PostHog 09-09韩国413=HTML错误页暴露) + requestTimeout=0根除Grok慢上传408(09-06,渲染超时已有应用层动态上限兜底,不动server.timeout防大文件渲染回退) + Claude Imagine widget无前缀设计令牌补齐(SVG var(--text-warning)等消失根因)
4574c25
-
feat(pdf): 页脚品牌文案支持插件传入 brandText(唯一事实来源迁至插件 watermark.js,未传回退默认值向后兼容)+ 品牌名统一 XWX Exporter,bump v3.0.0
2c58405
-
fix(widget): DOCX图表fallback成数据表格根因修复 — widget渲染浏览器池+CDP有限超时+渲染硬超时+队列超时取消+BrowserPool补位bug+body-parser JSON兜底, bump v2.1.11
24a2ddf -
Revert "fix(pdf): acceptInsecureCerts 加载过期证书图片 + domcontentloaded 防外部图片挂起阻塞"
This reverts commit 144b733936adceb8a2b407b95d01a626ce046af9.f888aff -
fix(pdf): acceptInsecureCerts 加载过期证书图片 + domcontentloaded 防外部图片挂起阻塞
- acceptInsecureCerts: true (PDF + widget 浏览器) — 第三方图片 CDN 证书过期时仍能渲染 - waitUntil 'load'→'domcontentloaded':单张外部图片挂起时不再阻塞整个 PDF - waitForNetworkIdle 有界 15s + 非致命:慢外部资源不中断渲染 - 外部图片 per-image 15s 兜底等待,base64 图片同步解码跳过 - 集成 browser-pool:复用 Chromium 浏览器,widget 单例浏览器防竞态 - bump 版本 2.0.7→2.1.11144b733
-
refactor: 遥测日志改为 metadata 透传 + 图表渲染统一 Puppeteer + Debian Bookworm
- server.js: 遥测字段重构为 metadata 对象,后端不做解析,原样透传日志 - server.js: 移除 Chart.js 服务端渲染,图表统一使用 Puppeteer 渲染 - widget-render.html: 修复 SVG text 继承 stroke 导致字体加粗问题,更新 CSS 变量 - Dockerfile: Debian Bullseye → Bookworm (Chromium 149, 支持 SVG context-stroke) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e831a9b
-
fix: update server.js with latest chart rendering improvements
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3c5f549 -
fix: add .dockerignore to prevent Windows node_modules from overwriting Linux builds
The Dockerfile uses COPY . . which copies the entire directory including node_modules into the container. Without .dockerignore, Windows-compiled native modules (like canvas.node with PE/MZ header) overwrite the correctly installed Linux versions (ELF header), causing all chart rendering to fail with "invalid ELF header". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>efa862e
-
feat: remove PDF size hard rejection, allow large files to proceed with warning
Replace 413 hard rejection with warning log that continues processing, matching the frontend's sizeWarning approach. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6dd390f
-
feat: add messageCount parameter to PDF generation logging
Logs total message count (user + AI) sent from plugin for telemetry. Backward compatible with old plugin versions that don't send this field. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b4075c9
-
chore: increase HTML size limit from 8MB to 10MB for backend consistency
- Bump MAX_TEXT_HTML_SIZE_MB from 8 to 10 to match frontend - Add benchmark and reproduction test scripts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b89c431
-
fix: use textOnlySizeMB for PDF render time estimation
base64 images don't increase Chromium PDF engine complexity. The benchmark formula was calibrated on text-only HTML, so using total HTML size (including base64) severely overestimates render time. - Accept textOnlySizeMB from frontend (v2.0.5+) - Fallback to total HTML size for backward compatibility with old plugins - Use effectiveSizeMB (text-only) for timeout calculation, size limit check, and large-file warning threshold82942de
-
feat: PDF backend enhancements — 8 MB HTML size limit, dynamic timeout with cubic formula, protocolTimeout=0, temp file method for large HTML
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f44ea82
-
fix: enhance chart extraction - multi-chart support, ES6 shorthand, and brace-balanced parsing
- Detect multi-chart widgets and route to Puppeteer renderer - Replace fragile regex with balanced-brace matching for Chart config extraction - Support Chart.js aliases (C, custom constructors) beyond 'Chart' - Use balanced bracket matching for variable declarations instead of simple regex - Filter preamble to only include referenced variables (avoid scope pollution) - Detect and provide defaults for ES6 shorthand function parameters (e.g. type='pie') - Add extensive debug logging for chart parsing failures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d842f0a
-
feat: add widget renderer (chart.js, mermaid) and bump to v2.0.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>44a8902
-
fix: change htmlToUse from const to let for future reassignment compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e550365
-
feat: update server logic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>fb94a6b
-
fix: restore data-language attribute in Shiki-highlighted code blocks
Shiki's codeToHtml() does not preserve the data-language attribute from the original <pre> tag. The CSS language label depends on pre[data-language]::before { content: attr(data-language); }, so the label disappears after Shiki highlighting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f8322a5 -
v1.4.6 代码块高亮最终方案 - Shiki 后端预高亮
- 添加 shiki 依赖,启动时初始化 103 种语言高亮 - 实现三路语法高亮选择逻辑: 1. codeTheme 有值 → Shiki 预高亮(新插件) 2. codeTheme 为空 + HTML 含 highlight.js CDN → legacy 路径(旧插件) 3. codeTheme 为空 + 无 CDN → Shiki 默认 github-light(兜底) - 支持三种 codeTheme 映射: github→github-light, monokai→monokai, oneDark→one-dark-pro - 向后兼容:旧版本插件不受影响 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e14f86d
-
fix: add dynamic timeout for PDF generation to prevent timeout on large pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cd363bd
-
Add dashed separators around API request log line
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d106d98 -
v1.4.4 - Add platform, export count, language and per-format counts to backend log
- Show AI platform name, total export count, user language in first log line - Show per-format export counts (PDF, MD, TXT, DOCX, JSON, Clipboard) - ANSI color highlighting for each field - Backward compatible with old plugin versions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e6f0a87
-
fix: increase base timeout from 30s to 60s for PDF generation
Prevents false timeout errors on text-only exports with external resource references (fonts, CDN, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6213d08
-
fix: dynamic timeout for Puppeteer PDF generation
Replace fixed timeouts with dynamic calculation based on image count and total image size to prevent TimeoutError on large PDF exports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>78a0140
-
fix: improve PDF image rendering - remove lazy loading, handle base64 images, add screenshot workaround
7ff2703
-
fix: optimize PDF generation - use headless shell mode, extend image timeout, add network idle wait
Major improvements: 1. Switch headless mode from 'new' to 'shell' - fixes 8x PDF file size inflation (1.27MB images now produce ~1.5MB PDF instead of 9.83MB) 2. Increase image loading timeout from 2s to 8s - ensures 100% base64 image load success 3. Add waitForNetworkIdle after setContent - ensures all resources stabilize before PDF generation Added comprehensive documentation of the three key optimizations.d1f4de0 -
feat: add environment-aware logging and dual-environment support
00d6248
-
Rollback to Puppeteer 22.x - v24.x has critical PDF encoding bug
- Puppeteer 24.x generates corrupted 240MB PDFs from 1.5MB images - Rollback to stable v22.0.0 - Remove v24.x specific configurations93bf046 -
Fix Puppeteer 24.x Chrome launch in Docker
- Add PUPPETEER_SKIP_DOWNLOAD and PUPPETEER_EXECUTABLE_PATH env vars - Simplify browser launch logic to use system Chromium - Ensure compatibility with Docker deployment35f3546 -
Upgrade Puppeteer to v24.x for better PDF generation
- Upgrade puppeteer from 22.0.0 to 24.x (latest) - Update browser launch configuration for Puppeteer 24.x compatibility - Add auto-detection for system Chrome vs bundled Chrome - Update documentation with changelog8dea6b9
-
Optimize PDF generation with dynamic wait times based on image stats
- Accept imageCount and totalImageSizeMB from frontend - Calculate dynamic wait times: - Base: 500ms (no images) to 400ms per image (max 6s) - Size factor: 100ms per MB (max 3s) - Total capped at 8s max - Skip unnecessary scroll and wait when no images - Reduces processing time for text-only exportsf13b991 -
Fix: Replace deprecated page.waitForTimeout with delay helper
- page.waitForTimeout() was removed in Puppeteer v19+ - Use custom delay() function with setTimeout instead - Fixes 500 error when generating PDFsea21983 -
压力测试
89c8cea
-
feat: support showWatermark parameter for dynamic footer
ab40ae2