Repository navigation
Releases: GooDAnDReaDY/dsh-live-canvas
Release list
v0.2.35 [DSH v0.2.1-rc.4]
English
- Eliminate Duplicate Native Tab Collision: Suppressed legacy fallback
betterSidebar.registerTabwhen nativesidebarRightTabs(DSH 0.2.x) is present, preventing runtime collisionsidebarRight: tab kind "live-canvas" is already registered (extension)caused by Better Sidebar's automatic native surface bridge. - Preserve Explorer File Viewer: Unconditionally retained
betterSidebar.registerFileVieweracross all environments so file tree context previews for HTML, React JSX/TSX, SVG, and Mermaid remain fully operational. - Cordis Proxy Safe Root Service Resolution: Enhanced
getService(c, name)helper to safely inspectc.root[name]when child context proxy traps throw on un-injected properties, ensuring reliable detection of host services regardless of fiber injection state. - Dynamic Startup Order Handshake: Ensured arbitrary plugin activation order works seamlessly. If Better Sidebar activates first, its fallback tab is automatically revoked when
registerNativeSidebarmounts; if native sidebar disposes, the fallback tab gracefully reactivates.
Chinese (中文)
- 消除右侧原生标签页重复注册冲突:当存在原生
sidebarRightTabs服务(DSH 0.2.x)时,自动抑制 Better Sidebar 的降级标签页注册(betterSidebar.registerTab),彻底杜绝 Better Sidebar 原生桥接服务触发的sidebarRight: tab kind "live-canvas" is already registered (extension)运行时报错。 - 完整保留资源管理器文件预览器:在所有运行环境中无条件保留
betterSidebar.registerFileViewer,确保文件树中 HTML、React JSX/TSX、SVG 及 Mermaid 文件的右键/上下文预览功能完全正常工作。 - 安全解析 Cordis 根上下文服务:增强
getService(c, name)助手函数,在子上下文未注入属性触发 Cordis 代理异常时,安全回退读取c.root[name],确保在任何纤程状态下均能准确识别宿主核心服务。 - 动态协调插件启动顺序:支持任意插件加载次序。若 Better Sidebar 先于原生侧边栏启动,其已注册的降级标签页将在原生侧边栏挂载时被自动撤销;在原生侧边栏卸载后,降级标签页平滑恢复。
Russian (Русский)
- Устранение коллизии дублирования нативной вкладки: Регистрация резервной вкладки
betterSidebar.registerTabтеперь подавляется при наличии нативного сервисаsidebarRightTabs(DSH 0.2.x), полностью устраняя ошибку рантаймаsidebarRight: tab kind "live-canvas" is already registered (extension), вызванную мостомregisterNativeSurfaceBetter Sidebar. - Сохранение файлового просмотрщика проводника: Регистрация
betterSidebar.registerFileViewerсохранена безусловно во всех окружениях, обеспечивая бесшовный предварительный просмотр файлов HTML, React JSX/TSX, SVG и Mermaid из дерева проводника Better Sidebar. - Безопасное разрешение корневых сервисов Cordis: Помощник
getService(c, name)дополнен безопасным чтениемc.root[name]при возникновении исключений прокси Cordis на незадекларированных свойствах дочерних контекстов. - Динамический порядок активации (Handshake): Гарантирована корректная работа при любом порядке загрузки плагинов. Если Better Sidebar запускается раньше нативного сайдбара, fallback-вкладка автоматически отзывается в момент монтирования нативной вкладки; при размонтировании нативной вкладки fallback-вкладка восстанавливается.
v0.2.34 [DSH v0.2.1-rc.2]
English
- Markdown Routing to Host Editor (#6): Leave ordinary Markdown files (
.md) to the host file editor instead of opening Live Canvas, preventing ENOENT errors when clicking canvas links in chat. Explicit Canvas URLs, including IDs ending in.md, remain fully supported. - Viewport Lifecycle & Hidden Panel Cleanup (#6): Mount only active viewports (1 iframe in standard mode, 3 in Matrix, 0 when hidden via
tabInfo.tab.visible). Hidden sidebar panels release preview documents and SSE update connections while retaining the selected Canvas and panel controls. - Shared SSE Update Stream (#6): Embedded previews (Projects Hub and sandbox frames via
?parentManaged=1) share a single update stream per visible workspace, eliminating redundant EventSource connections. Standalone tabs and inline chat previews retain independent hot reload. - Race Condition & Connection Cleanup (#6): Abort background discovery and guard late responses so cleanup cannot be followed by an orphaned EventSource. Refresh every active Matrix frame without switching to an unrelated Canvas.
- Strict Address & Demo Validation (#6): Return HTTP 404 for unknown Canvas IDs, HTTP 400 for malformed URI encoding, and validate server-owned demo templates (
calc,dash). - Headless & Test Environment Safety: Guarded
window.location.originlookups with safe fallbacks, ensuring robust execution in Node.js, test runners, and environments without DOMlocation.
Chinese (中文)
- Markdown 路由至宿主编辑器 (#6):普通 Markdown 文件(
.md)不再被 Live Canvas 拦截,改由 DSH 宿主文件编辑器直接打开,修复聊天中点击画布链接导致的 ENOENT 错误。显式 Canvas URL 及以.md结尾的画布 ID 保持完全支持。 - 视口生命周期与隐藏面板清理 (#6):仅挂载当前激活的视口(标准模式 1 个 iframe,Matrix 模式 3 个 iframe,面板隐藏时 0 个,依据
tabInfo.tab.visible)。侧边栏隐藏时自动卸载预览文档与更新连接,同时保留所选画布与控制状态。 - 共享 SSE 更新流 (#6):嵌入式预览(Projects Hub 与带有
?parentManaged=1的沙箱 iframe)在每个可见工作区中共享单一更新流,避免建立多重 EventSource 连接。独立标签页与聊天内联预览保留独立热重载。 - 竞态条件与连接清理 (#6):中止后台发现并防范延迟响应,避免在卸载清理后残留孤立的 EventSource。刷新 Matrix 视图中所有激活框架,防止切换至无关画布。
- 严格地址与演示模板校验 (#6):未知 Canvas ID 返回 HTTP 404,非法 URI 编码返回 HTTP 400,并对服务端演示模板(
calc、dash)进行合法性校验。 - 无头与测试环境安全防护:对
window.location.origin访问增加防御性降级判断,确保在 Node.js、自动化测试及缺失 DOMlocation的环境中稳定运行。
Russian (Русский)
- Маршрутизация Markdown в хост-редактор (#6): Обычные Markdown-файлы (
.md) теперь открываются в штатном редакторе DSH вместо Live Canvas, предотвращая ошибки ENOENT при переходе по ссылкам из чата. Явные ссылки Canvas и ID, оканчивающиеся на.md, по-прежнему поддерживаются. - Жизненный цикл вьюпортов и очистка скрытых панелей (#6): Монтируются только активные iframe (1 в стандартном режиме, 3 в Matrix, 0 при скрытой панели по сигналу
tabInfo.tab.visible). Скрытая панель выгружает документы предпросмотра и соединения обновления, сохраняя выбранный холст и состояние панели. - Единый разделяемый поток обновлений SSE (#6): Вложенные документы предпросмотра (Projects Hub и песочницы через
?parentManaged=1) используют один поток обновлений на рабочую область, устраняя параллельные дублирующие подключения EventSource. - Устранение состояний гонки и очистка соединений (#6): Прерывание фонового обнаружения и защита от запаздывающих ответов гарантируют отсутствие потерянных соединений EventSource после размонтирования.
- Строгая валидация адресов и шаблонов демо (#6): Возврат HTTP 404 для неизвестных Canvas ID, HTTP 400 для некорректного URI, строгая валидация серверных демо-шаблонов (
calc,dash). - Безопасная работа в headless и тестовых окружениях: Защита обращений к
window.location.origin, исключающая сбои в Node.js, тестовых раннерах и средах без DOMlocation.
Special thanks to Dmitry Vasiliev (@swimmwatch) for contributing the lifecycle optimization and Markdown routing improvements!
v0.2.33 [DSH v0.2.1-rc.2]
English
- Cordis Proxy Safe Resolution (#5, #218): Introduced safe service lookup avoiding Cordis Context Proxy strict exceptions (
cannot get property ... without inject) across un-injected properties (sidebarRight,betterSidebar,slots,locale). - DSH 0.2.x Sidebar Tab Hook (#5, #218): Supported DSH 0.2.x standard hook prop
props.useTabInfoinNativeLiveCanvasTabwith backwards-compatible fallback toprops.hooks.tabInfo, restoring resource address binding and live workspace rendering. - Guide Entry Schema Compliance (#5, #218): Added explicit
id: 'live-canvas'to sidebar guide declaration, preventing duplicate-id collision and schema rejection indsh-client-ui-sidebar-right. - Toast Notification Engine (#5, #218): Implemented
showToast(msg)with auto-dismiss timer inLiveCanvasWorkspace, eliminating 28+ReferenceError: showToast is not definedcrashes. - File Open Error Handling (#5, #218): Narrowed error handling in
openFileso general runtime or network exceptions never display a bogus "File Access Restricted" dialog. - Storybook Sessions Refresh (#5, #218): Switched Storybook handler to invoke
loadSessionsAndFiles()instead of undefinedfetchSessions(). - Visual Annotations Sandbox Scope (#5, #218): Declared
let annotationCanvas = null;in sandbox injected runtime, enabling seamless visual box drawing withoutReferenceError.
Chinese (中文)
- Cordis 上下文代理安全读取 (#5, #218):引入安全服务解析机制,避免在未声明 inject 的上下文中访问
sidebarRight、betterSidebar、slots、locale等属性时触发 Cordis 代理抛出严格异常。 - DSH 0.2.x 侧边栏标签页 Hook 适配 (#5, #218):在
NativeLiveCanvasTab中支持 DSH 0.2.x 标准 Hook 属性props.useTabInfo,保留对旧版props.hooks.tabInfo的向后兼容,恢复文件与画布的正确关联渲染。 - 侧边栏 Guide 规范适配 (#5, #218):在原生侧边栏 Guide 项中显式声明
id: 'live-canvas',消除dsh-client-ui-sidebar-right中的重复项与模式校验异常。 - Toast 通知引擎实现 (#5, #218):在
LiveCanvasWorkspace中完整实现具备自动定时清除的showToast(msg),解决 28 处以上未定义ReferenceError崩溃。 - 文件打开异常处理精准化 (#5, #218):优化
openFile异常捕获逻辑,普通网络或运行时错误不再错误触发“文件访问受限”弹窗。 - Storybook 会话刷新修复 (#5, #218):将 Storybook UI Kit 处理函数中的未定义调用
fetchSessions()替换为现有的loadSessionsAndFiles()。 - 沙箱批注作用域变量补全 (#5, #218):在沙箱注入运行时中显式声明
let annotationCanvas = null;,彻底解决进入批注模式时抛出未声明变量错误的问题。
Russian (Русский)
- Безопасное разрешение сервисов Cordis (#5, #218): Внедрён хелпер
getService, защищающий от исключений строгого контекстного прокси Cordis (cannot get property ... without inject) при чтении сервисовsidebarRight,betterSidebar,slots,locale. - Поддержка стандартного хука DSH 0.2.x
useTabInfo(#5, #218): Реализована поддержка хукаprops.useTabInfoс обратной совместимостью дляprops.hooks.tabInfo, восстанавливающая отображение целевых файлов и сессий в правом сайдбаре. - Соответствие схеме Guide сайдбара (#5, #218): Добавлен обязательный
id: 'live-canvas'в запись guide, предотвращая конфликт схемы вdsh-client-ui-sidebar-right. - Реализация движка тостов
showToast(#5, #218): ВLiveCanvasWorkspaceобъявлена функцияshowToast(msg)со стейтом и таймером, устраняя 28+ падений сReferenceError. - Точная обработка ошибок открытия файлов (#5, #218): Ложные модальные окна «File Access Restricted» исключены для обычных ошибок рантайма и сети.
- Исправление обновления сессий в Storybook (#5, #218): Вызов несуществующей
fetchSessions()заменён наloadSessionsAndFiles(). - Объявление
annotationCanvasв песочнице (#5, #218): Декларирована переменнаяlet annotationCanvas = null;в рантайме песочницы, устраняя падение при включении режима аннотаций.
v0.2.32 [DSH v0.2.0-rc.2]
English
- Cordis Context Proxy Guard (#215): Handled strict Cordis Context Proxy exceptions when reading
connectionservice on contexts without injection, safely subscribing viactx.inject(['connection'])while preserving loopback admission. - LAN Client Authentication & Write Route Protection (#215): Integrated DSH connection service authentication (
ctx.connection.requestRejection(req)) across all HTTP route families. Prevented unauthenticated LAN callers withoutOriginheader from accessing/dsh-live-canvas/events,/api/logs,/api/annotate, and mutating endpoints (save-content,save-classes,save-reorder). Mutating endpoints strictly enforce peer session admission viagetWriteRejectionStatus. - Path Traversal Protection Verification: Confirmed strict path traversal checks in
/api/save-contentviaresolveSafePath, standardizing error codes.
Chinese (中文)
- Cordis 上下文代理安全防护 (#215):在未显式注入
connection服务的上下文中安全捕获 Cordis 代理异常,通过ctx.inject(['connection'])实现动态安全注入,同时保障本地回环请求稳定运行。 - 局域网客户端身份认证与写入路由防护 (#215):在所有 HTTP 路由族中接入 DSH 连接认证服务 (
ctx.connection.requestRejection(req))。防止局域网内未认证客户端通过省略Origin头访问/dsh-live-canvas/events、/api/logs、/api/annotate以及写操作接口 (save-content、save-classes、save-reorder)。所有变更接口均通过getWriteRejectionStatus严格强制要求对等端会话认证。 - 路径穿越防御验证:通过
resolveSafePath对/api/save-content执行严苛的目录穿越校验,统一标准化错误返回码。
Russian (Русский)
- Изоляция и защита Cordis Context Proxy (#215): Безопасно перехвачены исключения строгого прокси Cordis при чтении сервиса
connectionна контекстах без инъекции; добавлена безопасная подписка черезctx.inject(['connection'])с сохранением штатного доступа loopback. - Аутентификация сетевых LAN-клиентов и защита маршрутов записи (#215): Подключена обязательная авторизация пиров через DSH Connection Service (
ctx.connection.requestRejection(req)) во всех семействах HTTP-маршрутов. Запросы из локальной сети без заголовкаOriginбольше не считаются доверенными, блокируя неавторизованный доступ к/dsh-live-canvas/events,/api/logs,/api/annotateи мутирующим API (save-content,save-classes,save-reorder). - Верификация защиты от Path Traversal: Подтверждена строгая валидация путей в
/api/save-contentчерезresolveSafePathс единым форматом ответов об ошибках.
v0.2.31 [DSH v0.2.0-rc.2]
English
- LAN Client Authentication & Write Route Protection (#215): Integrated DSH connection service authentication (
ctx.connection.requestRejection(req)) across all HTTP route families. Prevented unauthenticated LAN callers withoutOriginheader from accessing/dsh-live-canvas/events,/api/logs,/api/annotate, and mutating endpoints (save-content,save-classes,save-reorder). Mutating endpoints now strictly enforce peer session admission viagetWriteRejectionStatus. - Path Traversal Protection Verification: Confirmed strict path traversal checks in
/api/save-contentviaresolveSafePath, standardizing error codes.
Chinese (中文)
- 局域网客户端身份认证与写入路由防护 (#215):在所有 HTTP 路由族中接入 DSH 连接认证服务 (
ctx.connection.requestRejection(req))。防止局域网内未认证客户端通过省略Origin头访问/dsh-live-canvas/events、/api/logs、/api/annotate以及写操作接口 (save-content、save-classes、save-reorder)。所有变更接口均通过getWriteRejectionStatus严格强制要求对等端会话认证。 - 路径穿越防御验证:通过
resolveSafePath对/api/save-content执行严苛的目录穿越校验,统一标准化错误返回码。
Russian (Русский)
- Аутентификация сетевых LAN-клиентов и защита маршрутов записи (#215): Подключена обязательная авторизация пиров через DSH Connection Service (
ctx.connection.requestRejection(req)) во всех семействах HTTP-маршрутов. Запросы из локальной сети без заголовкаOriginбольше не считаются доверенными, блокируя неавторизованный доступ к/dsh-live-canvas/events,/api/logs,/api/annotateи мутирующим API (save-content,save-classes,save-reorder). - Верификация защиты от Path Traversal: Подтверждена строгая валидация путей в
/api/save-contentчерезresolveSafePathс единым форматом ответов об ошибках.
v0.2.30
English
- Protected all registered route families (
/events,/sandbox,/diff,/matrix,/timetravel,/assets,/api) withisTrustedRequestorigin and loopback authorization, returning HTTP 403 Forbidden on untrusted LAN or cross-site requests (#213). - Added live reactivity to Cordis
loader/volatile-update,config, andsettings/document-updatedevents, dynamically applying config changes toPreviewStore,WorkspaceWatcher, and tools without harness restart (#213). - Eliminated global monkey-patching of
Schema.prototype.volatileon the shared Schemastery host class, using localmarkVolatile(schema)helper (#213). - Gated updater status endpoint (
/api/dsh-live-canvas/updateGET/HEAD) withisTrustedStatusRequest(#213).
Chinese (中文)
- 通过
isTrustedRequest源验证对所有已注册路由族(/events、/sandbox、/diff、/matrix、/timetravel、/assets、/api)实施防护,阻断非受信局域网及跨站请求(返回 403 Forbidden)(#213)。 - 增加对 Cordis
loader/volatile-update、config及settings/document-updated事件的动态响应,无需重启即可热更新预览存储、文件监视器与工具配置 (#213)。 - 彻底移除对全局共享
Schema.prototype.volatile的猴子补丁,采用局部安全的markVolatile包装器 (#213)。 - 保护更新器状态查询端点(
/api/dsh-live-canvas/updateGET/HEAD)免遭非授权版本信息泄露 (#213)。
Russian (Русский)
- Все зарегистрированные семейства маршрутов (
/events,/sandbox,/diff,/matrix,/timetravel,/assets,/api) закрыты проверкойisTrustedRequest(req)(HTTP 403 Forbidden для ненадежных IP и cross-site запросов) (#213). - Добавлена динамическая реактивность на события Cordis
loader/volatile-update,configиsettings/document-updatedбез необходимости перезапуска харнесса (#213). - Устранена глобальная модификация
Schema.prototype.volatileна общем классе Schemastery, заменена на локальный хелперmarkVolatile(schema)(#213). - Закрыт эндпоинт статуса апдейтера
GET/HEAD /api/dsh-live-canvas/updateпроверкойisTrustedStatusRequest(#213).
v0.2.29 [DSH v0.2.0-rc.2]
Live Canvas v0.2.29 [DSH v0.2.0-rc.2]
English
Fixed & Improved
- Projects Hub DOM Attribute Sanitization (#211):
- Enforced full HTML entity escaping (
escapeHtml) acrossdata-file-path,data-title, anddata-pathattributes inbuildProjectsHubHtml(lib/index.js). - Workspace files and sessions whose names or paths contain single quotes (
'), double quotes ("), or HTML markup tags (<...>) are safely rendered and opened via delegated click handlers without breaking DOM attribute boundaries.
- Enforced full HTML entity escaping (
- Scoped
targetOriginFrame Messaging (#211):- Replaced wildcard
'*'in Projects Hubwindow.parent.postMessagecalls (dlc_open_session,dlc_open_file,dlc_session_created) with explicittargetOrigin(window.location.origin), preventing cross-origin broadcast leaks.
- Replaced wildcard
- Logger Console Fallback Contract (#211):
- Documented the architectural fallback of
lib/logger.jsto standardconsole.info,console.warn,console.error, andconsole.debugindocs/design/DESIGN.mdwhen running outside a Cordis host context (CLI tools, standalone bundles, test runners).
- Documented the architectural fallback of
- Quality & Verification:
- 162/162 unit and integration tests passing (
npm test). dsh-plugin-preflight:FAIL=0.- Isolated DSH test server (
MiniPC) install, smoke check, and cleanup verified (DSH_TEST_OK).
- 162/162 unit and integration tests passing (
中文
修复与增强
- 项目中心 (Projects Hub) DOM 属性转义 (#211):
- 在
buildProjectsHubHtml(lib/index.js) 中对data-file-path、data-title和data-path属性强制执行完整 HTML 实体转义 (escapeHtml)。 - 含有单引号 (
')、双引号 (") 或 HTML 标签 (<...>) 的工作区文件与会话名称均可安全渲染并通过事件委托正常打开,杜绝属性截断与注入风险。
- 在
- 跨帧
postMessage显式源限制 (#211):- 将项目中心客户端脚本中
window.parent.postMessage(dlc_open_session、dlc_open_file、dlc_session_created) 的通配符'*'替换为明确的targetOrigin(window.location.origin),防止跨源广播泄漏。
- 将项目中心客户端脚本中
- 日志器 Console 回退契约文档化 (#211):
- 在
docs/design/DESIGN.md中明确记录了lib/logger.js在无 Cordis 宿主上下文(CLI、独立脚本、测试环境)时自动回退至标准console.*的架构行为。
- 在
- 质量与验证:
- 162/162 单元与集成测试全部通过 (
npm test)。 dsh-plugin-preflight检查结果:FAIL=0。- 独立 DSH 测试服务器 (
MiniPC) 安装、冒烟与清理流程全部验证通过 (DSH_TEST_OK)。
- 162/162 单元与集成测试全部通过 (
Русский
Исправления и улучшения
- Санитизация и экранирование DOM-атрибутов в Projects Hub (#211):
- Обеспечено полное HTML-экранирование (
escapeHtml) атрибутовdata-file-path,data-titleиdata-pathвbuildProjectsHubHtml(lib/index.js). - Файлы рабочей области и сессии, содержащие одинарные (
') или двойные (") кавычки либо спецсимволы в путях и названиях, безопасно рендерятся и открываются через делегированный обработчик кликов без повреждения HTML-разметки.
- Обеспечено полное HTML-экранирование (
- Ограничение
targetOriginв межфреймовых вызовахpostMessage(#211):- Широковещательный адрес
'*'в вызовахwindow.parent.postMessage(dlc_open_session,dlc_open_file,dlc_session_created) внутри Projects Hub заменён на строгийtargetOrigin(window.location.origin).
- Широковещательный адрес
- Документирование fallback логгера в дизайн-контракте (#211):
- В
docs/design/DESIGN.mdзафиксирован архитектурный откатlib/logger.jsк стандартным методамconsole.info,console.warn,console.error,console.debugпри отсутствии контекста Cordis (в тестах, CLI и автономных утилитах).
- В
- Проверки и контроль качества:
- Все 162 теста успешно пройдены (
npm test: 162 pass, 0 fail). - Механическая проверка
dsh-plugin-preflight:FAIL=0. - Полный цикл установки, проверки и очистки на тестовом сервере
MiniPCпройден (DSH_TEST_OK).
- Все 162 теста успешно пройдены (
v0.2.28 [DSH v0.2.0-rc.2]
English
Overview
Release v0.2.28 comprehensively addresses 12 findings from the independent audit recheck of v0.2.27, ensuring robust multi-file bundling, strict test suite isolation, ISO/IEC 18004 compliant QR codes, reliable offline HTML bundle export, and precise viewport visual audit validation.
Key Changes
- Test Isolation & Security Options (#177, #207): Introduced sandboxed
DSH_HOMEintest/_setup.mjsensuring zero pollution of the host environment. NormalizedworkspaceRootsarray contract in tests andlib/tools.js. - Projects Hub & Console Telemetry (#208, #209): Serialized demo code in browser scripts preventing
ReferenceError. Routed iframe console telemetry via parent origin to same-origin logs endpoint/dsh-live-canvas/api/logs. - Tailwind Class Saving (#168): Preserved pristine class names and ensured exact selector targeting (#id/.class) in
save-classes. - Bundler Scoping & Cache Invalidation (#194, #174): Inlined React modules wrapped in isolated IIFE closures preventing variable collisions. Added dependency content hashing in session cache keys.
- QR Code Compliance (#181): Standardized QR generation with standard library, achieving 100% ISO/IEC 18004 ZXing decode compliance.
- Vue SFC Preview & Scope (#178): Extracted
<script setup>variables returning them to template setup, server-side Options API transformation, protected tailwind config against offline ReferenceError. - Standalone Offline HTML Bundle (#179): Pre-rendered static HTML markup directly inside
#rootand#appcontainers for instant preview without CDN network connectivity. - Visual Audit Viewport & Vision Scaffolding (#183, #182): Added viewport validation (375px mobile, 768px tablet, 1280px desktop) with
<style>and inline width / inline-size overflow checks. Synchronized vision import reference scaffolding documentation.
Provenance
- Target:
v0.2.28[DSHv0.2.0-rc.2] - Gitea commit:
a4f746f39d0283dc92ce13c7db54ac8ce90b570d - Mirror commit:
58f3561a841be1a257c7a0fa5ab5c2b1c1c3b591
中文
概述
v0.2.28 版本全面修复了对 v0.2.27 审计复查中发现的 12 项问题,确保多文件打包作用域隔离、严格的测试沙箱隔离、符合 ISO/IEC 18004 标准的二维码生成、可靠的离线导出以及精准的视口视觉审计。
主要改动
- 测试环境隔离与安全配置 (#177, #207):在
test/_setup.mjs中提供沙箱临时DSH_HOME,杜绝污染主机目录;统一workspaceRoots数组契约。 - 项目中心与控制台遥测 (#208, #209):将示例代码序列化至浏览器端脚本防止 ReferenceError;iframe 控制台日志通过父级源定向路由至同源端点。
- Tailwind 类名精准保存 (#168):记录原始类名,并在
save-classes中基于精确选择器定位目标元素。 - 打包器作用域与依赖缓存失效 (#194, #174):多文件打包采用独立 IIFE 闭包避免变量重名冲突;会话缓存键纳入子依赖内容哈希。
- 标准化二维码生成 (#181):集成标准二维码库,生成 100% 符合 ISO/IEC 18004 规范并可通过 ZXing 解析的二维码。
- Vue SFC 预览与作用域修复 (#178):提取
<script setup>变量返回至 setup(),服务端替换 Options API export default,离线环境防护 tailwind.config。 - 独立离线 HTML 导出 (#179):在
#root/#app中预渲染组件静态标记,无需 CDN 即可立即离线呈现。 - 视觉审计视口与视觉导入契约 (#183, #182):支持 mobile/tablet/desktop 视口溢出检测与
<style>样式分析;同步 vision import 脚手架契约文档。
Русский
Обзор
Выпуск v0.2.28 комплексно устраняет 12 замечаний независимой перепроверки аудита версии v0.2.27: обеспечивает строгое изолирование области видимости модулей, песочницу для тестов, стандартные QR-коды ISO/IEC 18004, автономный offline-экспорт и корректную валидацию вьюпортов при визуальном аудите.
Основные изменения
- Изоляция тестов и опции безопасности (#177, #207): Внедрен
test/_setup.mjsс временной директориейDSH_HOME. Унифицирован контрактworkspaceRootsв тестах иlib/tools.js. - Projects Hub и телеметрия песочницы (#208, #209): Сериализация демо-кода в клиентский скрипт браузера; консольные логи
iframeмаршрутизируются через доверенное родительское окно в endpoint/dsh-live-canvas/api/logs. - Сохранение классов Tailwind (#168): Фиксация исходного класса и точечный таргетинг по ID/классу в
save-classes. - Области видимости бандлера и инвалидация кеша (#194, #174): Инлайнинг модулей в React-бандлере изолирован в IIFE-замыканиях с
__exports; в ключ кеша сессии добавлен расчет хэша содержимого зависимостей. - Стандарт генерации QR-кодов (#181): Замена нестандартного генератора на стандартную библиотеку (100% декодирование в ZXing).
- Превью Vue SFC (#178): Экспорт переменных из
<script setup>вsetup(), серверная трансформация Options API, защитаtailwind.config. - Автономный offline-экспорт (#179): Пререндеринг статической разметки в
#rootи#appдля рендеринга без CDN. - Визуальный аудит и Vision Import (#183, #182): Проверка ширины по вьюпортам (mobile 375px, tablet 768px, desktop 1280px) в
<style>и inline-стилях; документация синхронизирована с контрактом scaffolding-импорта.
v0.2.26
Release v0.2.26: Vue 3 SFC Preview Support, Scannable ISO/IEC 18004 Mobile QR Code, W3C DTCG Design Tokens, Web Audio UI Sound FX, Standalone HTML Export JSX Execution, Multi-File Bundler Alias Fixes (#178, #179, #181, #184, #185, #191, #194)
v0.2.25
Release v0.2.25: Split-View Code Editor Drawer, Two-Way Tailwind Class Persistence, Content Saving & Text Insertion, Relative Path Persistence & Settings Enforcement (#167, #168, #175, #180, #186, #190)