Repository navigation
fix(loadpoint): let a battery boost run together with Charge now - #1450
Conversation
A manual hold sets how much the car draws; a boost only lets the home battery cover the loadpoint's live draw above a reserve. The two answer different questions, and dispatch already counts the boost from the charger's measured power, whoever set it. Yet the boost preflight refused a loadpoint with a manual hold, the tick ended a running boost as soon as one started, and the EV modal disabled Boost while Charge now ran. An owner topping up before a trip could not have the battery cover it. Remove the manual-hold refusal and stop, the operator_hold stop reason and its labels, and the modal's "Stop the manual charge first" block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuerPFZFG88kgu8sWVHeq7
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
miravoss26
left a comment
There was a problem hiding this comment.
Lets a battery boost run alongside a Charge now hold instead of getting refused/stopped by it — the two answer different questions (how much the car draws vs. what covers that draw), and the changeset states fuse/battery/charger limits still apply, which the diff bears out: the site-safety, surplus-only and fuse-guard checks are untouched, only the operator_hold gate is removed.
Correctness: the new TestBatteryBoostRunsWithChargeNow covers both orderings (hold-first, boost-first) and asserts the boost stays active and totals the held draw correctly. The removed operator_hold stop reason is cleaned up consistently across battery_boost.go, its tests, web/app.js and web/loadpoints.js — no dangling references I could find. CI is green across the board.
Security: no new deps, no network/authz surface changes.
Safe to merge from my read.
Problem
The owner started Charge now to top up before a trip, then wanted Boost from home battery so the house battery would cover the charge. The boost could not be used:
EnableBatteryBoostrefused a loadpoint with a manual hold;operator_holdas soon as Charge now started.The two do not conflict:
ActiveBatteryBoostTotalsalready counts the charger's measuredCurrentPowerW, whoever set it, and dispatch caps the cover at that draw.The exclusion had no safety role;
controller.goitself documents the two as separate.Change
operator_holdstop reason and its labels inapp.jsandloadpoints.js.Evidence
TestBatteryBoostRunsWithChargeNowruns hold-then-boost and boost-then-hold. In both orders the boost stays active after a tick and covers the held 11 kW above the 30 % reserve. With master'sbattery_boost.goit fails: "boost refused beside Charge now: loadpoint operator hold is active".go test ./internal/loadpoint ./internal/api ./cmd/ftwpasses, andnpm test(LANG=C) passes 639/639. The web test now asserts the block is gone.#1177 edits
web/app.jsandweb/loadpoints.jsin its polling code, not in the boost view.🤖 Generated with Claude Code
https://claude.ai/code/session_01MuerPFZFG88kgu8sWVHeq7