Skip to content

Releases: IsabelleTan/BabyTracker

1.12.0

Choose a tag to compare

@IsabelleTan IsabelleTan released this 10 May 14:40
d3f13d8

New features

Export full event history as JSON
The Stats page now has an Export button that downloads all events for the current baby as a JSON file. The export covers the complete history regardless of the selected time range, making it easy to back up or analyse data externally.

Stats default to All time
When the Stats page first loads it now selects the "All time" range instead of the default fixed window. Fixed ranges (week, month, etc.) are clamped to the date of the first recorded event so the chart never shows empty leading space.

Output location shown for all feed types; sleep duration labels added
The event timeline previously only showed the output location label for breast feeds. It now appears for all feed types. Sleep events additionally display a formatted duration label (e.g. "2 h 15 min") directly on the timeline row.

1.11.3

Choose a tag to compare

@IsabelleTan IsabelleTan released this 04 May 18:07
6d6d6e3

1.11.3

Performance

Timeline renders fewer unnecessary updates
The event timeline now avoids re-rendering rows that have not changed. Scrolling through a long day of events is noticeably smoother on low-end devices.

Event sheet opens faster
Internal timer logic in the event logging sheet has been extracted into a dedicated useTimer hook and now runs more efficiently, reducing jank when the sheet first appears.

Infrastructure

  • Dropped five frontend dependencies — axios, clsx, tailwind-merge, CVA, and tw-animate-css have been removed. Network calls now use the native fetch API; utility CSS helpers are inlined. The production bundle is smaller as a result.
  • Added isSleepEvent helper — a small shared utility now centralises the sleep_start / sleep_end type-check that was previously duplicated across several files.
  • TypeScript cast clean-up — a handful of unsafe as casts in the frontend have been replaced with proper type narrowing.
  • Removed stale generated filesCHANGELOG.md, a temporary dependency-analysis document, and two stale README.md lines have been deleted. The .gitignore has been updated to prevent similar artefacts from being committed in future.
  • npm audit fix — locked transitive dependency versions to address low-severity audit findings.

1.11.0

Choose a tag to compare

@Roald87 Roald87 released this 02 May 20:04
94acd0d

What's Changed

  • refactor: move potty streak and logging counts to backend by @Roald87 in #168
  • refactor: immediate return fun message and extract DAY_IN_MS constant by @Roald87 in #169
  • add new graph to stats page that shows when the baby sleeps by @Roald87 in #170

1.10.1

Choose a tag to compare

@Roald87 Roald87 released this 02 May 20:04
75ff7bd

What's Changed

  • refactor: move summary stats computation to backend by @Roald87 in #167

1.10.0

Choose a tag to compare

@Roald87 Roald87 released this 02 May 20:04
c96ad8f

What's Changed

  • feat: add accident tracking, Murphy's Law Medal, and chart polish by @Roald87 in #165
  • feat: enable entering different feed types as single event by @Roald87 in #166

1.9.0

Choose a tag to compare

@Roald87 Roald87 released this 29 Apr 07:16
1091453

What's Changed

  • refactor: split funMessages, fix sync queue, deduplicate output helpers by @IsabelleTan in #157
  • refactor: TrackedStat domain object, sleep window fix, chart helper extraction by @Roald87 in #158
  • refactor: add BabyRecord and remove is_new by @Roald87 in #159
  • refactor: replace loading/error boolean pairs with FetchStatus union by @Roald87 in #160
  • refactor: replace 4 AwardFlags booleans with a set of claimed award names by @Roald87 in #161
  • refactor: consolidate time formatting and fix chart axis units by @Roald87 in #162
  • refactor: replace dashed boolean with strokeStyle union and update chart line styles by @Roald87 in #163
  • feat: show individual datapoints on median charts by @Roald87 in #164

1.8.0

Choose a tag to compare

@Roald87 Roald87 released this 29 Apr 07:01
46d35eb

What's Changed

  • fix: switch to calendar days and fix stat graph accuracy by @IsabelleTan in #156
  • feat: median + IQR band on avg stats charts by @Roald87 in #155

1.7.1

Choose a tag to compare

@Roald87 Roald87 released this 27 Apr 20:57
c222f7f

What's Changed

  • refactor: split Home and EventSheet into focused components by @Roald87 in #152
  • refactor: IANA timezone strings + date types internally by @Roald87 in #153
  • fix: consistent rounding in Past 24h stat bars by @Roald87 in #154

Full Changelog: 1.7.0...1.7.1

1.7.0

Choose a tag to compare

@IsabelleTan IsabelleTan released this 26 Apr 15:36
135e1dc

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.

1.6.0

Choose a tag to compare

@IsabelleTan IsabelleTan released this 26 Apr 07:15
43f6a83

Release Notes — v1.6.0

Vitamin D daily tracking

A small status row now appears on the home screen, below the action cards, to help you and your partner stay on top of your baby's daily vitamin D dose.

  • Tap Mark as given to log the dose instantly — no drawer, just one tap
  • Once logged, the row shows Given HH:MM by Name so both partners can see who already gave it
  • Resets at 05:00 (the start of the parenting day), the same boundary used everywhere else in the app
  • The dose appears in the timeline list view with a pill icon
  • Syncs between devices through the normal 30-second background sync — if your partner marks it on their phone, you'll see it on yours within half a minute