# Compatibility / 兼容性 The current source does not declare an `engines.dsh` restriction or DSH peer-version requirements. This removes the version gate; it does not establish compatibility with untested host releases. Published version 0.8.2 declares DSH 0.2.1-rc.2 and 0.2.1-rc.5. Earlier npm 0.8.0 and GitHub 0.8.1 packages declare only rc.2; previously published metadata is unchanged. The candidate checks below are historical snapshots from development before the 0.11.0 release. Their test counts, hashes, host versions and limitations apply only to the specific candidate tested, not to later releases. Where a candidate was superseded, the later entry or release notes describe the final behavior. ## Historical web-fetch display candidate / 网页获取展示历史候选(2026-10-31) The code view matches a recorded HTTP(S) URL to its exact native anchor and delegates activation to that anchor. Changed, unsupported or ambiguous destinations retain the native row, and clicks recheck the mapping. On macOS, 61 unit tests and 48 synthetic Chromium browser cases passed. A separate isolated rc.5 Web host using the locally customized Claude Style theme displayed a synthetic nested `web_fetch` call as code and preserved the native link and result disclosure; no model, tool or external URL was accessed. Client SHA-256: `ea1684c3aef0b7dc4a520a29acb7519aef241eb921c62b5b48ee93c6314e4168`. Native Desktop visual acceptance and other host versions remain unverified. ## Historical IDE colour presets candidate / IDE 配色方案历史候选(2026-10-31) The local candidate retains legacy light/dark colours and adds independent VS Code, JetBrains, Catppuccin and Dracula-inspired presets, with optional code-area backgrounds. Existing colours migrate into the VS Code profiles. Editing only colours, presets or background changes CSS variables without rebuilding call rows. Native file-label mutations still invalidate their mappings, and a suspended code view retains its background. On macOS, 59 unit tests and 47 synthetic Chromium browser cases passed. An isolated rc.5 Web host with the locally customized Claude Style 0.19.6 runtime passed 25 synthetic checks, including migration and all new presets in both preview themes. A first host run read the C++ tab before the asynchronous update completed; the test was changed to wait for the observed tab and the full rerun passed. No model or tool ran. Client SHA-256: `fa70485679292ab87249e6e75d79e2d14200c7a5e42f729f686d0e01fba9d985`. These checks do not establish native Desktop visual acceptance, sustained live generation, native frame rates, or Windows/Linux compatibility. ## Historical audit candidate / 审查修复历史候选(2026-10-31) The local candidate preserves recorded argument text, falls back for lossy object-style formatting and ambiguous native file actions, reports host-only failure indications separately, and warns if settings storage fails. Its client SHA-256 is `1936e17281677e9f8a282422db3bf412c4829e923d3308423337e18d8fe6ca88`. On macOS, 54 unit tests and 46 synthetic Chromium browser cases passed. A separate rc.5 Web host with the locally customized Claude Style 0.19.6 runtime passed 23 synthetic function checks; a clean rc.5 Web host passed six synthetic streaming checks. No model or tool ran. A Windows-style path was exercised only in a synthetic browser fixture, not on Windows Desktop. In one 220-call synthetic fixture, a status-only update read seven row rectangles, compared with 227 on the previously installed runtime; both retained the status marker. This is a targeted operation count, not a native Desktop latency or FPS result. The adaptive conversion batch still cannot guarantee a maximum frame duration for a single expensive row. Native Desktop sustained generation and performance, Windows/Linux, and other themes remain unverified. ## Historical candidate: Go task-function display / Go 任务函数展示 Go summaries show primitive positional values in recorded order, with `nil` for recorded null and raw named arguments available separately. Multi-line calls use trailing commas. Composite or incomplete arguments, unsafe strings, and unsuitable tool names retain the native summary. Separate visual blocks group recorded child calls; they do not establish an actual Go signature or execution order. Python remains the default and existing language preferences are preserved. On macOS arm64, 51 unit and 40 Chromium fixture cases passed, with an additional settings persistence check; 1,920 Python/JavaScript/C/C++/Java formatter comparisons matched the previously installed runtime. An isolated rc.5 Web host using the locally customized Claude Style theme passed 23 compatibility checks and a focused native-fallback check. Synthetic records were used without running a model or tool. Client SHA-256: `8ac15b20850921409cb354102d8a630d75a6ff0239aaf5bc01d9615159169964`. Native Desktop behavior, Go compilation, sustained live generation and other platforms were not verified. Sequential headless Chromium samples with 1,000 synthetic calls took 750 ms for initial Go conversion, 701 ms for Go to Python, and 702 ms for Python to Go. These are single samples including fixture scanning, not native Desktop performance measurements. ## Historical candidate: Java positional display / Java 位置参数展示 Java task-function summaries show primitive values in recorded order, without assuming a real method signature. The raw recorded arguments remain available from a separate disclosure; very long disclosures use the existing display limit and direct users to native details. Composite or incomplete arguments and names unsuitable as Java identifiers retain the native summary. Python, JavaScript, C and C++ display settings are preserved. On macOS arm64, 50 unit and 39 Chromium fixture cases passed, and 960 Python/JavaScript/C/C++ formatter comparisons matched the previously installed runtime. An isolated rc.5 Web host passed the 22-check function compatibility sequence and focused native-fallback checks with both a clean profile and the user's locally customized Claude Style theme. The expanded-code font regression passed four checks in the clean profile. Fixtures used synthetic records; no model or tool was run. Client SHA-256: `51131387f5369e830e0d78895fb14fe4f39e485affdc72239471e1283ba5e843`. Native Desktop behavior and sustained live generation were not verified. Sequential headless Chromium samples with 1,000 synthetic calls took 756 ms for initial Java conversion, 702 ms to switch Java to Python, and 702 ms to switch Python to Java. These single samples include fixture scanning and do not establish native Desktop performance. ## Historical candidate: expanded tool-code font / 展开的工具代码字号 In task-function view, only the native code text inside a tool call is sized to match the function summary. Syntax highlighting and native copy and wrap controls are retained; unrelated code blocks and other layouts are not targeted. On macOS arm64, an isolated rc.5 Web host using the user's locally customized Claude Style 0.19.3 reproduced the mismatch with the previous runtime (13px summary versus 15px code). The updated runtime passed four focused checks both with that theme and in a clean no-theme profile: matching size in light/dark media modes, following a changed 17px summary size, preserved token colours/copy/wrap, and native folding plus an unrelated code block. A first themed folding check sampled before its transition finished; waiting for the native hidden state corrected the test. All records were synthetic; no model or tool was run. Client SHA-256: `6a400b02d6d55c386e66cf9f17fb4f0cb7e2180fd8cf18821231d5f950864bb8`. Native Desktop runtime and other desktop platforms were not verified by these tests. ## Historical candidate: Java task-function display / Java 任务函数展示 The preceding Java candidate added `.java` virtual tabs and visible recorded `name = value` labels. That presentation has since been replaced by the positional view. Its equals signs were read-only presentation, not Java named arguments or assignments; JSON values and null were not assigned invented types. Python, JavaScript, C and C++ preferences remained intact. On macOS arm64, 50 unit cases and 38 Chromium fixture cases passed; 960 Python/JavaScript/C/C++ formatter comparisons matched the previously installed runtime. A clean isolated rc.5 Web host with synthetic Session/PTC records passed 22 checks, including Java preview, nesting, folding, failure navigation, file actions and persisted language after reload. A first host attempt completed the Java interaction checks but hung before finishing the final fold/reload check and was interrupted; a subsequent run passed the full sequence after bounding and instrumenting the test. No model or tool was run. Client SHA-256: `0f496e5aece4fe1ee780d5b892ab7ed96c3992508dfaa236cda92750d5354164`. Native Desktop runtime, sustained live generation and Windows/Linux Desktop were not validated by these checks. In sequential headless Chromium samples with 1,000 synthetic calls, initial Java conversion took 749 ms, switching Java to C++ took 699 ms, and switching Python to Java took 720 ms. These are single samples and include per-frame fixture scanning; they are not native Desktop frame rates or performance guarantees. ## Historical candidate: C++ task-function display / C++ 任务函数展示 The current source adds C++ to the function layout, sharing C-style arguments and scope rendering with separate C++ keyword validation, a `.cpp` tab and `void task_01()` heading. Composite values and null remain labelled records; nesting is illustrative, not executable C++. Python, JavaScript and C language preferences remain intact. On macOS arm64, 49 unit cases and 38 Chromium fixture cases passed; 720 Python/JavaScript/C formatter comparisons matched the previously installed runtime. A clean isolated rc.5 Web host with synthetic Session/PTC records passed 21 checks, including C++ preview, nesting, folding, failure navigation, file actions and persisted language after reload. No model or tool was run. Client SHA-256: `3e587ee31758c4cce0ae4d56a5057445016c43d34f2cce2a94a890da8294357e`. Native Desktop runtime, sustained live generation and Windows/Linux Desktop were not validated by these checks. In sequential headless Chromium samples with 1,000 synthetic calls, initial C++ conversion took 739 ms, switching C++ to C took 697 ms, and switching C to C++ took 703 ms. These are single samples and include per-frame fixture scanning; they are not native Desktop frame rates or performance guarantees. ## Historical candidate: C task-function display / C 任务函数展示 The current source adds C to the function layout while preserving Python and JavaScript selections. C parameter names are comments, composite values are labelled JSON, and null is explicitly labelled without guessing a pointer type. Scope braces show recorded nesting; this is not executable C. The standalone trailing-braces layout remains independent. On macOS arm64, 48 unit cases and 38 Chromium fixture cases passed; 480 Python/JavaScript formatter comparisons matched the previously installed runtime. A clean isolated rc.5 Web host with synthetic Session/PTC records passed 20 checks, including C preview, nesting, folding, failure navigation, file actions and saved language after reload. The first two host attempts exposed test assumptions about an ambiguous close button and narrow-layout line wrapping; the corrected checks passed without a runtime change. No model or tool was run. Client SHA-256: `955362aba60a0793cdc9e9953bc57ce4d6947aa2903bb8f68e328aceb392fe7d`. These checks do not establish native Desktop runtime behavior, sustained live generation, or Windows/Linux Desktop support. In sequential headless Chromium samples with 1,000 synthetic calls, initial C conversion took 771 ms, switching C to JavaScript took 699 ms, and switching Python to C took 703 ms. These are single samples and include per-frame fixture scanning; they are not native Desktop frame rates or performance guarantees. ## Historical candidate: JavaScript task-function display / JavaScript 任务函数展示 The preceding candidate added a Python/JavaScript language preference to the function layout; the default and legacy fallback remain Python. The JavaScript object and scope braces visualize recorded arguments and nesting, not executable source or a callback. The separate trailing-braces layout remains independent. No TypeScript option is claimed. On macOS arm64, 46 unit cases and 38 Chromium fixture cases passed. Python formatter output matched the preceding source in 240 combinations of names, values, incomplete records and scope/wrapping states. A clean isolated rc.5 Web host with synthetic Session/PTC events passed 19 checks including JavaScript switching, preview, nesting, folding, failure navigation, file actions and saved settings. No model or tool was run. Client SHA-256: `4a9f4ae36de8aeb940d82ad0136da1eb6d6f3166c3b9f4b24407096eed2fddac`. Native Desktop runtime, sustained live generation and Windows/Linux Desktop were not validated by these checks. In separate sequential headless Chromium samples with 1,000 synthetic calls, initial conversion took 770 ms for Python and 752 ms for JavaScript; switching after conversion took 701 ms and 703 ms respectively. The fixture scans every expression each frame and includes its own overhead. These are single synthetic samples, not native Desktop frame rates or performance guarantees. ## 0.10.0 task functions / 任务函数 Code blocks now have a default `function` layout and an optional `braces` layout. The function layout borrows `uiSession.adapter.current` and its existing `hooks.chat` source in the verified rc.2/rc.5 clients. It reads native-flow-keyed nodes and recursive `data.root.subCalls`, never writes Session events, retains a Session, requests a model or loads history. Context is used only for matched current-session rows. Unsupported/custom summaries retain native presentation; special controls are not hidden without a safe action mapping. Owned expression nodes are appended alongside intact native summary nodes. Native file actions and disclosure are retained, and complete parameters are exposed by an independent keyboard-operable disclosure. Inactive views retain their normal-flow layout while releasing data subscriptions and delegated events. The new `codeLayout` field defaults to `function`; all existing settings retain their values. This visual representation is not an executable program or a guarantee of Python call semantics. Validation uses pure normalization/formatting checks, Chromium fixtures and synthetic Session records, including actual PTC event projection in both supported Web hosts. No model or tool is executed. Final counts and runtime hash are recorded in `verification/0.10.0.json`; native macOS installation/settings checks are recorded separately in a private receipt. No sustained model-session, Windows/Linux or desktop FPS claim is made. ## 0.9.1 IDE colours / IDE 配色 Code blocks now use VS Code Dark+/Light+ token colours for function-like summaries, file links and reasoning headers. Brackets and guides cycle through three nesting colours; execution status colours apply to summaries, preserving stable pair identity. Explicit preview themes override the ambient palette. No settings fields were added or reset. The final runtime passed 31 unit and 28 Chromium cases plus 13 code-style checks in each isolated rc.2 and rc.5 Web host. Precise colour assertions use reduced motion to avoid sampling a 140ms transition; normal animation coverage remains separate. Results are in `verification/0.9.1.json`. Desktop installation and exact settings equality are recorded separately in the private installation receipt. Prior test records remain unchanged. ## 0.9.0 code blocks / 代码块 The fourth style uses CSS generated content attached to existing summary and subcall anchors. It preserves the host text, links, folding and status. Closing braces reserve normal-flow rows; inactive views retain lightweight scope attributes so suspension does not change history height. Existing preferences and the classic fresh-install default are retained. Validation covers synthetic Chromium fixtures and a real isolated DSH 0.2.1-rc.5 Web host. Nested Web-host scopes are explicitly injected DOM based on genuine host summaries, not evidence of model/tool execution. The code style also passed 11 checks in a fresh isolated DSH 0.2.1-rc.2 Web profile using the same packed runtime. Final test counts are recorded in `verification/0.9.0.json`; machine-specific Desktop installation and preference equality are recorded separately in a private local receipt. No sustained live-model, Windows/Linux or native Desktop performance claim is made. ## Test levels / 验证层次 - Unit: normalization, migrations and geometry helpers. - Browser: real Chromium, ResizeObserver, IntersectionObserver, SVG and React on synthetic host-shaped markup. This verifies renderer behavior and cleanup, without model requests or private data. - Host: exact packed plugin loaded by a separate real DSH Web host with a new DSH_HOME, with and without an unchanged upstream theme. Real-host settings and activation checks are recorded separately from synthetic transcript checks. - Native Desktop: separate acceptance; a Web result does not establish Desktop scrolling performance. ## 0.8.2 rc.2 final Web regression / rc.2 最终版 Web 回归 The final runtime (client SHA-256 `8ee4deda8c0b3968285a07a81dbf5a5f3e631d8bed14937414b0160e609ac79c`) was installed into a clean, isolated official DSH 0.2.1-rc.2 Web profile on macOS arm64. The real-host synthetic session passed 17 regular checks and nine botanical optimization opt-in checks without model requests. The first run exposed a test assumption: rc.2 shows the signature in a collapsed reasoning row, while its expanded row shows the body. The revised host test retains the expanded-body assertion and checks the filtered collapsed title when explicitly requested. Results and the initial failure are recorded in `docs/verification/rc2-final-regression.json`. This is not native Desktop, Windows, Linux, sustained generation or performance validation. ## 0.8.2 native Desktop spot check / 桌面版抽查 The final runtime (client SHA-256 `8ee4deda8c0b3968285a07a81dbf5a5f3e631d8bed14937414b0160e609ac79c`) was installed on macOS arm64 in the DSH 0.2.1-rc.5 Desktop profile with an existing customized Claude Style. After enabling the opt-in and temporarily selecting botanical style, an existing short acceptance session displayed its crown, branches and six nodes; three top-level nodes matched their rows with zero measured center offset, and manual scrolling retained alignment. The prior settings were restored except for the requested opt-in. This was not a clean-profile Desktop benchmark or a sustained live-model test; Windows, Linux and other Desktop configurations remain unverified. ## 0.8.2 botanical opt-in scrolling optimization / 植物滚动优化 With 200 synthetic calls in rc.5 Web, invalidation traces associated botanical SVG child changes with host `:has()` style recalculation. Single-run diagnostic interventions that hid the canopy or all artwork did not meaningfully reduce long intervals; blocking SVG child mutations or removing host selectors did. Those interventions change the interface and were not shipped. A general SVG reuse pool improved measurements but changed compositing order in overlapping branches; a pool restricted to preserving order showed no convincing speedup. Neither pool is included. The new botanical Advanced setting is **off by default**, including for old preferences. When enabled it puts the chat root graphics inside an open Shadow DOM so their internal mutations no longer trigger the host's ancestor selectors. This retains geometry and paint order but ordinary `document.querySelector` and external CSS cannot directly reach those internal elements. Other plugins or custom CSS depending on direct access may be incompatible while it is enabled; turning it off restores the previous DOM. The settings preview remains outside the isolated drawing layer. A static hidden marker avoids the host `:empty` selector shifting the first row; a `