You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0f2fcda
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -421,3 +421,28 @@ v2026.07.26.9:
421
421
422
422
- JavaScript syntax, scheduler, tariff-selection, chart, encrypted-state, proxy restriction, static-GUI, standalone build, and Raspberry Pi package checks run through `npm run check`.
423
423
- GitHub Pages continues to publish `Octopus_IGO_Smart_Charging_Detector.html` as the root app.
assert.match(source,/functionscheduleFoxScheduleReadbacks\(\)[\s\S]*?\[5000,20000,40000\]/,'A changed Octopus dispatch must trigger prompt FoxESS REST readbacks in the visible dashboard');
290
+
assert.match(source,/currentDispatchesStr!==lastDispatchesStr[\s\S]*?scheduleFoxScheduleReadbacks\(\)/,'Dispatch changes must start the FoxESS scheduler readback sequence');
291
+
assert.match(source,/functiongetEffectiveOctopusRefreshInterval\(\)[\s\S]*?window\.linuxRole==='worker'[\s\S]*?LINUX_WORKER_OCTOPUS_INTERVAL_SECONDS/,'The Pi worker must detect added and removed dispatches faster than the visible dashboard polling interval');
292
+
assert.match(source,/document\.addEventListener\('visibilitychange'[\s\S]*?refreshLinuxDashboardAfterResume/,'A resumed iPhone dashboard must immediately refresh its Octopus and FoxESS state');
293
+
assert.match(source,/window\.addEventListener\('pageshow',refreshLinuxDashboardAfterResume\)/,'A restored iOS page must immediately refresh its scheduler state');
294
+
assert.match(source,/if\(!window\.linuxRuntime\|\|window\.linuxRole==='worker'\|\|!activeCredentials\)/,'Pi dashboard resume handling must not affect the standalone HTML edition');
273
295
assert.match(source,/asyncfunctionfetchJson/);
274
296
assert.match(source,/dispatchActiveNow/,'Auto-Resume must not cancel an active Smart Dispatch');
275
297
assert.match(source,/if\(isAutoPrice&&window\.importRates\?\.length\)/,'Target-price charging must use import rates');
@@ -284,6 +306,8 @@ assert.match(source, /getElementById\('importPriceChart'\)/, 'The import tariff
284
306
assert.match(source,/getElementById\('exportPriceChart'\)/,'The export tariff must use its own chart');
285
307
assert.match(source,/window\.linuxRole==='worker'/,'Only the Raspberry Pi worker may run unattended actions');
286
308
assert.match(source,/if\(!btn&&!canRunAutomaticActions\(\)\)returnfalse/,'LAN dashboards must not duplicate unattended schedule writes');
309
+
assert.match(source,/if\(isCurrentlyUpdatingMode\)\{[\s\S]*?pendingAutomationEvaluation=true;/,'A dispatch refresh during a FoxESS write must queue the newest automation schedule');
310
+
assert.match(source,/if\(pendingAutomationEvaluation\)\{[\s\S]*?evaluateLocalAutomations\(null,true\)/,'A queued automation schedule must run as soon as the current FoxESS write completes');
287
311
assert.match(source,/gasUrl:'\/api\/foxess'/,'Raspberry Pi credentials must use the local FoxESS relay');
288
312
assert.match(source,/scheduleFetchButton\.style\.display=hideManualFetch\?'none':''/,'Live WS must hide the redundant scheduler Fetch Now button');
289
313
assert.match(source,/asyncfunctionsetLiveWsPolicy\(policy\)/,'The Mobile and LAN dashboard must support all three Live WS policies');
0 commit comments