Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
235bfbf
feat(app): native-feel pass
frahlg Aug 21, 2026
83375eb
fix(test): settle Now's background asks before judging the live line
frahlg Aug 21, 2026
6b927b6
feat(ev): set the car's charge level and PV-only from the panel
frahlg Sep 4, 2026
3bb02f3
Merge commit '99ea3a28b7fac2b96b07bcdc3fd046160d8ed301' into fix/ev-s…
frahlg Sep 6, 2026
187ecfe
Merge commit '6b927b6' into fix/ev-session-flow
frahlg Sep 6, 2026
f76c8dd
fix(ev): match core charging state and apply edits on release
frahlg Sep 6, 2026
b70f31b
Show EV goals and manual priority in one view
frahlg Sep 6, 2026
0fad6c2
Show connected chargers and open their controls from notifications
frahlg Sep 6, 2026
f963401
fix(ev): follow the active box and show unconfirmed battery levels
frahlg Sep 6, 2026
66c2f5e
fix(ev): accept the first goal without changing its proposed values
frahlg Sep 6, 2026
dc6098c
fix(ev): finish goal feedback after the status read
frahlg Sep 6, 2026
2f25fc3
fix(api): recover from busy refusals without replaying uncertain writes
frahlg Sep 6, 2026
d281521
fix(ev): match pause and battery settings with the box
frahlg Sep 6, 2026
80137b9
fix(ev): refresh home status after commands and guide viewers
frahlg Sep 6, 2026
afca7f7
fix(ev): distinguish active car size from the saved default
frahlg Sep 6, 2026
14594c3
fix(ev): ask how to continue an unmatched charge after restart
frahlg Sep 6, 2026
2587ec4
fix(ev): report retrying unsaved charging intent
frahlg Sep 6, 2026
2b71f22
fix(ev): reset the proposed target after removing a goal
frahlg Sep 6, 2026
4849387
fix(ev): explain failed solar-rule saves accurately
frahlg Sep 6, 2026
d4c3149
fix(ev): explain where to connect the first charger
frahlg Sep 6, 2026
5982ccd
fix(ev): show the saved target while unplugged
frahlg Sep 6, 2026
5cc6755
fix(ev): keep failed first reads out of charger setup
frahlg Sep 6, 2026
1557c35
fix(ui): keep live sheet within the app width
frahlg Sep 6, 2026
d40347f
fix(ev): confirm saved goals while the plan updates
frahlg Sep 6, 2026
cccad3b
fix(ev): report failed replans without old charge windows
frahlg Sep 6, 2026
49685be
fix(home): read only displayed savings days
frahlg Sep 6, 2026
a6e694d
fix(ev): preserve charger taps while reconnecting
frahlg Sep 6, 2026
c470462
fix(ev): keep accepted choices through read failures
frahlg Sep 6, 2026
84108be
fix(ev): confirm goal removal separately from saves
frahlg Sep 6, 2026
0d70f9e
fix(ev): explain unconfirmed charger connections
frahlg Sep 6, 2026
8ead63a
fix(ev): allow battery sizing before plugging in
frahlg Sep 6, 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
5 changes: 5 additions & 0 deletions .changeset/ev-api-busy-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Retry brief busy refusals so charging status can recover without a reload. Expire queued API calls and discard them on disconnect. Never retry a write after a timeout or a lost answer.
5 changes: 5 additions & 0 deletions .changeset/ev-client-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Show Pause charging and Resume plan as separate actions. Show whether the charger has stopped, and keep the charging goal while paused. Let owners set battery size beside the current level, with direct saving and readback. Show viewers the battery level, expire old charger readings even when house power is live, and explain whether the level survives a box restart.
5 changes: 5 additions & 0 deletions .changeset/ev-connected-status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Show charger status when a car is connected and open its controls from a charging notification. Keep old readings visibly out of date after a dropped connection. Notification switches save directly and retain later edits while the box responds.
5 changes: 5 additions & 0 deletions .changeset/ev-connection-confirmation-copy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Explain when charging needs a new choice because the charger or connection could not be confirmed, including after reconnecting. Keep the message separate from confirmation that current has stopped.
5 changes: 5 additions & 0 deletions .changeset/ev-effective-capacity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Show when the current car uses a different battery size from the usual size just saved.
11 changes: 11 additions & 0 deletions .changeset/ev-feedback-and-direct-controls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"ftw-webapp": patch
---

Read the current FTW charge-level and schedule fields, including a plugged car at zero percent. Charging feedback follows the charger's status instead of treating a received request as proof of charging. Show unavailable readings and recover when contact returns.

Apply schedule edits and changes to a running manual current without Save or Update. Keep an ongoing charge-level drag when an earlier response arrives. Keep failed requests visible, poll only while the panel is visible, and keep keyboard focus inside the dialog.

Keep the charging goal and solar rule together, with no mode tabs. Show when Charge now overrides them. Show the current slider only while manual charging is active. Opening goal settings does not send a command.

Preserve one-off goals and the home battery threshold for solar when editing a schedule.
5 changes: 5 additions & 0 deletions .changeset/ev-first-connection-help.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Explain where to connect and add the first charger when the box has none, instead of showing an empty charging panel.
5 changes: 5 additions & 0 deletions .changeset/ev-first-goal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Let the user choose the displayed first charging goal without changing its values. Opening settings keeps the current charging intent. Later edits still apply directly.
5 changes: 5 additions & 0 deletions .changeset/ev-first-read-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Keep a busy or failed charger read in a waiting state. Show setup help only after the box confirms that no charger is configured.
5 changes: 5 additions & 0 deletions .changeset/ev-goal-plan-confirmation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Confirm a saved charging goal before its new plan finishes. Show planning progress, hide old charge windows and preserve the save confirmation if a later status read fails.
5 changes: 5 additions & 0 deletions .changeset/ev-home-command-refresh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Refresh the home charging card after a command or goal change. Give viewers guidance they can act on without offering controls their account cannot use.
5 changes: 5 additions & 0 deletions .changeset/ev-manual-save-feedback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Show when a charging choice is active but could not be saved for restart. The notice clears when the box confirms its retry succeeded.
5 changes: 5 additions & 0 deletions .changeset/ev-new-goal-after-remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Suggest 80% when setting a new charging goal after removing the previous one. Clear the old target in the demo as the box does.
5 changes: 5 additions & 0 deletions .changeset/ev-plan-failure-feedback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

When a new charging plan fails, explain that the settings are saved but charging times are unavailable. Keep the old plan hidden until a new one succeeds.
5 changes: 5 additions & 0 deletions .changeset/ev-reconnect-tap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Open the charging panel when its car bubble is tapped during reconnection. Show connection progress and fill the same panel when the box answers; explain when a connected box lacks app charging controls.
5 changes: 5 additions & 0 deletions .changeset/ev-remove-confirmation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Confirm when a charging goal is removed, even if the next status read fails. Clear the previous save message so the removal's plan update cannot claim that a goal was saved.
5 changes: 5 additions & 0 deletions .changeset/ev-restart-choice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Ask how to continue when an earlier charge request cannot be matched after restart. Offer Charge now, Resume plan and Pause charging without calling it a user pause. Keep actual power visible until a changed current limit reaches the charger.
5 changes: 5 additions & 0 deletions .changeset/ev-review-read-confirmation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Keep accepted battery levels and solar choices visible if the following status read fails. Use the charger's own plan windows to avoid blocking current status on a full plan read. Describe routine replanning without claiming a new goal was saved.
5 changes: 5 additions & 0 deletions .changeset/ev-soc-and-pv-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Correct the car's charge level from the EV panel with a slider the box's own estimate prefills, and switch charging from solar surplus only on or off. Both write through the door and reread the charger once the box has answered.
5 changes: 5 additions & 0 deletions .changeset/ev-soc-confirmation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Ask for the car's level when the box reports an unconfirmed battery estimate. Keep charging status attached to the active box after pairing or switching homes.
5 changes: 5 additions & 0 deletions .changeset/ev-solar-save-failure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Explain a rejected solar-rule save without blaming charger connectivity. Keep the previous choice visible and allow retry.
5 changes: 5 additions & 0 deletions .changeset/ev-unplugged-battery-size.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Let owners set the usual car battery size before plugging in. Save on field release and show the confirmed value, while keeping current charge and charging controls limited to a connected car.
5 changes: 5 additions & 0 deletions .changeset/ev-unplugged-goal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Keep the saved target percentage beside the ready time when the car is unplugged or its battery level is unknown.
5 changes: 5 additions & 0 deletions .changeset/live-sheet-shell-width.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Keep the live power sheet centered within the app's width on tablets and desktops, matching the EV sheet.
5 changes: 5 additions & 0 deletions .changeset/overview-savings-week.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ftw-webapp": patch
---

Read only seven savings days on the home screen. The displayed today and week totals stay the same without calculating an unused month before charger requests.
7 changes: 7 additions & 0 deletions .changeset/ux-native-feel-pass.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"ftw-webapp": patch
---

Make the app feel native on a phone: every control answers a press, tab changes slide in from the direction of travel, the theme follows the OS mid-session, and the Android keyboard no longer covers bottom sheets. On tablets and desktops the shell keeps a phone shape instead of hugging one edge.

Recover on its own from two states that used to need an OS exit: a stalled passkey ceremony now offers Cancel, and a slow local open says so after a beat instead of sitting blank. Long-press shortcuts open Plan and History; update checks run at launch, not only after the first hide.
3 changes: 3 additions & 0 deletions contract/push-catalogue.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
# lost every notification that mattered.
version: 1
events:
- kind: charging.connected
title: Car plugged in
body: "Open to see charging status, check the battery level and set a ready time."
- kind: charging.session_complete
title: Car charged
body: "{kwh} kWh delivered — ready to go."
Expand Down
4 changes: 3 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
<html lang="en" data-theme="dark">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<!-- interactive-widget=resizes-content: Android Chrome paints the keyboard
over fixed bottom sheets unless the layout viewport shrinks instead. -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content" />

<title>FTW</title>
<meta name="description" content="Your home's energy, from wherever you are." />
Expand Down
13 changes: 13 additions & 0 deletions public/manifest.webmanifest
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,26 @@
"name": "FTW",
"short_name": "FTW",
"description": "Your home's energy, from wherever you are.",
"id": "/",
"start_url": "/",
"scope": "/",
"display": "standalone",
"orientation": "portrait",
"background_color": "#0d0d0d",
"theme_color": "#0d0d0d",
"categories": ["utilities", "productivity"],
"shortcuts": [
{
"name": "Plan",
"url": "/#/plan",
"icons": [{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" }]
},
{
"name": "History",
"url": "/#/history",
"icons": [{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" }]
}
],
"icons": [
{
"src": "/icons/icon.svg",
Expand Down
Loading