fix(runtime): polyfill PDF.js Map APIs for older WebViews
This commit is contained in:
@@ -1,5 +1,22 @@
|
||||
# DSH Runtime Release
|
||||
|
||||
## 未发布:Android WebView 文档预览兼容补丁
|
||||
|
||||
针对 Chrome/WebView 143 缺少 Map.getOrInsertComputed 的错误,构建时为 DSH 0.2.1-rc.2 文档预览组件的 PDF.js 6.3.289 主线程和内嵌 Worker 同时加入 Map.prototype.getOrInsertComputed / getOrInsert 兼容实现。仅在方法缺失时安装,不替换已有原生实现。补丁检查宿主、插件版本及 Worker 特征;版本不匹配或重复应用时构建失败。无需在 Flutter 加载完成回调中注入,也不修改用户 profile。
|
||||
|
||||
验证:本地 node --test image/*.test.mjs 为 50 通过、1 跳过;跳过的真实资源检查在现有 dsh-web:runtime-7.9-amd64 镜像中单独运行,专项 6 项全部通过。覆盖缺失 API 的错误复现、Promise 缓存、空值、异常、重入、独立 Worker 及真实 bundle/worker 语法检查,并在禁网临时容器内执行安装脚本成功。未完成 Android 143 真机预览、完整镜像重建或线上部署,不代表所有新版 PDF.js API 都已兼容。
|
||||
|
||||
重新构建并部署含补丁的 runtime 后才会生效;部署后重新加载 App 内页面,若仍命中旧脚本需清理 WebView 缓存。发布前按下文流程分配新的 release_id;本次未修改发布清单或推送发布。
|
||||
|
||||
真实资源专项测试(仓库根目录):
|
||||
|
||||
~~~sh
|
||||
docker run --rm --network none \
|
||||
--mount type=bind,src="$PWD/image",dst=/test,readonly \
|
||||
-e DSH_PDF_CLIENT=/usr/local/lib/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.pdf.js \
|
||||
--entrypoint node dsh-web:runtime-7.9-amd64 --test /test/webview-compat.test.mjs
|
||||
~~~
|
||||
|
||||
## runtime-7.9:DSH next 与启动配置迁移
|
||||
|
||||
锁文件同步修复:内置依赖迁移或补建 workspace 配置前,先持久化 `.dsh-lockfile-pending` 标记。仅带标记的启动安装显式传入 `--no-frozen-lockfile`,同步 `pnpm-lock.yaml`;成功后清除标记,后续启动恢复 CI 默认冻结检查。安装失败或超时保留标记并阻止应用启动,下次启动继续同步,不自动恢复旧 manifest。已有 manifest 备份机制保持不变。若旧版失败迁移已经留下“新 manifest+旧锁文件”且没有标记,应先恢复匹配的旧 profile 备份再升级;不要直接删除锁文件。
|
||||
|
||||
Reference in New Issue
Block a user