Skip to content

Update dev#189

Merged
dcapslock merged 4 commits intodevfrom
master
Apr 8, 2026
Merged

Update dev#189
dcapslock merged 4 commits intodevfrom
master

Conversation

@dcapslock
Copy link
Copy Markdown
Collaborator

No description provided.

dcapslock and others added 4 commits April 4, 2026 14:27
Clarified the introduction and added details about UIX components.
* feat(sections): Support styling section backgrounds by UIX config. (#149)

* feat(sections): Support styling section backgrounds by UIX config.

* Remove unneeded import

* chore(release): 6.1.0-beta.1 [skip ci]

## [6.1.0-beta.1](https://github.com/Lint-Free-Technology/uix/compare/v6.0.0...v6.1.0-beta.1) (2026-04-01)

### ⭐ New Features

* **sections:** Support styling section backgrounds by UIX config. ([#149](https://github.com/Lint-Free-Technology/uix/issues/149)) ([b6b1946](https://github.com/Lint-Free-Technology/uix/commit/b6b19464239f86da453a8b3d5a8b6050954deb20))

* chore(docs): Section config background styling beta note

* chore(docs): Fix typo

* chore(docs): Developers update - fix example and provided emphasis

* chore(deps): bump picomatch (#118)

* chore(deps): bump picomatch

Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add rollup options for typescript resolving

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (#119)

Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.8 to 4.7.9.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout from 3 to 6 (#138)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/configure-pages from 5 to 6 (#139)

Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 5 to 6.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/stale from 10.0.0 to 10.2.0 (#140)

Bumps [actions/stale](https://github.com/actions/stale) from 10.0.0 to 10.2.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v10.0.0...v10.2.0)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/setup-node from 4 to 6 (#141)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/deploy-pages from 4 to 5 (#142)

Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump conventional-changelog-conventionalcommits (#147)

Bumps [conventional-changelog-conventionalcommits](https://github.com/conventional-changelog/conventional-changelog/tree/HEAD/packages/conventional-changelog-conventionalcommits) from 9.1.0 to 9.3.1.
- [Release notes](https://github.com/conventional-changelog/conventional-changelog/releases)
- [Changelog](https://github.com/conventional-changelog/conventional-changelog/blob/master/packages/conventional-changelog-conventionalcommits/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/conventional-changelog/commits/conventional-changelog-conventionalcommits-v9.3.1/packages/conventional-changelog-conventionalcommits)

---
updated-dependencies:
- dependency-name: conventional-changelog-conventionalcommits
  dependency-version: 9.3.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* deps: bump rollup from 2.80.0 to 4.60.1 (#143)

* deps: bump rollup from 2.80.0 to 4.60.1

Bumps [rollup](https://github.com/rollup/rollup) from 2.80.0 to 4.60.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.80.0...v4.60.1)

---
updated-dependencies:
- dependency-name: rollup
  dependency-version: 4.60.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: replace rollup-plugin-terser with @rollup/plugin-terser for rollup v4 compatibility

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/3ad05421-5844-487f-8c1b-18520f6f2c23

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: replace matchAll (ES2020) with exec loops in pseudoMatches for ES2017 compat

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/956f19fb-a15e-4b71-88ca-b629dad1ef59

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* deps: bump @babel/preset-env from 7.23.6 to 7.29.2 (#145)

Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.23.6 to 7.29.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* deps: bump rollup-plugin-typescript2 from 0.36.0 to 0.37.0 (#144)

Bumps [rollup-plugin-typescript2](https://github.com/ezolenko/rollup-plugin-typescript2) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/ezolenko/rollup-plugin-typescript2/releases)
- [Changelog](https://github.com/ezolenko/rollup-plugin-typescript2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ezolenko/rollup-plugin-typescript2/compare/0.36.0...0.37.0)

---
updated-dependencies:
- dependency-name: rollup-plugin-typescript2
  dependency-version: 0.37.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* deps: bump @rollup/plugin-babel from 6.0.4 to 7.0.0 (#146)

Bumps [@rollup/plugin-babel](https://github.com/rollup/plugins/tree/HEAD/packages/babel) from 6.0.4 to 7.0.0.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/babel/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/url-v7.0.0/packages/babel)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-babel"
  dependency-version: 7.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(release): 6.1.0-beta.2 [skip ci]

## [6.1.0-beta.2](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.1...v6.1.0-beta.2) (2026-04-02)

### 📦 Dependency Upgrades

* bump @babel/preset-env from 7.23.6 to 7.29.2 ([#145](https://github.com/Lint-Free-Technology/uix/issues/145)) ([ecd93ae](https://github.com/Lint-Free-Technology/uix/commit/ecd93ae9fdde7e31becfecdeb6be1f9f5a7b4432))
* bump @rollup/plugin-babel from 6.0.4 to 7.0.0 ([#146](https://github.com/Lint-Free-Technology/uix/issues/146)) ([c8d690e](https://github.com/Lint-Free-Technology/uix/commit/c8d690e5abc7d9cc02b28ddc43e2b7e1a90873a4))
* bump rollup from 2.80.0 to 4.60.1 ([#143](https://github.com/Lint-Free-Technology/uix/issues/143)) ([2400e1b](https://github.com/Lint-Free-Technology/uix/commit/2400e1b5d15f0adbd766cab452148ffe125b6961))
* bump rollup-plugin-typescript2 from 0.36.0 to 0.37.0 ([#144](https://github.com/Lint-Free-Technology/uix/issues/144)) ([7475217](https://github.com/Lint-Free-Technology/uix/commit/7475217403aef8132f89e1961fcae4e18126b85f))

* feat(forge): support multiple sparks of the same type (#152)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/d8690642-cd18-42a4-aef2-8c8e273e96fa

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat(forge): add Search Spark for shadow DOM element mutation (#136)

* Initial plan

* feat: implement Search Spark for UIX Forge

Adds a new `search` spark type that:
- Navigates to a shadow-DOM container via the `for` path (supports `$` crossings)
- Finds elements using `querySelectorAll(query)`
- Optionally filters by text-node regex (`text`)
- Applies actions: add_class, remove_class, add_attribute, remove_attribute,
  replace_text, prepend_text, append_text
- Tracks all mutations for full restoration on update/disconnect
- Uses MutationObserver to re-apply when the container DOM changes

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/95216db7-c8f1-4b20-9e98-15c0ed01fe86

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(forge): guard partial YAML and uix-node mutations in search spark

- Add null/type guards to all action array iterations so partial YAML
  (e.g. a bare `-` entry) doesn't throw TypeError
- Filter MutationObserver callbacks to skip records where every
  added/removed node is a <uix-node> element, preventing lockup when
  UIX styling is applied to the forged element

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/0a415116-3ac0-4674-9100-2bc8306933cc

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(forge): prevent null dereference on observer when leaving view

Use a local closure reference to the MutationObserver instead of
this._observer, and bail out early in the callback when this._observer
is already null (set by disconnectedCallback/_restore). This prevents
the "Cannot read properties of null (reading 'disconnect')" error that
occurred when navigating away from a view while the observer callback
was still queued.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/569463fa-71c6-417a-b612-319dd3cdfd06

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(forge): match text inside child elements (e.g. <a>Text</a>) in search spark

Replace the direct-text-node-only _getTextNodeContent implementation with
element.textContent so that the `text` regex filter matches content nested
inside child elements such as <a>, <span>, etc., not just bare text nodes.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/4b5122d2-ccec-48db-9698-3c190538d358

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* docs(forge): add Search Spark documentation page

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/7c6bf4e7-3137-4e6b-b490-b44f71ee108c

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(forge): guard querySelectorAll and skip empty text nodes in prepend/append

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/75a86d03-b186-4746-807d-ef2869feb9cf

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Documentation updates

* Update icon in search spark title

* Update search spark icon in spark index

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: Darryn Capes-Davis <dcapes-davis@outlook.com.au>

* chore(release): 6.1.0-beta.3 [skip ci]

## [6.1.0-beta.3](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.2...v6.1.0-beta.3) (2026-04-02)

### ⭐ New Features

* **forge:** add Search Spark for shadow DOM element mutation ([#136](https://github.com/Lint-Free-Technology/uix/issues/136)) ([3343b31](https://github.com/Lint-Free-Technology/uix/commit/3343b316b6dc13a56ded00838366f0cad20d4540))
* **forge:** support multiple sparks of the same type ([#152](https://github.com/Lint-Free-Technology/uix/issues/152)) ([b0b2b37](https://github.com/Lint-Free-Technology/uix/commit/b0b2b37fa8e443067ea90fe63c27ca4a2845d47a))

* chore(deps-dev): bump handlebars from 4.7.8 to 4.7.9

Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.8 to 4.7.9.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump lodash-es from 4.17.23 to 4.18.1

Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(toast): Refactor for timing reliability

* chore(release): 6.1.0-beta.4 [skip ci]

## [6.1.0-beta.4](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.3...v6.1.0-beta.4) (2026-04-02)

### 🐞 Bug Fixes

* **toast:** Refactor for timing reliability ([1eb319f](https://github.com/Lint-Free-Technology/uix/commit/1eb319fd310050ae914a7fcae63d6222875b507e))

* chore(deps): bump tslib from 2.6.2 to 2.8.1

Bumps [tslib](https://github.com/Microsoft/tslib) from 2.6.2 to 2.8.1.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/v2.6.2...v2.8.1)

---
updated-dependencies:
- dependency-name: tslib
  dependency-version: 2.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @rollup/plugin-node-resolve from 15.2.3 to 16.0.3

Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 15.2.3 to 16.0.3.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v16.0.3/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-version: 16.0.3
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump typescript from 5.3.3 to 6.0.2

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.3.3 to 6.0.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.3.3...v6.0.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 6.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @babel/core from 7.23.6 to 7.29.0

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.23.6 to 7.29.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* deps: bump lit from 3.1.0 to 3.3.2 (#161)

Bumps [lit](https://github.com/lit/lit/tree/HEAD/packages/lit) from 3.1.0 to 3.3.2.
- [Release notes](https://github.com/lit/lit/releases)
- [Changelog](https://github.com/lit/lit/blob/main/packages/lit/CHANGELOG.md)
- [Commits](https://github.com/lit/lit/commits/lit-element@3.3.2/packages/lit)

---
updated-dependencies:
- dependency-name: lit
  dependency-version: 3.3.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(build): update moduleResolution from node to bundler in tsconfig.json (#164)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/ab5d9937-99b4-4885-b013-c99535f98aea

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* refactor: TypeScript 6 build errors and VSCode linting alignment (#165)

* chore: plan TS6 migration fixes

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/0fe32a80-4f9c-4e3f-9f10-255c30ebcca5

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: TypeScript 6 build errors

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/0fe32a80-4f9c-4e3f-9f10-255c30ebcca5

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore: commit vscode typescript sdk setting

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/0fe32a80-4f9c-4e3f-9f10-255c30ebcca5

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore: add python paths and cSpell words to vscode settings

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/570007a3-1631-416a-a970-458fd2022e16

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore: replace deprecated typescript.tsdk with js/ts.tsdk.path in vscode settings

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/89b60e98-0f4e-4051-9d85-9b22c52b05e7

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(release): 6.1.0-beta.5 [skip ci]

## [6.1.0-beta.5](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.4...v6.1.0-beta.5) (2026-04-03)

### 📦 Dependency Upgrades

* bump lit from 3.1.0 to 3.3.2 ([#161](https://github.com/Lint-Free-Technology/uix/issues/161)) ([97816ce](https://github.com/Lint-Free-Technology/uix/commit/97816ce60844dd3541c5a4642c0c0289c5045dc7))

### ⚙️ Miscellaneous

* TypeScript 6 build errors and VSCode linting alignment ([#165](https://github.com/Lint-Free-Technology/uix/issues/165)) ([c68b011](https://github.com/Lint-Free-Technology/uix/commit/c68b0110119f126ffd2430a8702b8d1cb594ba4f))

* refactor(forge): Provide action-handler scaffold for for UIX Forge Sparks (#167)

* feat(forge): Add Button Spark (#168)

* chore(library): Provide for action-handler directive

* feat(forge): Add Button spark (#166)

* feat: add button spark

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/d42abf1f-f127-42f4-9a42-e8d58c600ecb

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Correct icon slots

* fix(button-spark): restrict variant and appearance to ha-button allowed values

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/4e4d4596-82ea-4175-af28-24170ebbc9a1

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(button-spark): wrap ha-button in div to stop click propagation to parent card action handler

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/5b6fc45d-a052-4cad-b6fd-e07461fc5d24

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(button-spark): add pointer-events:auto to wrapper div and entity config option

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/86d8818f-40a8-4c30-9a29-0b3a45d05845

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* docs(forge): add button spark documentation

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/2808c73c-8039-44f3-afe2-b18c1b61680e

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat(forge): add before/after support to button spark

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/924c5084-31cb-4223-998b-9e91430e7dc0

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Documentation updates

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(docs): Add beta note for button spark

* refactor(button-spark): add `icon` config for icon-only buttons (#169)

* feat: add icon config to button-spark (label slot, mutually exclusive with label)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/c9006ddf-130e-4625-b2b5-b9d074aebfb6

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(docs): Button spark documentation tweaks

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(release): 6.1.0-beta.6 [skip ci]

## [6.1.0-beta.6](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.5...v6.1.0-beta.6) (2026-04-03)

### ⭐ New Features

* **forge:** Add Button Spark ([#168](https://github.com/Lint-Free-Technology/uix/issues/168)) ([51cfbe8](https://github.com/Lint-Free-Technology/uix/commit/51cfbe8110eedf6046bebc2259ab29702a8dfd8a)), closes [#166](https://github.com/Lint-Free-Technology/uix/issues/166)

### ⚙️ Miscellaneous

* **button-spark:** add `icon` config for icon-only buttons ([#169](https://github.com/Lint-Free-Technology/uix/issues/169)) ([32b52b7](https://github.com/Lint-Free-Technology/uix/commit/32b52b7ef414915a1d1a6f9aebd07c7cf68c85ef))
* **forge:** Provide action-handler scaffold for for UIX Forge Sparks ([#167](https://github.com/Lint-Free-Technology/uix/issues/167)) ([2d8144e](https://github.com/Lint-Free-Technology/uix/commit/2d8144e077b829f82f22d96a40ad5ef7f056f54d))

* Chore(docs’: Corrected 'Search spark' to 'Button spark' in docs

* refactor(button-spark): style matching Home Assistant icon button when using with icon only (#170)

* feat: apply ha-icon-button styles via uix-icon-button class on icon-only button spark

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/cf2088a0-28dd-4652-b014-e68854566679

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: add color config for icon-only button spark, simplify docs wording

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/cc0c29ae-f6da-4d07-8dda-9c14375a2958

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* refactor: inject icon-button style into wrapper div instead of document.head

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/7bea182b-29cc-4162-a4d8-bd7768a2eeda

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Updates after testing

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* fix(forge sparks): centralize spark lifecycle guards - stops growing prepend/append in search spark (#172)

* fix(search-spark): prevent prepend/append accumulation on edit-mode toggle

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/c66050b1-b66a-48cf-9b95-5fd9f80fc265

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* refactor(sparks): centralize _cancel/_cancelPending/_callGeneration in UixForgeSparkBase

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/430cca81-448a-4d02-96f1-aa93a2614a38

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(release): 6.1.0-beta.7 [skip ci]

## [6.1.0-beta.7](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.6...v6.1.0-beta.7) (2026-04-04)

### 🐞 Bug Fixes

* **forge sparks:** centralize spark lifecycle guards - stops growing prepend/append in search spark ([#172](https://github.com/Lint-Free-Technology/uix/issues/172)) ([1fc2446](https://github.com/Lint-Free-Technology/uix/commit/1fc244692ac13bde38d3fbbe42a3f214676d7ee8))

### ⚙️ Miscellaneous

* **button-spark:** style matching Home Assistant icon button when using with icon only ([#170](https://github.com/Lint-Free-Technology/uix/issues/170)) ([ae5fdf0](https://github.com/Lint-Free-Technology/uix/commit/ae5fdf0e72770960d42397f9bb38ebadf2c3e2e1))

* fix(tooltip-spark): fix flickering of tooltip spark from constant recreation (#174)

* Initial plan

* fix: prevent tooltip spark flickering by avoiding unnecessary DOM moves on update

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/c9d50dd5-b126-49b7-b2ce-8042805babe4

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Correct tracking of tooltip

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(docs): Fix example typo

* chore(release): 6.1.0-beta.8 [skip ci]

## [6.1.0-beta.8](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.7...v6.1.0-beta.8) (2026-04-05)

### 🐞 Bug Fixes

* **tooltip-spark:** fix flickering of tooltip spark from constant recreation ([#174](https://github.com/Lint-Free-Technology/uix/issues/174)) ([f508bc7](https://github.com/Lint-Free-Technology/uix/commit/f508bc7e73a65ac9bdf2e138ba494cb0f34f20a8))

* chore(docs): Update examples and text for search spark

* chore(docs): Update to make foundries doc refer correctly to element

* chore(docs): Update forge index with all sparks

* fix(forge): Console errors when editing UIX Forge in UI editor

* fix(forge sparks): Template updates not applying to sparks after first update

* chore(release): 6.1.0-beta.9 [skip ci]

## [6.1.0-beta.9](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.8...v6.1.0-beta.9) (2026-04-05)

### 🐞 Bug Fixes

* **forge sparks:** Template updates not applying to sparks after first update ([1704219](https://github.com/Lint-Free-Technology/uix/commit/1704219cbbc5802d3f97c1702e1f0e657f1d42c0))
* **forge:** Console errors when editing UIX Forge in UI editor ([afebb46](https://github.com/Lint-Free-Technology/uix/commit/afebb467a24290694ddeb1ae58c706becd80c9f7))

* refactor(button-spark): Adjust icon button height and alignment

* chore(release): 6.1.0-beta.10 [skip ci]

## [6.1.0-beta.10](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.9...v6.1.0-beta.10) (2026-04-05)

### ⚙️ Miscellaneous

* **button-spark:** Adjust icon button height and alignment ([70a22b5](https://github.com/Lint-Free-Technology/uix/commit/70a22b539cebf8870fb6ecc57819ce2e82addcc1))

* fix(event-spark): event spark events causing all forged elements with event spark to refresh even if forge_id does not match

* chore(release): 6.1.0-beta.11 [skip ci]

## [6.1.0-beta.11](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.10...v6.1.0-beta.11) (2026-04-05)

### 🐞 Bug Fixes

* **event-spark:** event spark events causing all forged elements with event spark to refresh even if forge_id does not match ([54a3202](https://github.com/Lint-Free-Technology/uix/commit/54a3202cb93113715871bc822abc6c58f94bdac5))

* feat(macros): transitively resolve macro dependencies in buildMacros (#175)

* feat: recursively resolve macro dependencies in buildMacros

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/460eedf4-343d-4ffb-9465-951754544061

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* perf: cache macro keys and use index-based queue in buildMacros

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/460eedf4-343d-4ffb-9465-951754544061

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* docs: add composing macros example to templates.md

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/4730eedb-857c-45d2-8b0d-7079524eb05a

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* docs: use "main template" instead of "style template" in composing macros section

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/b5437958-dc9e-4be8-bc45-ede85ffea0b3

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(release): 6.1.0-beta.12 [skip ci]

## [6.1.0-beta.12](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.11...v6.1.0-beta.12) (2026-04-06)

### ⭐ New Features

* **macros:** transitively resolve macro dependencies in buildMacros ([#175](https://github.com/Lint-Free-Technology/uix/issues/175)) ([82c55f8](https://github.com/Lint-Free-Technology/uix/commit/82c55f888d5dba71f02e67d70923dd291cece40e))

* chore(docs): Update UIX Styling Index page

* chore(docs): Order concepts before debugging in UIX Styling

* feat(forge): map spark with memory mode (#177)

Closes: #176

* Initial plan

* feat: add map spark with memory mode for UIX Forge

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/5464fe9b-4d87-4653-88fe-643515ef4736

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* refactor: use beforeForgedElementRefresh rather than willUpdate

* Use reset: true on leaflet setView

* docs: add map spark documentation

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/7a3ac4f8-0341-421e-9af9-a0a9e3d0ede0

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* docs: fix map spark docs - reset triggered by forge template updates not hass state

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/8e30bd1c-4250-4fe6-a612-582a1a4cac6f

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(docs): Beta not for map spark

* chore(release): 6.1.0-beta.13 [skip ci]

## [6.1.0-beta.13](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.12...v6.1.0-beta.13) (2026-04-06)

### ⭐ New Features

* **forge:** map spark with memory mode ([#177](https://github.com/Lint-Free-Technology/uix/issues/177)) ([9b60a99](https://github.com/Lint-Free-Technology/uix/commit/9b60a997b98380d11a268482d8bc6722b3cdeb7c)), closes [#176](https://github.com/Lint-Free-Technology/uix/issues/176)

* chore(docs): Add mark spark to sparks list on forge index

* chore(docs): Correct map spark link on forge index

* fix(forge): Add `delayed_hass` forge config option to suppress console errors on load for some custom cards. e.g. apexcharts_card

* chore(refactor): Updated delayed_hass config option

* chore(release): 6.1.0-beta.14 [skip ci]

## [6.1.0-beta.14](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.13...v6.1.0-beta.14) (2026-04-06)

### 🐞 Bug Fixes

* **forge:** Add `delayed_hass` forge config option to suppress console errors on load for some custom cards. e.g. apexcharts_card ([8592c12](https://github.com/Lint-Free-Technology/uix/commit/8592c126d517f6db11426547bf9521d0bab5534d))

* chore(docs): section backgrounds example fix. FAQ grammar update

* chore(docs): Again fix section-background example

* feat(forge): add lock spark for UIX Forge (#178)

* Initial plan

* feat: add lock spark for UIX Forge

- Creates uix-spark-lock.ts implementing the lock spark
- Overlay div with ha-icon positioned absolutely over the 'for' target element
- Lock-matching algorithm (users/admins/except/active) selects first matching entry
- Dialogs via HA cardHelpers: showEnterCodeDialog (numpad/text), showConfirmationDialog, showAlertDialog
- Retry logic: retry_delay, max_retries, max_retries_delay
- unlock_action: element_tap/hold/double_tap or direct HA actions
- Web Animations API bounce animation on lock/unlock state change
- Re-lock timer after configurable duration
- Registers 'lock' in uix-spark-controller.ts
- Adds docs/source/forge/sparks/lock.md
- Updates docs/source/forge/sparks/index.md

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/322280c7-7b8c-42de-8222-2ef6aef30289

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: address code review feedback on lock spark

- Use var(--uix-lock-border-radius, inherit) so CSS variable actually controls border-radius
- Add preventDefault() alongside stopPropagation() for click/mousedown/pointerdown (passive touchstart only stops propagation)
- Add comment explaining Material Design hex fallback colors

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/322280c7-7b8c-42de-8222-2ef6aef30289

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: remove unnecessary 'as any' casts and clarify docs example

- Access forge.hass and forge.forgedElementConfig directly (consistent with
  other sparks; UixForge members are public with hass typed as any)
- Clarify the 'same PIN for everyone' docs example to show both admin and
  non-admin entries explicitly

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/322280c7-7b8c-42de-8222-2ef6aef30289

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: correct admins: true semantics in lock spark

admins: true is an additive flag that extends the scope of an entry to
include admins alongside the default (all non-admins). It does NOT create
an admin-only entry.

- _findMatchingLock(): no-users-list entries now skip admins by default;
  admins: true makes them match everyone (admin + non-admin)
- _shouldShowLock(): when no entry matches and permissive: false, admins
  auto-bypass (no overlay shown); only non-admins are permanently blocked
- Update docs: matching table, admins key description, all examples
  (same-PIN example simplified to one entry; replaced incorrect admin-only
  examples with correct explanations and configs)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/fc167760-c1bf-446c-a556-cc0bdc28d7e5

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Update docs to show lock spark link. Add comment about admins: true for basic examples

* Update entities example

* fix: make hold action work reliably on touch devices

Three related issues prevented hold from working:

1. actionHandlerBind was only called on overlay creation. If the config
   changed (action: tap → hold), hasHold was never updated. Move the call
   outside the creation block so it runs on every _attach() invocation.
   HA's bind() safely updates options when the element is already bound.

2. Without touch-action: none the browser competes with the action-handler
   on touch devices: it may initiate scrolling or a long-press callout and
   fire pointercancel before the hold timer can complete. Adding
   touch-action: none on the overlay relinquishes that control to HA.

3. On iOS / Android a long-press fires a native contextmenu event (~500ms)
   which cancels the touch sequence, racing the action-handler's hold timer
   (also ~500ms). Preventing contextmenu stops the browser's menu from
   appearing and lets hold fire reliably.

Also add user-select / -webkit-user-select: none to suppress the text-
selection callout that can appear on Android during a hold gesture.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/13412198-f96c-4dc5-b521-50e3525925f8

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: overlay opacity, blocked styling, row-specific vars, icon_position config

New CSS variables on the lock overlay:
- --uix-lock-opacity (default 0.5): overall overlay opacity
- --uix-lock-background-blocked: background for non-row permanently-blocked state
- --uix-lock-row-background / --uix-lock-row-border-radius: row-specific variants
  of the existing background/border-radius vars
- --uix-lock-row-outlined-blocked: CSS outline applied on a row overlay when
  the lock is in permanently-blocked state (no unlock path)
- --uix-lock-icon-position: CSS translate value for CSS-only icon positioning

New icon_position config key:
- Accepts {top, bottom, left, right} (numbers = px, strings = any CSS value)
- top/bottom are mutually exclusive; left/right are mutually exclusive
- Row-mold default: {top: 6px, left: 30px}
- Applied as position:relative + the given offsets on ha-icon
- --uix-lock-icon-position CSS var provides an independent CSS-only override
  via the translate CSS property

New public mold getter on UixForge so sparks can query the mold type.

New _isBlocked() helper on the lock spark: true when no lock entry matches,
permissive is false, and the user is not an admin (overlay shown, no unlock).

Docs updated with all new config keys and CSS variables.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/97500559-debf-4f59-8a28-213f689ed1ef

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Clarify icon_position default

* fix: rename unlock_action to unlocked_action; fix hold by not blocking pointerdown

The HA action-handler singleton listens at document level. Calling
stopPropagation on pointerdown from the overlay's own listener was
preventing the event from ever reaching the document, so the hold
timer never started. The fix: only stop 'click' propagation (to block
parent card navigation) and 'contextmenu' (to block browser native
menu). The overlay's position (absolute, inset:0, pointer-events:all)
naturally captures pointer events without needing to stop propagation
on start events.

Also renames the config key unlock_action -> unlocked_action throughout
source and docs.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/d780e5cc-fca4-4881-a721-e296fbecf78b

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: add --uix-lock-background-unlocked; remove redundant contextmenu listener

- Add --uix-lock-background-unlocked (default: none) for the overlay
  unlocked state so --uix-lock-background only applies while locked.
  Restructures _updateOverlay to check _isUnlocked first for background,
  then applies row/blocked vars for locked state only. Border-radius and
  outline handling is unchanged (row vs non-row distinction preserved).
- Remove the contextmenu listener from the overlay. HA's action-handler
  already registers a contextmenu handler at the document level when the
  element is bound via actionHandlerBind, making our listener redundant.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/4579497a-c85b-4cca-8405-32012d52417d

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: fade lock icon when no icon_unlocked is configured

When icon_unlocked is not set in config, the lock icon fades to opacity 0
(via a 0.25s ease transition) instead of being replaced with an open-lock
icon. When icon_unlocked IS set, the icon swaps as before at full opacity.

Tracks _hasUnlockedIcon to distinguish between "not set" and the default
fallback value. Docs updated to reflect the new default behaviour.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/283a2296-87c6-476c-aa74-c23cdc07fd7b

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: configurable fade duration for lock icon via --uix-lock-icon-fade-duration

When icon_unlocked is not set, the lock icon fades out using the duration
controlled by --uix-lock-icon-fade-duration (default 2s). When icon_unlocked
IS set, the icon-swap transition stays at the fast 0.25s.

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/153f12ac-bab1-4781-9a20-be279a13cb40

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* feat: add parseDuration helper and use it for all lock spark duration fields

- Add parse-duration npm dependency
- Create src/helpers/common/parse-duration.ts helper (similar to button-card)
- Update lock spark: duration, retry_delay, max_retries_delay all accept
  human-readable strings like "5s", "1m", "30s" in addition to ms numbers
- Update docs to reflect new string|number type for duration fields

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/20534646-7082-46c8-a974-f3a16c9229f5

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix: don't change icon color when fading out lock icon (no unlocked icon set)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/a2897ada-d2cb-499b-9853-8ca5797dfc31

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Update documentation and example animations

* Change locked icon to outline version

* Add styling example

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(docs): Lock spark beta note

* chore(release): 6.1.0-beta.15 [skip ci]

## [6.1.0-beta.15](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.14...v6.1.0-beta.15) (2026-04-07)

### ⭐ New Features

* **forge:** add lock spark for UIX Forge ([#178](https://github.com/Lint-Free-Technology/uix/issues/178)) ([24e2860](https://github.com/Lint-Free-Technology/uix/commit/24e28607505b1703e28ad9bc9128619010c483e9))

* chore(docs): Add admin info to Lock spark documentation

* fix(forge): allow and pass state_color through to forged element in row mold (#180)

* Initial plan

* Fix: Allow state_color config key in uix-forge and pass through to forged element

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/eeee7a91-0741-48c7-909a-47976dbef67a

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(release): 6.1.0-beta.16 [skip ci]

## [6.1.0-beta.16](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.15...v6.1.0-beta.16) (2026-04-07)

### 🐞 Bug Fixes

* **forge:** allow and pass state_color through to forged element in row mold ([#180](https://github.com/Lint-Free-Technology/uix/issues/180)) ([e78a87e](https://github.com/Lint-Free-Technology/uix/commit/e78a87e79e92fc88a00ad73b4b7d5267de76b19e))

* feat(lock-spark): Support confirmation object with title and text in lock spark (#182)

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/ab822f2a-0561-4e54-a9c3-390ca4856cab

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(release): 6.1.0-beta.17 [skip ci]

## [6.1.0-beta.17](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.16...v6.1.0-beta.17) (2026-04-07)

### ⭐ New Features

* **lock-spark:** Support confirmation object with title and text in lock spark ([#182](https://github.com/Lint-Free-Technology/uix/issues/182)) ([40b2551](https://github.com/Lint-Free-Technology/uix/commit/40b2551adf87732f5a1181e082b1bd1020974526))

* fix(lock-spark): Update icon display to inline-block so --uix-icon-position applies

* chore(docs): Update styling example for lock spark

* fix(lock-spark): prevent overlay continuous updates (#183)

* chore(docs): Update introduction and details about UIX

Clarified the introduction and added details about UIX components.

* fix(lock-spark): prevent overlay flashing on every hass state update

- Add `_visualNeedsUpdate` flag, set true on construction and config changes
- Guard `actionHandlerBind` + `_updateOverlay` with `if (isNew || _visualNeedsUpdate)` so they only run when the overlay is first created or the config changes, not on every hass update
- Move `window.getComputedStyle` positioning check inside the new-overlay block so it only runs once
- Fix `overlay.style.removeProperty("display")` → `setProperty("display", "flex")` in `_updateOverlay` to preserve the flex layout that centres the icon
- Merge dev branch so all current dev changes are included

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/1a49e456-bd3b-4697-a135-c2e9bca012e1

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

---------

Co-authored-by: Darryn Capes-Davis <dcapes-davis@outlook.com.au>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* fix(lock-spark): Set lock spark display to block by default and allow override by CSS

* chore(release): 6.1.0-beta.18 [skip ci]

## [6.1.0-beta.18](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.17...v6.1.0-beta.18) (2026-04-07)

### 🐞 Bug Fixes

* **lock-spark:** prevent overlay continuous updates ([#183](https://github.com/Lint-Free-Technology/uix/issues/183)) ([9073462](https://github.com/Lint-Free-Technology/uix/commit/907346251c5daf36bb610bc5ef9ff924db63448f))
* **lock-spark:** Set lock spark display to block by default and allow override by CSS ([3879182](https://github.com/Lint-Free-Technology/uix/commit/3879182a924924f9aca8d6c8705eff828903f375))
* **lock-spark:** Update icon display to inline-block so --uix-icon-position applies ([37e3175](https://github.com/Lint-Free-Technology/uix/commit/37e3175e6c64d698ebe5dc7e4bc6ed39c967dbf2))

* feat(forge): Resolve `!secret` references in foundry configs (#184)

* feat: resolve !secret references in foundry configs before sending to frontend

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/25b29d17-044b-475f-81cf-dec742b8412a

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* chore(docs): Include note in foundry docs  on secret resolution

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* feat(lock-spark): add `code_dialog` config to lock spark for customising the PIN/passphrase dialog title, submit_text and cancel_text (#185)

* feat: add code_dialog config option to lock spark for customizing PIN/passphrase dialog

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/84a71924-9539-4a42-9acf-90ff4659ccdb

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Change confirm_text to submit_text to align with Home Assistant options. Update doco with note about expectations for code dialog.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(release): 6.1.0-beta.19 [skip ci]

## [6.1.0-beta.19](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.18...v6.1.0-beta.19) (2026-04-07)

### ⭐ New Features

* **forge:** Resolve `!secret` references in foundry configs ([#184](https://github.com/Lint-Free-Technology/uix/issues/184)) ([13cde4f](https://github.com/Lint-Free-Technology/uix/commit/13cde4f67a91bae718cc613d406e178c825d4998))
* **lock-spark:** add `code_dialog` config to lock spark for customising the PIN/passphrase dialog title, submit_text and cancel_text ([#185](https://github.com/Lint-Free-Technology/uix/issues/185)) ([53c4f90](https://github.com/Lint-Free-Technology/uix/commit/53c4f90c3cb3ffdc1cf367137419d47cb25ef612))

* fix(forge): Templates in uix in element config cause element not to show due to unfulfilled ready promise

* chore(release): 6.1.0-beta.20 [skip ci]

## [6.1.0-beta.20](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.19...v6.1.0-beta.20) (2026-04-07)

### 🐞 Bug Fixes

* **forge:** Templates in uix in element config cause element not to show due to unfulfilled ready promise ([12e4ac7](https://github.com/Lint-Free-Technology/uix/commit/12e4ac737deb6c6ca212a7c0962c4ea5e2be749e))

* feat(forge): merge forge.macros into uix.macros for forge and forgedElement (#187)

* feat: merge forge.macros into forgeConfig.uix.macros and forgedElementConfig.uix.macros

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/9139daff-ed46-4ac1-9eb5-5ab30797a131

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* refactor: deduplicate macro merge logic in forgedElementConfig getter

Agent-Logs-Url: https://github.com/Lint-Free-Technology/uix/sessions/9139daff-ed46-4ac1-9eb5-5ab30797a131

Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>

* Update documentation regarding macros, availability and usage across forge, forge UIX Styling and element UIX Styling

* chore(docs): Clarify sections template support

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
Co-authored-by: dcapslock <dcapes-davis@outlook.com.au>

* chore(release): 6.1.0-beta.21 [skip ci]

## [6.1.0-beta.21](https://github.com/Lint-Free-Technology/uix/compare/v6.1.0-beta.20...v6.1.0-beta.21) (2026-04-08)

### ⭐ New Features

* **forge:** merge forge.macros into uix.macros for forge and forgedElement ([#187](https://github.com/Lint-Free-Technology/uix/issues/187)) ([82c3d0e](https://github.com/Lint-Free-Technology/uix/commit/82c3d0ed62a410104a7b0c7ac08fafa52162ca93))

* chore(docs): Remove beta notes for 6.1.0 release

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dcapslock <14122118+dcapslock@users.noreply.github.com>
## [6.1.0](v6.0.0...v6.1.0) (2026-04-08)

### ⭐ New Features

* **forge:** Add Button Spark ([#168](#168)) ([51cfbe8](51cfbe8)), closes [#166](#166)
* **forge:** add lock spark for UIX Forge ([#178](#178)) ([24e2860](24e2860))
* **forge:** add Search Spark for shadow DOM element mutation ([#136](#136)) ([3343b31](3343b31))
* **forge:** map spark with memory mode ([#177](#177)) ([9b60a99](9b60a99)), closes [#176](#176)
* **forge:** merge forge.macros into uix.macros for forge and forgedElement ([#187](#187)) ([82c3d0e](82c3d0e))
* **forge:** Resolve `!secret` references in foundry configs ([#184](#184)) ([13cde4f](13cde4f))
* **forge:** support multiple sparks of the same type ([#152](#152)) ([b0b2b37](b0b2b37))
* **lock-spark:** add `code_dialog` config to lock spark for customising the PIN/passphrase dialog title, submit_text and cancel_text ([#185](#185)) ([53c4f90](53c4f90))
* **lock-spark:** Support confirmation object with title and text in lock spark ([#182](#182)) ([40b2551](40b2551))
* **macros:** transitively resolve macro dependencies in buildMacros ([#175](#175)) ([82c55f8](82c55f8))
* **sections:** Support styling section backgrounds by UIX config. ([#149](#149)) ([b6b1946](b6b1946))

### 🐞 Bug Fixes

* **event-spark:** event spark events causing all forged elements with event spark to refresh even if forge_id does not match ([54a3202](54a3202))
* **forge sparks:** centralize spark lifecycle guards - stops growing prepend/append in search spark ([#172](#172)) ([1fc2446](1fc2446))
* **forge sparks:** Template updates not applying to sparks after first update ([1704219](1704219))
* **forge:** Add `delayed_hass` forge config option to suppress console errors on load for some custom cards. e.g. apexcharts_card ([8592c12](8592c12))
* **forge:** allow and pass state_color through to forged element in row mold ([#180](#180)) ([e78a87e](e78a87e))
* **forge:** Console errors when editing UIX Forge in UI editor ([afebb46](afebb46))
* **forge:** Templates in uix in element config cause element not to show due to unfulfilled ready promise ([12e4ac7](12e4ac7))
* **lock-spark:** prevent overlay continuous updates ([#183](#183)) ([9073462](9073462))
* **lock-spark:** Set lock spark display to block by default and allow override by CSS ([3879182](3879182))
* **lock-spark:** Update icon display to inline-block so --uix-icon-position applies ([37e3175](37e3175))
* **toast:** Refactor for timing reliability ([1eb319f](1eb319f))
* **tooltip-spark:** fix flickering of tooltip spark from constant recreation ([#174](#174)) ([f508bc7](f508bc7))

### 📦 Dependency Upgrades

* bump @babel/preset-env from 7.23.6 to 7.29.2 ([#145](#145)) ([ecd93ae](ecd93ae))
* bump @rollup/plugin-babel from 6.0.4 to 7.0.0 ([#146](#146)) ([c8d690e](c8d690e))
* bump lit from 3.1.0 to 3.3.2 ([#161](#161)) ([97816ce](97816ce))
* bump rollup from 2.80.0 to 4.60.1 ([#143](#143)) ([2400e1b](2400e1b))
* bump rollup-plugin-typescript2 from 0.36.0 to 0.37.0 ([#144](#144)) ([7475217](7475217))

### ⚙️ Miscellaneous

* **button-spark:** add `icon` config for icon-only buttons ([#169](#169)) ([32b52b7](32b52b7))
* **button-spark:** Adjust icon button height and alignment ([70a22b5](70a22b5))
* **button-spark:** style matching Home Assistant icon button when using with icon only ([#170](#170)) ([ae5fdf0](ae5fdf0))
* **forge:** Provide action-handler scaffold for for UIX Forge Sparks ([#167](#167)) ([2d8144e](2d8144e))
* TypeScript 6 build errors and VSCode linting alignment ([#165](#165)) ([c68b011](c68b011))
@dcapslock dcapslock merged commit f493964 into dev Apr 8, 2026
4 checks passed
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

🎉 This PR is included in version 6.2.0-beta.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants