# Changelog All notable changes to this project are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). No version has been released yet, so the entries below carry no release dates. ## [0.4.0] — not released ### Added - **Profile-scoped independent JSON storage**: move large flair data out of the main configuration, preserve raw and effective migration backups, and install only a lightweight file-storage marker. Opening the page never writes; cleanup requires explicit confirmation and verified, unchanged source data. - **Durable saves and recovery boundaries**: serialized same-host saves, captured draft revision checks, atomic file replacement, idempotent operation receipts, fail-closed corrupt/missing-file behavior, and visible cleanup retries. No cross-process atomic CAS is claimed. - **Configuration sharing**: import a configuration shared by another user as an in-page draft with a count summary; invalid or foreign documents are rejected. Custom icons travel as embedded `data:` URLs rather than file paths. - **Storage controls**: back up the current configuration to a file, prompt for that manual backup during migration, and retain edits made while a previous save is in flight. Data polling and focus refresh synchronize browser pages. Legacy fields are no longer volatile-writable. Version 0.4.0 is not released. No actual profile migration or service operation was performed while developing it. ### Fixed - **Shipped-look flash before configuration arrives**: the pre-config placeholder used to paint the factory look, briefly flashing 暖金色 on load and on every hot reload. It now leaves DSH’s own styling in place until the real configuration applies. - **Rule look overwritten by settings notifications**: a settings-mirror update while the plugin’s run flag was momentarily empty repainted the base selection. It now re-applies the matching event rule, and theme changes only repaint the preset already on screen. ## [0.3.0] — not released ### Added - **Default-first configuration tabs and starter rules**: Default selection and Event rules and groups are sibling panels that preserve drafts while switching. Rule enable and move controls remain visible when details are collapsed. Four editable starters cover thinking/interaction, information gathering, execution/operations and replies. Each initial or newly added starter selects DSH’s own look and copy, rather than inheriting the global selection. Existing rules and explicit empty lists are preserved; adding starters fills only missing IDs, without enabling the master switch. - **Explicit output phases**: built-in waiting, thinking and responding groups use current-attempt live stream deltas. Thinking requires explicit reasoning; responding means visible text, not necessarily a final answer. Stream and attempt boundaries, retries, navigation and recovery clear evidence instead of replaying old text. The native 14-category tool classifier remains unchanged; custom activity groups can combine the new phases, and the editor shows the current output state. - **Event policies**: optional client-side activity and tool-result rules, disabled by default with `eventGroups: []` and `eventRules: { enabled: false, minRefreshMs: 3000 }`; missing rule lists receive four editable starters, while explicit empty lists are preserved. Activity groups follow DSH’s 14 native categories (`thinking`, `read`, `readImage`, `search`, `write`, `edit`, `commands`, `code`, `webSearch`, `webFetch`, `subagents`, `plan`, `questions`, `tools`); pulse groups use `tool-error` or `tool-success`. Built-in groups are virtual, while custom groups can match native activity categories or exact tool names; pulse tool-name filters narrow the selected result types. - **Ordered event rules**: the first enabled, valid matching rule supplies a complete look/text `selection`, including the official `default` sentinel. Rules reference same-kind groups, inherit global `triggers` and use a configurable pulse hold window (default 2000ms). Group and rule edits retain the explicit-save draft workflow. Health diagnostics expose only group/rule counts and enablement summaries, not their contents. - **Shared-source event lifecycle**: event policies use only the current main session’s existing shared source, without a new `follow` stream or host-side session subscriptions. History and reconnect recovery do not replay transient result pulses. Unknown extension tools can be targeted by exact name in custom groups. Version 0.3.0 has not been released. - **Per-preset sweep colours**: each look preset can set its own shimmer colour for dark and light themes. Leaving a field empty keeps the automatic derivation (mixed toward white on dark themes, toward black on light themes), and the preset editor gains two colour rows, each with a native colour picker, a text field for any CSS colour, and a clear-to-auto button. An empty field previews the automatic colour for *its own* theme, and the rows are plain containers rather than `