1.7.0
Release Notes
1.7.0
New features
Longest potty streak in Leaderboard Records
The Records section now tracks the longest run of consecutive parenting days on which at least one potty event was logged. A "New!" badge appears when the current streak is the all-time longest.
5-minute time wheel snapping
The time picker in the event logging sheet now snaps to 5-minute intervals, making it faster to log events to the nearest five minutes without over-precise scrolling.
Bug fixes
Potty streak counter could overcount by one day
The home screen streak badge checked for any potty event in the last 24-hour window rather than strictly within the current parenting day (05:00–05:00). An event logged the previous evening would remain visible the next morning and incorrectly increment the counter. The check is now scoped to the current parenting day, consistent with the server-side computation.
Night session events did not update immediately on log or delete
Logging or deleting an event on the home screen updated the main timeline immediately but left the night session summary stale until the next background sync. Both views now update together.
Year picker could show a stale year when reopening the event sheet
The year wheel was initialised once on component mount rather than when the sheet opened, so events logged near a year boundary could display the wrong year pre-filled. The picker now resets correctly each time the sheet opens.
Time wheel felt like it reached the end
The cyclic repeat count on the time wheel pickers was too low, so rapid scrolling could visibly hit the boundary. The repeat count has been increased so the wheel scrolls continuously.
Partner message could trigger a React state update side effect
An event handler in SummarySection was updating state inside an effect body in a way that could cause a double-render in React Strict Mode. The side effect is now correctly separated.
Removed
Estimated next feed
The "next feed in X min" estimate has been removed from the home screen. It relied on a simple average that was unreliable in practice and added visual noise.
Infrastructure
- Rate limits are now configurable via environment variables (
RATE_LIMIT_EVENTS,RATE_LIMIT_READ,RATE_LIMIT_AUTH). Defaults remain 60/min, 30/min, and 10/min respectively. - Frontend ESLint now runs as a required CI step on every pull request.
- Leaderboard endpoint now returns HTTP 204 (instead of 200 with a flag) when there is not yet enough data to display, which is a cleaner contract for clients.