3.6 KiB
3.6 KiB
Changelog
All notable changes to this project will be documented in this file.
[Unreleased]
Mobile Application
- Default to dark theme across the mobile app
- Filter native calendar events by location to exclude empty ones
- Async station selection with error handling and alerts
- Improved notification settings UI
- Native calendar source selection with CalDAV/DAVx, Apple, Google, Exchange, subscribed, local, CardDAV, ActiveSync, and other source labels
- Event detail sections split into reusable header, journey, bike, and nearby-stop components
Calendar Integration
- Google Calendar sync via full OAuth 2.0 flow (token exchange, refresh, and status checks)
- UI for connecting, syncing, and disconnecting Google accounts in the Calendar panel
- Batch edit panel for managing event destinations on the web calendar
- Edit support in AddEventModal for modifying existing events
Public Transport
- HAFAS LocMatch method in API client for finding nearest station to current location
- Improved station selection with async search and error handling
- WienerLinien departures hook improvements
- HAFAS response enrichment through the ÖBB GTFS fallback when available
- Arrive-by journey search with fallback search window
API Client
- Added
findStationByExtIdfor resolving a saved station ID - Added
findNearestStationByCoordsfor geolocation-based station lookup - Added base URL failover for backend availability issues
- Enhanced HAFAS request handling
Documentation
- Updated README, development, architecture, API, user, privacy, and testing documentation to match the current route tree and app behavior
[1.0.0] — 2025-01-27
🎉 Initial MVP Release
First stable release of TimeToLeave: a smart departure planner that integrates your calendar with real-time public transport data to tell you exactly when to leave.
Web Application
- Next.js 16 web dashboard with Tailwind CSS 4
- Calendar sync via
.icsfile import or URL - Station search and journey planning for upcoming events
- Real-time departures with dynamic leave-status countdown
- Browser-based leave reminders with push notifications
- Dark/light theme toggle
- Debounced search and optimized calendar loading
- Docker support with multi-stage build and standalone output
Mobile Application
- React Native 0.81 / Expo 54 mobile client
- Five-screen navigation: Event List, Add Event, Event Detail, Origin Setup, Settings
- Native calendar import via
expo-calendar - Geolocation-based origin detection via
expo-location - Local push notifications via
expo-notifications - Persistent settings and state via AsyncStorage
Public Transport Integration
- HAFAS protocol support for Austrian railway (ÖBB) real-time departures
- WienerLinien integration for Vienna U-Bahn, tram, and bus departures
- Accurate timezone-aware HAFAS time parsing with DST transition handling for
Europe/Vienna - Support for repeated stop IDs and multiple connections
Routing
- Bike route calculation and final walking route calculation via OSRM
- Geocoding API integration for station lookups
- Fallback and caching logic for API failures
Shared Infrastructure
- Monorepo structure with npm workspaces
@timetoleave/core— shared types, countdown utilities, and leave-status logic@timetoleave/api-client— typed client for HAFAS, calendar, geocoding, and bike routing- Correlation IDs for request tracing and monitoring
- Comprehensive test coverage across web (Vitest) and mobile (Jest)
- Strict TypeScript type-checking across all workspaces
- ESLint linting across the codebase