Files
time_to_leave/CHANGELOG.md
T

3.0 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

📅 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

🔧 API Client

  • Added fetchGoogleCalendarEvents method for Google Calendar sync
  • Added findNearestStation method for geolocation-based station lookup
  • Enhanced HAFAS request handling

[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 .ics file 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 from origin to departure station 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