Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ff20a35
Metrics: do not rebase energy baseline on a lower meter total (#34218)
andig Oct 3, 2026
3f62e6c
Fixes: Optimize page is slow with multi-day horizons (#34096)
jeremiahpslewis Oct 3, 2026
4db3857
RCT: add discharge battery mode (#34107)
Maschga Oct 3, 2026
977517c
Tariff (Groupe E): compute API window in UTC (#34180)
alexdess Oct 3, 2026
dd834a3
Issue agent: agent job never pushes, open-pr job does from a fresh ch…
andig Oct 3, 2026
f4edd3b
Discovery: report only devices with host param (#34375)
naltatis Oct 3, 2026
5d20df4
Templates: add Zendure and openWB Pro discovery hints (#34377)
andig Oct 3, 2026
8174e23
Discovery: add command for network scan and report (#34376)
andig Oct 3, 2026
e271f1c
Tariff (EKZ, Green Grid Compass, DWD): compute API windows in UTC (#3…
andig Oct 3, 2026
2e160da
Tariff (EPEX): add missing providers epexprijzen-nl (#34379)
japsen Oct 3, 2026
0e1f7cb
Templates: validate modbus host like the plain host param (#34381)
andig Oct 3, 2026
bf217c1
Issue agent: grant pull-requests write to the re-analyze caller (#34382)
andig Oct 3, 2026
776ecd2
chore: tidy json flag check and host names (#34383)
andig Oct 3, 2026
3a0ef0c
Tariff (ESIOS): apply Canarias prices per local hour (#34384)
andig Oct 3, 2026
007582d
Loadpoint: accept status C while disabled for continuous devices (#34…
andig Oct 3, 2026
ce880ed
Issue agent: read referenced discussions (#34399)
andig Oct 4, 2026
6930724
Issue agent: close reports that kept the UI paste placeholder (#34400)
andig Oct 4, 2026
697b34f
Heating: use active phases for current to power conversion (#34402)
andig Oct 4, 2026
ec1e8a9
docs: replace dead documentation links (#34391)
tas50 Oct 4, 2026
f39502c
chore: pin GitHub Actions to commit SHAs (#34389)
tas50 Oct 4, 2026
7bf1e85
Mennekes AMTRON 4You/4Business (OCPP): Add 1p3p capability (#34373)
benesolar Oct 4, 2026
7450be7
Issue agent: PR labeler applies bug only for issues typed Bug (#34406)
andig Oct 4, 2026
d77d924
FoxESS H3 Smart: hold via discharge current limit, fix write order (B…
andig Oct 4, 2026
0fe103e
Fronius Verto Plus: add curtail support (#34411)
github-actions[bot] Oct 4, 2026
9f3f897
chore: minor
andig Oct 4, 2026
07497b6
chore: upgrade modules
andig Oct 4, 2026
ae20c49
Issue agent: always apply an area label, re-add waiting for feedback …
andig Oct 4, 2026
fbc63f4
New Energy UI: historical data, analysis, savings (#33989)
naltatis Oct 5, 2026
6e8cd7d
Backport command: create the release branch with the deploy token (#3…
andig Oct 5, 2026
77256f3
Merge evcc master (29 Commits bis 6e8cd7d6)
SolarPower2024 Oct 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/actions/build-toolchain/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@ inputs:
runs:
using: composite
steps:
- uses: actions/setup-go@v7
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
go-version-file: go.mod
cache: false # managed explicitly below to keep the scoped namespaces

- uses: voidzero-dev/setup-vp@v1
- uses: voidzero-dev/setup-vp@250f29ce396baf5e8f24498e17c0dfdebabc26eb # v1
with:
node-version: "26"
cache: true

# Writes are namespaced by cache-scope so a PR build cannot poison the
# shared "main" cache; PRs still read it through the fallback restore-key.
- name: Go module and build cache
uses: actions/cache@v6
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: |
~/.cache/go-build
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/docker-cache/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ runs:
# cache, which still covers the third-party packages dominating the build.
- name: Cache mount contents
id: cache
uses: actions/cache@v6
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: .docker-cache
key: ${{ runner.os }}-docker-mounts-${{ inputs.cache-scope }}-${{ hashFiles('go.sum', 'package-lock.json') }}
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/claude-code-review-run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
steps:
- name: Check for PR-number artifact
id: check
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v7
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const { data } = await github.rest.actions.listWorkflowRunArtifacts({
Expand All @@ -42,7 +42,7 @@ jobs:

- name: Download PR number
if: steps.check.outputs.found == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v4
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: pr-number
run-id: ${{ github.event.workflow_run.id }}
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
# publish a commit status on the PR head SHA. This surfaces a "Claude Code
# Review" check next to the regular CI jobs.
- name: Report review pending
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v7
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
await github.rest.repos.createCommitStatus({
Expand All @@ -93,7 +93,7 @@ jobs:

# Default checkout (base ref) only — do NOT check out the untrusted PR head.
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 1

Expand Down Expand Up @@ -132,7 +132,7 @@ jobs:
if: always()
env:
OUTCOME: ${{ steps.review.outcome }}
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v7
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const ok = process.env.OUTCOME === 'success';
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
run: echo "$PR_NUMBER" > pr-number.txt

- name: Upload PR number
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: pr-number
path: pr-number.txt
Expand Down
201 changes: 153 additions & 48 deletions .github/workflows/claude-issue-agent-run.yml

Large diffs are not rendered by default.

24 changes: 17 additions & 7 deletions .github/workflows/claude-issue-agent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ jobs:
github.event_name == 'issues' &&
(github.event.action == 'opened' || github.event.sender.login == github.event.issue.user.login)
permissions:
contents: write # create branch + push PR fix
issues: write # add labels + comment analysis
pull-requests: write # open PR fix
contents: write # push the fix branch (open-pr job only, the agent job reduces to read)
issues: write # add labels + comment analysis + close duplicates
pull-requests: write # open the draft PR
discussions: read # read referenced discussions
id-token: write
actions: read
uses: ./.github/workflows/claude-issue-agent-run.yml
Expand Down Expand Up @@ -56,7 +57,7 @@ jobs:
outputs:
run: ${{ steps.check.outputs.run }}
steps:
- uses: actions/github-script@v9
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
id: check
with:
script: |
Expand All @@ -82,6 +83,8 @@ jobs:
permissions:
contents: read # explore the codebase for the answer; no fix/PR in analyze mode
issues: write # comment
pull-requests: write # the reusable job requests it, a caller may not grant less
discussions: read # read referenced discussions
id-token: write
actions: read
uses: ./.github/workflows/claude-issue-agent-run.yml
Expand All @@ -107,7 +110,7 @@ jobs:
permissions:
issues: write
steps:
- uses: actions/github-script@v9
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const { owner, repo } = context.repo;
Expand Down Expand Up @@ -148,7 +151,7 @@ jobs:
# base repo checkout only — never the untrusted PR head; the agent reads PR
# metadata via gh and treats it as data, not instructions, and runs no PR code.
- name: Checkout repository
uses: actions/checkout@v7
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0

Expand All @@ -166,7 +169,7 @@ jobs:
additional_permissions: |
actions: read
# labeling is a classification over the file list, Haiku is enough
claude_args: '--model claude-haiku-4-5 --allowed-tools "Read,Grep,Glob,Bash(gh label list:*),Bash(gh pr view:*),Bash(gh pr diff:*),Bash(gh pr edit:*)" --disallowed-tools "Task"'
claude_args: '--model claude-haiku-4-5 --allowed-tools "Read,Grep,Glob,Bash(gh label list:*),Bash(gh pr view:*),Bash(gh pr diff:*),Bash(gh pr edit:*),Bash(gh api:*)" --disallowed-tools "Task"'
prompt: |
You label pull requests for the evcc repository.
Work on PR #${{ github.event.pull_request.number }}. Fetch its title,
Expand All @@ -191,5 +194,12 @@ jobs:
Skip any label already present. Prefer a couple of precise labels over
many loose ones; if nothing clearly matches, apply none.

The `bug` label qualifies a pull request for backport into a bugfix
release, so be reluctant with it. A fix-looking diff or body is not
enough. Apply `bug` ONLY when the body references an issue
(`fixes #N`, `closes #N`, `#N`) whose type is Bug; check with
`gh api repos/${{ github.repository }}/issues/N --jq '.type.name'`.
No referenced issue, or a referenced issue without type Bug: no `bug`.

Do NOT post a comment, modify any code, or push anything. Labeling is the
only action for pull requests.
6 changes: 3 additions & 3 deletions .github/workflows/cli-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ jobs:
contents: read

steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false

- uses: actions/setup-go@v7
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
go-version-file: go.mod

- uses: voidzero-dev/setup-vp@v1
- uses: voidzero-dev/setup-vp@250f29ce396baf5e8f24498e17c0dfdebabc26eb # v1
with:
node-version-file: ".node-version"
cache: true
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v7
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
Expand All @@ -71,7 +71,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.38.2
uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand Down Expand Up @@ -101,6 +101,6 @@ jobs:
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.38.2
uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
category: "/language:${{matrix.language}}"
1 change: 1 addition & 0 deletions .github/workflows/command-analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
contents: read # explore the codebase for the answer; no fix/PR in analyze mode
issues: write # comment + minimize the calling comment
pull-requests: write # comment on PR conversations
discussions: read # read referenced discussions
id-token: write
actions: read
uses: ./.github/workflows/claude-issue-agent-run.yml
Expand Down
13 changes: 8 additions & 5 deletions .github/workflows/command-backport.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:

steps:
- name: React to comment
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
await github.rest.reactions.createForIssueComment({
Expand All @@ -46,8 +46,11 @@ jobs:

- name: Resolve target branch
id: pr
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
# creating the release branch is subject to the release/** ruleset, which
# GITHUB_TOKEN cannot bypass
github-token: ${{ secrets.RELEASE_DEPLOY_TOKEN }}
script: |
const { owner, repo } = context.repo;

Expand Down Expand Up @@ -141,7 +144,7 @@ jobs:
core.setOutput('sha', pr.merge_commit_sha);
core.setOutput('title', pr.title);

- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
ref: ${{ steps.pr.outputs.target }}
Expand Down Expand Up @@ -202,7 +205,7 @@ jobs:

- name: Comment result
if: always()
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
env:
TARGET: ${{ steps.pr.outputs.target }}
URL: ${{ steps.create.outputs.url }}
Expand All @@ -225,7 +228,7 @@ jobs:

- name: Resolve command comment
if: always()
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
// collapse the /backport comment as resolved, the result was reported
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/command-fix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@ on:
types: [created]

# Triggered by a `/fix` comment on any issue or PR conversation, maintainers only.
# Delegates to the shared issue agent in fix mode, which investigates, pushes a
# fix branch, opens a PR, comments with the result, then minimizes the calling
# `/fix` comment as RESOLVED, whether or not a PR was opened.
# Delegates to the shared issue agent in fix mode, which investigates, commits a
# fix that a separate job pushes and opens as a PR, comments with the result,
# then minimizes the calling `/fix` comment as RESOLVED, whether or not a PR was
# opened.
jobs:
fix:
name: Fix on demand
if: |
startsWith(github.event.comment.body, '/fix') &&
contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
permissions:
contents: write # create branch + push PR fix
contents: write # push the fix branch (open-pr job only, the agent job reduces to read)
issues: write # comment + minimize the calling comment
pull-requests: write # open PR fix, comment on PR conversations
discussions: read # read referenced discussions
id-token: write
actions: read
uses: ./.github/workflows/claude-issue-agent-run.yml
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/command-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
pull-requests: write
steps:
- name: React to comment
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
await github.rest.reactions.createForIssueComment({
Expand All @@ -35,7 +35,7 @@ jobs:
content: 'eyes',
});

- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
ref: master
fetch-depth: 0
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:
pull-requests: write
steps:
- name: Comment result
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const num = context.payload.issue.number;
Expand All @@ -89,7 +89,7 @@ jobs:
await github.rest.issues.createComment({ owner, repo, issue_number: num, body });

- name: Resolve command comment
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
// collapse the /nightly comment as resolved now that the build is done
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/command-pr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
platforms: ${{ steps.parse.outputs.platforms }}
steps:
- name: React to comment
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
await github.rest.reactions.createForIssueComment({
Expand Down Expand Up @@ -77,7 +77,7 @@ jobs:
matrix:
arch: ${{ fromJSON(needs.prep.outputs.archs) }}
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
ref: ${{ needs.prep.outputs.sha }}
fetch-depth: 0
Expand All @@ -102,7 +102,7 @@ jobs:
gzip -9 "evcc-linux-${{ matrix.arch }}"

- name: Upload binary
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: evcc-pr-${{ github.event.issue.number }}-linux-${{ matrix.arch }}
path: evcc-linux-${{ matrix.arch }}.gz
Expand All @@ -116,7 +116,7 @@ jobs:
permissions:
contents: read
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
ref: ${{ needs.prep.outputs.sha }}
fetch-depth: 0
Expand Down Expand Up @@ -157,7 +157,7 @@ jobs:
pull-requests: write
steps:
- name: Comment result
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
const num = context.payload.issue.number;
Expand Down Expand Up @@ -195,7 +195,7 @@ jobs:
}

- name: Resolve command comment
uses: actions/github-script@v9
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
with:
script: |
// collapse the /build comment as resolved now that the build is done
Expand Down
Loading
Loading