Release notes
Page 7 of 9
1.25.0
New
- rebrandStorkling is now renamed to Storkie throughout the app
Fixed
- Patch vite 7.3.0 → 7.3.2 to resolve 3 audit vulnerabilities
1.24.1
Fixed
- Patch migration 069 for production data compatibility
1.24.0
New
- Add /query-audit and /verify-fix skills, fix stale test assertion
- dbAdd migration 065 — fix stats RPC and add chat indexes
Fixed
- Add async to non-async server action exports in activities.ts
- Add default export to web-push mock so default import resolves correctly
- Align 28 stale tests with refactored source code
- Align 8 stale test assertions and bump lodash override to resolve audit
- Align test assertions with logError refactor and requireAuthForQuery behavior
- Core library improvements — env vars, auth, photo upload, proxy
- Eliminate 3 HIGH-severity useEffect anti-patterns — render cycles, unstable deps, and per-tick writes
- Feature hooks — photos, sharing, notifications, child profiles
- Make SUPABASE_SERVICE_ROLE_KEY always optional in env schema
- The dashboard prevents signed-out users from seeing authenticated data
- pwaSwitch navigation caching to network-first to prevent stale chunk crashes
- Reorder timeline test mock data to match server-side DESC sort
- Replace cyan PWA theme color with responsive dark/light values
- Replace no-explicit-any with typed cast in createActivityModal
- Resolve 2 ESLint errors, 3 warnings, 7 TS errors, and 41 stale test assertions
- Resolve 2 TypeScript errors and 2 ESLint warnings from verify:ci:fast
- Resolve 7 TypeScript errors, 10 mock hoisting failures, and 11 stale test assertions
- Resolve 8 lint warnings and 111 test failures from auth refactor
- Resolve build error, 2 lint errors, 1 TS error, and 6 stale test assertions
- security,perfHarden APIs and optimize critical paths
- securityHarden API routes — rate limits, auth checks, logging cleanup
- Suppress 3 react-hooks/refs false positives and remove stale eslint-disable
- swCorrect manifest path and bump cache version
- swStop intercepting requests the SW doesn't need to handle
- Type safety and minor bug fixes
- uiModal, timeline, and settings component updates
- Use React.Fragment symbol instead of string in createElement
Faster
- Cache Ratelimit instances by config to avoid per-call allocation
- Cache Supabase client per-request via React cache()
- Clean up session list query — remove dead code, extra columns
- Deduplicate user settings actions with generic helper
- Eliminate N+1 queries, fix over-invalidation, and batch DB operations
- Eliminate redundant queries and over-broad cache invalidation
- Extract calculateInsights to break cold-start import chain
- Fix query invalidation gaps, add DB indexes, and optimize cache strategies
- Lazy-load web-push in cron handler to reduce cold start
- Optimize Lighthouse scores — font subsetting, lazy-load AI SDK, fix Sentry 404
- The chat feature uses a different model for generating titles
1.23.0
New
- aiUsers can now opt-in to Smart Insights for AI data access in settings
- chatChat pages now show a loading skeleton while loading
- chatA Smart Insights prompt has been added to chat and the UI is polished
- chatThe chat interface loads better and suggestions are displayed in a clearer layout
- chatThe loading spinner in the conversation list is replaced with a skeleton loading
- settingsA Smart Insights toggle is now available in the Storkie AI section of settings
- sleepThe wake-up time input now has a calendar date picker
- uiChat pages have new entry animations
- uiLoading screens show an upgraded shimmer effect with animations
- uxThere is a new popup and badge for overdue activities
Fixed
- aiAdd timezone-aware queries and pre-converted timestamps
- chatThe chat interface now shows the date better and focuses on input more easily
- uiAdd conversation delete button and fix toast positioning
- uiRaise toast position above bottom navigation
1.22.0
New
- chatThe chat section has new list and thread options
- chatThe chat interface, messages, and markdown styles have been refreshed
- chatTool-calling architecture with gpt-5.4-nano and Storkie persona
Fixed
- securityAdd session ownership verification in chat stream route
1.21.2
Fixed
- dashboardThe dashboard shows the end time for sleep and nursing elapsed displays
1.21.1
Fixed
- dbUse maybeSingle() in getActivityById to handle missing rows gracefully
- photosThe delete photo dialog now uses a soft-delete pattern instead of a nested delete dialog
- sleepSleep wake times will save even if the timer is running
Faster
- pwaReduce cold start time with parallel fetches and SW caching
1.21.0
New
- The photo gallery and viewer now group photos by date
- Bottle quick-select buttons, head circumference display, timeline icon + unit fix
- The activity filter now allows multi-select options
- dashboardThe settings gear is moved to the header, and card displays are improved
- navThe TopBar is polished, and BottomNav routing is simplified
- The wake-up time input now automatically infers the date
- timerThe sleep and activity modals have a timer feature added
- uiAdd reusable scroll indicator hook and component
- uxScroll indicators are now included in modals and timeline views
Fixed
- All modals no longer automatically focus on mobile devices
- timelineThe timeline cards now have increased height for two-line notes
- The summary empty state icon uses opacity instead of color
1.20.0
New
- The dashboard now sorts activities based on urgency
- Add feeding_preference, measurement_system, and activity_cards_pinned to user settings
- The Timeline, Summary, and Photos have new entry animations
- Add useMounted shared hook for hydration safety
- Add useMountEffect utility hook
- Card settings now auto-save when changes are made
- The Summary is now a separate page, simplifying the timeline views
- The modal user experience has been improved with better indicators and labels
- The dashboard has a new layout with a hybrid design and a count pill
- Navigation features a quick-add grid and a TopBar dropdown integrated into the dashboard
- The settings page has been redesigned and includes card management and feeding preferences for onboarding
- The interior of the dashboard card is restyled with a vertical stack and texture
- The dashboard uses a 3-column grid with the featured card displayed first on larger screens
Fixed
- Adapt responsive design (flexible widths, mobile breakpoints)
- Add initial page entrance animation to SummaryView
- The wet diaper card has a hover border now
- Buttons on activity cards take full width
- Bump flatted override to >=3.4.2 for prototype pollution CVE
- Clarify redundant UX copy
- Consolidate duplicated rdp-day rules into @layer utilities
- Charts show different colors in dark mode
- Storkie improves accessibility features
- The background icon on activity cards has better contrast
- The dashboard layout has been improved with better row height and centered cards
- Empty states now include educational guidance for more clarity
- Claude review allows for more turns and additional tools
- The timeline animation is now controlled by parents when switching tabs
- Contrast, chart text, and detail tab text colors have been standardized
- Normalize remaining hard-coded hex colors to CSS custom properties
- Normalize theme tokens and dark mode gaps
- Performance has been optimized for smoother operation
- Decorative animations and blur effects are now less distracting
- The backdrop-blur effect has been removed from UI controls for clearer display
- Replace bounce/overshoot easing with smooth deceleration curves
- Replace remaining raw img tags with next/image, add lazy loading
- Resolve timeline tab-switch animation competing with isPending dim
- Responsive tweaks (slider padding, photo grid, gender buttons)
- Revert ActivitiesPageClient redirect to useEffect
- Sticky modal footer on desktop and zoom-aware timeline positioning
- Toast action button invisible in dark mode
- UI polish — drop-shadow cleanup, switch sizing, theme swatches, font removal
- UI polish — timeline critique improvements
- Unify notification list spacing to space-y-2
- Use --allowedTools in claude_args instead of invalid allowed_tools input
- Use element-level opacity for card watermark icons
1.19.1
Fixed
- Add localStorage polyfill for Node 24 compatibility
- The timeline date automatically advances when the app reopens after midnight
1.19.0
New
- pwaAn install prompt is added for users
- pwaThe InstallPromptBanner is connected in the app
Fixed
- Bump undici override to >=7.24.0 for WebSocket/smuggling fixes
- pwaAddress code review findings for install prompt
- pwaAuto-dismiss iOS install banner on page hide
- pwaRemove confirm dialogs on service worker update
- The confirm dialogs for service worker updates are removed and the Clerk avatar is centered in the top bar
1.18.0
New
- rebrandThe app is now called Storkling in configuration files
- rebrandThe app is now called Storkling in emails
- rebrandThe app is now called Storkling in the page metadata
- rebrandThe app is now called Storkling in the PWA manifest
- rebrandThe app is now called Storkling in the root layout
- rebrandThe app is now called Storkling in the service worker
- rebrandThe app is now called Storkling in various URLs
- rebrandThe app is now called Storkling in user-facing text
- rebrandRename localStorage keys from babytracker to storkling
- rebrandThe app now features Storkling stork branding in the icons
- rebrandUpdate icon assets with full blue background
- rebrandUse SVG favicon for crisp browser tab icon
Fixed
- Resolve flatted audit vulnerability via pnpm override
1.17.0
New
- There is an option to keep editing in the DiscardConfirmDialog
- The SleepModal now has a blank end time default and a Current Time button
- The diaper hourly bar chart is colored by type: wet, dirty, both, or dry
- Diaper type buttons are now colored to match the timeline icons
- The timeline cards show the activity type label
- The summary tab syncs with the URL and shows loading skeletons
Fixed
- The nursing timer buttons will not submit forms mistakenly
- The Add Photo button has activity-colored borders in all modals
- Cards are blurred before modals open for better visibility
- There is instant visual feedback when switching views on the timeline
- The Y-axis remains fixed while you scroll bar charts on mobile
- The service worker no longer intercepts certain requests
1.16.0
New
- Add shared hooks and utilities for modal/card simplification
- Add useLongPress hook for gesture detection
- The dashboard shows timestamps that update live in the cards
- navA long-press on the Quick Add button opens a shortcut popup
- settingsThe settings now show success messages, guard against unsaved changes, and have polished notifications
- sleepThe sleep timer state is saved in local storage
- summaryThe summary page has over 15 new charts and a restyled activity display
- summaryThe summary now includes a sleep session duration chart with a custom tooltip
- summaryThe Insights page shows a dynamic timeframe label based on your date selection
- summaryThe timeline summary has been redesigned to a new layout inspired by Oura's "Today Feed."
- summaryThe date range dropdown has been replaced with preset pills and a calendar picker
- timelineThe timeline now has continuous infinite scrolling and redesigned day headers
- timelineThe timeline shows the default view tab when you first open it
- timelineThe timeline keeps the active view tab saved in the URL
- timelineThe list view uses a DatePicker instead of a WeekPicker
Fixed
- Add error boundaries, loading states, and page polish
- Add top padding between view tabs and date selector
- Auth logError, optimistic delete, SW cleanup, and utility fixes
- chartsUse numeric height for ResponsiveContainer to prevent -1 warnings
- The dashboard cards show empty states and updated temperature units
- Disable Sentry event reporting in development
- Hooks error handling, timezone, and query keys
- Improve error handling and remove redundant refetches
- Improve error handling, Sentry reporting, and loading states
- Layout consistency, CSS variable heights, and navigation a11y
- Modal validation, loading states, and UX polish
- Move modal preload imports to stable module to prevent HMR warnings
- NursingCardThe nursing card formats duration as mm:ss instead of raw decimals
- Page loading skeletons, settings polish, and auth metadata
- Page-level fixes, SW guard, and remove dead chat route
- Page-level fixes, SW guard, and remove dead chat route
- Remaining UI/UX audit items — modals, cards, hooks, CSV export
- The page scrolling works correctly now without any issues
- The timeline no longer shows the realtime connection status banner
- Replace next/dynamic with React.lazy to prevent unused preload warnings
- The header now has a refresh button and a version label
- The app properly manages registration, pushes subscriptions, and improves dialog accessibility
- The timeline date selector labels have been corrected and the stat strip wraps appropriately
- The timeline now has improved user experience and touch targets
- timelineThe timeline shows an empty state, syncs dates, and uses consistent heights
- timelineThe timeline features unit-aware formatting, polished charts, and summary tabs
- UI accessibility, touch targets, and component polish
Faster
- The activity cards and timeline views load faster
1.15.0
New
- nursingThe nursing activity has a persistent timer that shows an indicator in the header
1.14.4
Fixed
- authAdd localStorage fallback to resolveChildProfile
- nursingLift timer to React Context for single-instance guarantee
- nursingMove eslint-disable-next-line to correct position
- nursingPreserve accumulated side duration when switching back
- nursingStop useEffect resetting form every second and guard handleClose
- nursingUse timer values on save and track session start time
1.14.3
Fixed
- pwaThe app shows an inline splash screen instead of a blank screen when starting up
Faster
- authRemove redundant auth guards already handled by proxy
1.14.2
Fixed
- authHandle Clerk API failures gracefully on activities page
1.14.1
Fixed
- pwaRemove root loading.tsx to prevent hooks crash on redirect
1.14.0
New
- Error boundaries are added for the activities, child profile, and chat pages
- Rate limiting is applied to the AI chat function
Fixed
- dataThe summary detail tabs show correct statistics now
- dbAdd restore_activity SECURITY DEFINER RPC
- photosThe photo gallery shows all activity photos and has improved thumbnail quality
- securityAdd UUID validation and partial update validation
- securityEscape HTML in invitation email template
- securityOverride serialize-javascript to patch RCE vulnerability
- securitySwitch cron route to service role key
- securityUse JWT identity for soft_delete_activity auth check
- uiThe activity type labels on activity cards are now capitalized
- uiThe photo viewer uses next/image for better image handling
- uiChart tooltips are now readable in dark mode
Faster
- Convert static modal imports to dynamic loading
- dbOptimize RPC auth checks and realtime subscription
- dbReplace client-side diaper stats aggregation with server-side RPC
- Fix QueryProvider to use isServer singleton pattern
- Parallelize cron notification processing with Promise.allSettled
- Remove preflight queries from update/delete/stats operations
- Remove redundant revalidatePath calls and extract cache helper
- Replace currentUser() with auth() in server actions