Commit graph

813 commits

Author SHA1 Message Date
Julian Pawlowski
480d23a8ee
Merge pull request #183 from jpawlowski/dependabot/github_actions/astral-sh/setup-uv-9.0.0
Some checks are pending
Lint / Ruff (push) Waiting to run
Validate / Hassfest validation (push) Waiting to run
Validate / HACS validation (push) Waiting to run
chore(deps): bump astral-sh/setup-uv from 8.3.1 to 9.0.0
2026-07-23 07:24:20 +02:00
dependabot[bot]
77e3e157a2
chore(deps): bump astral-sh/setup-uv from 8.3.1 to 9.0.0
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 8.3.1 to 9.0.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](f98e069381...c771a70e62)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 20:43:11 +00:00
Julian Pawlowski
105425eb4e
Merge pull request #181 from jpawlowski/dependabot/github_actions/actions/checkout-7.0.1
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
chore(deps): bump actions/checkout from 7.0.0 to 7.0.1
2026-07-21 08:22:42 +02:00
Julian Pawlowski
02fe985991
Merge pull request #182 from jpawlowski/dependabot/github_actions/actions/setup-python-7
chore(deps): bump actions/setup-python from 6 to 7
2026-07-21 08:22:32 +02:00
dependabot[bot]
327c0012a0
chore(deps): bump actions/setup-python from 6 to 7
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v6...v7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 20:43:50 +00:00
dependabot[bot]
9f980bc2f3
chore(deps): bump actions/checkout from 7.0.0 to 7.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v7...v7.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 20:43:47 +00:00
Julian Pawlowski
3af8ec1a96
Merge pull request #180 from jpawlowski/dependabot/pip/colorlog-gte-6.11.0-and-lt-6.12.0
Some checks failed
Validate / HACS validation (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
chore(deps): update colorlog requirement from <6.11.0,>=6.10.1 to >=6.11.0,<6.12.0
2026-07-19 13:00:48 +02:00
dependabot[bot]
18ed8ae285
chore(deps): update colorlog requirement
Updates the requirements on [colorlog](https://github.com/borntyping/python-colorlog) to permit the latest version.
- [Release notes](https://github.com/borntyping/python-colorlog/releases)
- [Commits](https://github.com/borntyping/python-colorlog/compare/v6.10.1...v6.11.0)

---
updated-dependencies:
- dependency-name: colorlog
  dependency-version: 6.11.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-17 20:43:11 +00:00
Julian Pawlowski
8a51fe4319
Merge pull request #179 from jpawlowski/dependabot/pip/ruff-gte-0.15.22-and-lt-0.16.0
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-07-17 08:22:03 +02:00
dependabot[bot]
877a106afc
chore(deps): update ruff requirement
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.21...0.15.22)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.22
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-16 20:43:35 +00:00
Julian Pawlowski
a983fb3fe5
Merge pull request #178 from jpawlowski/dependabot/github_actions/actions/setup-node-7
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-07-15 08:57:00 +02:00
Julian Pawlowski
5ee4a8515b
Merge pull request #177 from jpawlowski/dependabot/devcontainers/ghcr.io/devcontainers/features/rust-1.5.1 2026-07-15 08:56:51 +02:00
dependabot[bot]
0e2f78bc07
chore(deps): bump actions/setup-node from 6 to 7
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-14 20:42:59 +00:00
dependabot[bot]
d0bf498df0
chore(deps): bump ghcr.io/devcontainers/features/rust
Bumps ghcr.io/devcontainers/features/rust from 1.5.0 to 1.5.1.

---
updated-dependencies:
- dependency-name: ghcr.io/devcontainers/features/rust
  dependency-version: 1.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-14 20:42:55 +00:00
Julian Pawlowski
205f6a64d6
Merge pull request #176 from jpawlowski/dependabot/npm_and_yarn/docs/user/typescript-7.0.2
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-07-12 09:03:10 +02:00
Julian Pawlowski
d8cfd880e8
Merge pull request #174 from jpawlowski/dependabot/npm_and_yarn/docs/developer/typescript-7.0.2 2026-07-12 09:03:00 +02:00
Julian Pawlowski
146bbba430
Merge pull request #172 from jpawlowski/dependabot/pip/ruff-gte-0.15.21-and-lt-0.16.0 2026-07-12 09:02:45 +02:00
Julian Pawlowski
f77ed4add7
Merge pull request #175 from jpawlowski/dependabot/npm_and_yarn/docs/user/docusaurus-ece06190c5 2026-07-12 09:02:31 +02:00
Julian Pawlowski
fa2c2cbf64
Merge pull request #173 from jpawlowski/dependabot/npm_and_yarn/docs/developer/docusaurus-ece06190c5 2026-07-12 09:02:19 +02:00
dependabot[bot]
00d581be71
chore(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /docs/user
Bumps [typescript](https://github.com/microsoft/TypeScript) from 6.0.3 to 7.0.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](https://github.com/microsoft/TypeScript/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 20:45:12 +00:00
dependabot[bot]
089b0dbfda
chore(deps): bump the docusaurus group in /docs/user with 7 updates
Bumps the docusaurus group in /docs/user with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) | `3.10.1` | `3.10.2` |
| [@docusaurus/faster](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-faster) | `3.10.1` | `3.10.2` |
| [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) | `3.10.1` | `3.10.2` |
| [@docusaurus/theme-mermaid](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-theme-mermaid) | `3.10.1` | `3.10.2` |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.10.1` | `3.10.2` |
| [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.10.1` | `3.10.2` |
| [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) | `3.10.1` | `3.10.2` |


Updates `@docusaurus/core` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus)

Updates `@docusaurus/faster` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-faster)

Updates `@docusaurus/preset-classic` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-preset-classic)

Updates `@docusaurus/theme-mermaid` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-theme-mermaid)

Updates `@docusaurus/module-type-aliases` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/tsconfig` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-tsconfig)

Updates `@docusaurus/types` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-types)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/faster"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/preset-classic"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/theme-mermaid"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/tsconfig"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/types"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 20:44:58 +00:00
dependabot[bot]
3fd540cae9
chore(deps-dev): bump typescript from 6.0.3 to 7.0.2 in /docs/developer
Bumps [typescript](https://github.com/microsoft/TypeScript) from 6.0.3 to 7.0.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](https://github.com/microsoft/TypeScript/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 20:44:56 +00:00
dependabot[bot]
31c2e68b6c
chore(deps): bump the docusaurus group in /docs/developer with 7 updates
Bumps the docusaurus group in /docs/developer with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) | `3.10.1` | `3.10.2` |
| [@docusaurus/faster](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-faster) | `3.10.1` | `3.10.2` |
| [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) | `3.10.1` | `3.10.2` |
| [@docusaurus/theme-mermaid](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-theme-mermaid) | `3.10.1` | `3.10.2` |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.10.1` | `3.10.2` |
| [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.10.1` | `3.10.2` |
| [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) | `3.10.1` | `3.10.2` |


Updates `@docusaurus/core` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus)

Updates `@docusaurus/faster` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-faster)

Updates `@docusaurus/preset-classic` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-preset-classic)

Updates `@docusaurus/theme-mermaid` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-theme-mermaid)

Updates `@docusaurus/module-type-aliases` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/tsconfig` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-tsconfig)

Updates `@docusaurus/types` from 3.10.1 to 3.10.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.2/packages/docusaurus-types)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/faster"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/preset-classic"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/theme-mermaid"
  dependency-version: 3.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/tsconfig"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
- dependency-name: "@docusaurus/types"
  dependency-version: 3.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: docusaurus
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-10 20:44:44 +00:00
dependabot[bot]
3123076600
chore(deps): update ruff requirement
---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.21
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 20:43:22 +00:00
Julian Pawlowski
ba9681609c
Merge pull request #170 from jpawlowski/dependabot/github_actions/astral-sh/setup-uv-8.3.1
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
chore(deps): bump astral-sh/setup-uv from 8.3.0 to 8.3.1
2026-07-08 12:34:08 +02:00
dependabot[bot]
c09f9c5052
chore(deps): bump astral-sh/setup-uv from 8.3.0 to 8.3.1
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 8.3.0 to 8.3.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](d31148d669...f98e069381)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 8.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-07 20:42:55 +00:00
Julian Pawlowski
9a98de8a79
Merge pull request #169 from jpawlowski/dependabot/github_actions/astral-sh/setup-uv-8.3.0
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-07-07 08:35:07 +02:00
dependabot[bot]
160e9a8356
chore(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.0
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 8.2.0 to 8.3.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](fac544c07d...d31148d669)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 20:43:38 +00:00
Julian Pawlowski
2f202dc186 refactor(generate-notes): improve Copilot CLI integration for release notes generation
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
Auto-Tag on Version Bump / Check and create version tag (push) Has been cancelled
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Enhance the handling of the Copilot CLI to ensure better user-focused output and prevent issues with empty responses. Adjustments include using a pipe for input and adding checks for output validity.

Impact: Users receive more accurate and user-friendly release notes without technical jargon.
2026-07-04 19:18:04 +00:00
Julian Pawlowski
1694431f26 chore(devcontainer): add AI extensions for enhanced development experience
Included Anthropic Claude and OpenAI ChatGPT extensions to support AI-assisted coding features.

User-Impact: Developers can leverage AI tools for improved productivity and code suggestions.
2026-07-04 18:50:24 +00:00
Julian Pawlowski
49ea70ed9f chore(auto-tag): explicitly dispatch release workflow after tag creation
Add a step to trigger the release notes workflow after creating a version tag. This ensures that the release notes are generated even when the tag push does not automatically trigger the workflow due to GitHub's recursion guard.

Impact: Users will receive timely release notes corresponding to new version tags.
2026-07-04 18:34:31 +00:00
Julian Pawlowski
de6da790ab chore(release): bump version to 0.32.0 2026-07-04 18:25:27 +00:00
Julian Pawlowski
569a7cb73a Merge branch 'main' of https://github.com/jpawlowski/hass.tibber_prices 2026-07-04 18:24:22 +00:00
Julian Pawlowski
13b9870f45 fix(get_chartdata): use proper statistics.median for chart metadata
_calculate_metadata()'s inline calc_stats() computed the median as a
naive sorted(data)[len(data) // 2], which returns the upper-middle
value for even-length datasets instead of averaging the two middle
values. A full day is always an even interval count (96 quarter-hours
or 24 hours), so this silently overstated "median" and
"median_position" in nearly every price_stats block of the
get_chartdata response. The rest of the codebase already has a
correct calculate_median() in utils/average.py; this was an isolated
inline duplicate with the bug.

Impact: get_chartdata's price_stats.combined/dayN.median and
median_position now report the statistically correct median for
chart annotations and metadata-driven dashboards.
2026-07-04 18:23:25 +00:00
Julian Pawlowski
1b207f0db1 fix(services): correct min_distance_from_avg direction for negative prices
check_min_distance_from_avg() computed the distance threshold as
range_avg * (1 ± ratio). Tibber prices can go negative during grid
oversupply, and multiplying a negative range_avg directly flips the
intended direction: e.g. avg * 1.05 makes a negative average MORE
negative (i.e. cheaper), which is the wrong direction for a
"most expensive" threshold check, and analogously wrong for
"cheapest" checks.

Compute the threshold as range_avg ± abs(range_avg) * ratio instead,
matching the sign-safe normalization pattern already used for
min_distance_from_avg in the period system
(coordinator/period_handlers/level_filtering.py). Behavior for
positive averages (the common case) is unchanged.

Used by find_cheapest_block, find_cheapest_hours, and plan_charging.

Impact: min_distance_from_avg now correctly filters cheapest/most
expensive windows during negative-price periods instead of silently
accepting windows in the wrong direction relative to the search range
average.
2026-07-04 18:23:06 +00:00
Julian Pawlowski
95004efa2d fix(services): prevent power_profile truncation during relaxation
find_cheapest_block, find_cheapest_hours, and find_cheapest_schedule
accept an optional power_profile (fixed per-interval watt array
matching the requested duration/task length). When allow_relaxation
was enabled and no full-duration window could be found, the
duration-reduction relaxation phase silently reduced the interval
count without shrinking power_profile accordingly. Downstream code
(find_cheapest_contiguous_window, calculate_window_statistics,
_find_cheapest_window_in_pool) then truncated the profile from the
front to match, dropping trailing appliance-cycle phases and using
the wrong per-interval weights for both window selection and the
reported cost estimate.

Disable duration-reduction relaxation whenever a power_profile is
supplied (find_cheapest_schedule guards per-task via
any_task_has_power_profile); distance and level-filter relaxation
phases remain available since they don't affect interval count.

Impact: Services with a power_profile no longer silently pick a
shorter window with mismatched power weighting during relaxation;
they now correctly report no window found if the full duration isn't
available, preserving the accuracy of appliance-cycle cost estimates.
2026-07-04 18:22:44 +00:00
Julian Pawlowski
2ad225f26d test(services): add end-to-end regression test for must_finish_by fix
Add a real (non-mocked) end-to-end test exercising apply_must_finish_by
and resolve_search_range together with a range-filtering fake pool,
reproducing the exact scenario from GH #168: a naive must_finish_by
datetime combined with search_start_day_offset: 0. The underlying fix
already landed in db5d172 but had no test covering the full request
pipeline (only individual helpers were mocked in existing tests).

Release-Notes: skip
User-Impact: none
2026-07-04 18:21:58 +00:00
Julian Pawlowski
36e9cdf4b9 fix(find_cheapest_schedule): retry valid window start after time gaps
_find_cheapest_window_in_pool() scans for contiguous available blocks
when scheduling multiple tasks. When a block-in-progress hit a
temporal gap (e.g. from price-level filtering removing intervals from
the middle of the search range, or missing API data), the scanner
jumped to i = j + 1 instead of i = j, silently skipping the interval
right after the gap as a valid — sometimes cheaper — window start.

Distinguish 'unavailable slot' (correctly skipped via j + 1) from
'temporal gap' (must retry at j, since that slot was never actually
tested as a window start).

Impact: find_cheapest_schedule can now find the true cheapest window
for a task when the search range contains time gaps, instead of
occasionally picking a more expensive window right after such a gap.
2026-07-04 18:18:42 +00:00
Julian Pawlowski
e4c208b376
Merge pull request #152 from ricklambrechts/update-dutch-pricing
Update Dutch energy price examples
2026-07-04 19:49:14 +02:00
Julian Pawlowski
b8e40bfa3b fix(services): prevent plan_charging overcharge from segment-constraint bridging
apply_segment_constraints could add far more grid energy than requested when
max_cycles_per_day or min_charge_duration_minutes forced bridging across
expensive gaps between cheap intervals. With max_cycles_per_day=1, isolated
cheap intervals were merged into one continuous segment by filling every gap
in between, without ever trimming the surplus back down, resulting in
achieved_soc_percent far above 100%.

Add a post-bridging trim step that removes segment-edge intervals (highest
price first) until total grid energy matches the requested target again,
while still respecting max_cycles_per_day/min_charge_duration_minutes and
never dropping below the target itself (fixed-power mode's expected
last-interval rounding overshoot is preserved).

A related edge case is also fixed: trimming could previously remove an
interval required to satisfy a must_reach_by deadline, silently flipping
deadline_met to False even though the overall energy target was still
reached. Deadline-critical intervals are now passed through as
protected_starts and are never removed during trimming.

Fixes #167

Impact: plan_charging no longer overcharges the battery/EV past the
requested target SoC when max_cycles_per_day or min_charge_duration_minutes
is set, and must_reach_by deadlines are honored even when those constraints
require bridging across expensive price gaps.
2026-07-04 17:43:04 +00:00
Julian Pawlowski
e94130953f
Merge pull request #166 from jpawlowski/dependabot/pip/ruff-gte-0.15.20-and-lt-0.16.0
Some checks failed
Deploy Docusaurus Documentation (Dual Sites) / Build and Deploy Documentation Sites (push) Has been cancelled
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
chore(deps): update ruff requirement from <0.16.0,>=0.15.16 to >=0.15.20,<0.16.0
2026-06-28 00:17:51 +02:00
Julian Pawlowski
7c87ab778f
Merge pull request #165 from jpawlowski/dependabot/github_actions/home-assistant/actions/hassfest-f4ca6f671bd429efb108c0f2fa0ae8af0215986c
chore(deps): bump home-assistant/actions/hassfest from d05c25388490cd662baef8495e1bc764c3386153 to f4ca6f671bd429efb108c0f2fa0ae8af0215986c
2026-06-28 00:17:28 +02:00
dependabot[bot]
0a9d2da1e2
chore(deps): bump home-assistant/actions/hassfest
Bumps [home-assistant/actions/hassfest](https://github.com/home-assistant/actions) from d05c25388490cd662baef8495e1bc764c3386153 to f4ca6f671bd429efb108c0f2fa0ae8af0215986c.
- [Release notes](https://github.com/home-assistant/actions/releases)
- [Commits](d05c253884...f4ca6f671b)

---
updated-dependencies:
- dependency-name: home-assistant/actions/hassfest
  dependency-version: f4ca6f671bd429efb108c0f2fa0ae8af0215986c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-27 21:57:58 +00:00
Julian Pawlowski
5608d1b269
Merge pull request #161 from jpawlowski/dependabot/github_actions/actions/checkout-7
chore(deps): bump actions/checkout from 6 to 7
2026-06-27 23:56:06 +02:00
Julian Pawlowski
15ec975750
Merge pull request #160 from jpawlowski/dependabot/devcontainers/ghcr.io/devcontainers/features/node-2.1.0
chore(deps): bump ghcr.io/devcontainers/features/node from 2.0.0 to 2.1.0
2026-06-27 23:55:53 +02:00
dependabot[bot]
100fbbcb3b
chore(deps): update ruff requirement
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.16...0.15.20)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.20
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-25 20:43:22 +00:00
dependabot[bot]
bf58137c43
chore(deps): bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-18 20:42:59 +00:00
dependabot[bot]
006f00071a
chore(deps): bump ghcr.io/devcontainers/features/node
Bumps ghcr.io/devcontainers/features/node from 2.0.0 to 2.1.0.

---
updated-dependencies:
- dependency-name: ghcr.io/devcontainers/features/node
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 20:43:52 +00:00
Julian Pawlowski
f402581379
Merge pull request #157 from jpawlowski/dependabot/github_actions/home-assistant/actions-d05c25388490cd662baef8495e1bc764c3386153
Some checks failed
Lint / Ruff (push) Has been cancelled
Validate / Hassfest validation (push) Has been cancelled
Validate / HACS validation (push) Has been cancelled
2026-06-10 07:58:53 +02:00
dependabot[bot]
b0165cf301
chore(deps): bump home-assistant/actions
Bumps [home-assistant/actions](https://github.com/home-assistant/actions) from 868e6cb4607727d764341a158d98872cd63fa658 to d05c25388490cd662baef8495e1bc764c3386153.
- [Release notes](https://github.com/home-assistant/actions/releases)
- [Commits](868e6cb460...d05c253884)

---
updated-dependencies:
- dependency-name: home-assistant/actions
  dependency-version: d05c25388490cd662baef8495e1bc764c3386153
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-09 20:43:05 +00:00