Skip to content

Releases: GooDAnDReaDY/dsh-live-canvas

v0.2.35 [DSH v0.2.1-rc.4]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 28 Oct 08:58

English

  • Eliminate Duplicate Native Tab Collision: Suppressed legacy fallback betterSidebar.registerTab when native sidebarRightTabs (DSH 0.2.x) is present, preventing runtime collision sidebarRight: tab kind "live-canvas" is already registered (extension) caused by Better Sidebar's automatic native surface bridge.
  • Preserve Explorer File Viewer: Unconditionally retained betterSidebar.registerFileViewer across 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 inspect c.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 registerNativeSidebar mounts; 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), вызванную мостом registerNativeSurface Better 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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 26 Oct 08:26

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.origin lookups with safe fallbacks, ensuring robust execution in Node.js, test runners, and environments without DOM location.

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、自动化测试及缺失 DOM location 的环境中稳定运行。

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, тестовых раннерах и средах без DOM location.

Special thanks to Dmitry Vasiliev (@swimmwatch) for contributing the lifecycle optimization and Markdown routing improvements!

v0.2.33 [DSH v0.2.1-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 22 Oct 13:59

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.useTabInfo in NativeLiveCanvasTab with backwards-compatible fallback to props.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 in dsh-client-ui-sidebar-right.
  • Toast Notification Engine (#5, #218): Implemented showToast(msg) with auto-dismiss timer in LiveCanvasWorkspace, eliminating 28+ ReferenceError: showToast is not defined crashes.
  • File Open Error Handling (#5, #218): Narrowed error handling in openFile so 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 undefined fetchSessions().
  • Visual Annotations Sandbox Scope (#5, #218): Declared let annotationCanvas = null; in sandbox injected runtime, enabling seamless visual box drawing without ReferenceError.

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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 21 Oct 10:28

English

  • Cordis Context Proxy Guard (#215): Handled strict Cordis Context Proxy exceptions when reading connection service on contexts without injection, safely subscribing via ctx.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 without Origin header 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 via getWriteRejectionStatus.
  • Path Traversal Protection Verification: Confirmed strict path traversal checks in /api/save-content via resolveSafePath, 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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 21 Oct 10:19

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 without Origin header 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 via getWriteRejectionStatus.
  • Path Traversal Protection Verification: Confirmed strict path traversal checks in /api/save-content via resolveSafePath, 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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 14 Oct 19:00

English

  • Protected all registered route families (/events, /sandbox, /diff, /matrix, /timetravel, /assets, /api) with isTrustedRequest origin and loopback authorization, returning HTTP 403 Forbidden on untrusted LAN or cross-site requests (#213).
  • Added live reactivity to Cordis loader/volatile-update, config, and settings/document-updated events, dynamically applying config changes to PreviewStore, WorkspaceWatcher, and tools without harness restart (#213).
  • Eliminated global monkey-patching of Schema.prototype.volatile on the shared Schemastery host class, using local markVolatile(schema) helper (#213).
  • Gated updater status endpoint (/api/dsh-live-canvas/update GET/HEAD) with isTrustedStatusRequest (#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/update GET/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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 11 Oct 21:02

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) across data-file-path, data-title, and data-path attributes in buildProjectsHubHtml (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.
  • Scoped targetOrigin Frame Messaging (#211):
    • Replaced wildcard '*' in Projects Hub window.parent.postMessage calls (dlc_open_session, dlc_open_file, dlc_session_created) with explicit targetOrigin (window.location.origin), preventing cross-origin broadcast leaks.
  • Logger Console Fallback Contract (#211):
    • Documented the architectural fallback of lib/logger.js to standard console.info, console.warn, console.error, and console.debug in docs/design/DESIGN.md when running outside a Cordis host context (CLI tools, standalone bundles, test runners).
  • 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).

中文

修复与增强

  • 项目中心 (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)。

Русский

Исправления и улучшения

  • Санитизация и экранирование DOM-атрибутов в Projects Hub (#211):
    • Обеспечено полное HTML-экранирование (escapeHtml) атрибутов data-file-path, data-title и data-path в buildProjectsHubHtml (lib/index.js).
    • Файлы рабочей области и сессии, содержащие одинарные (') или двойные (") кавычки либо спецсимволы в путях и названиях, безопасно рендерятся и открываются через делегированный обработчик кликов без повреждения 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).

v0.2.28 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 08 Oct 10:20

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_HOME in test/_setup.mjs ensuring zero pollution of the host environment. Normalized workspaceRoots array contract in tests and lib/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 #root and #app containers 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 [DSH v0.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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 06 Oct 14:50

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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 06 Oct 14:13

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)