instead of storing brightness as 0-100%, store brightness "steps"
instead that equal to the number of bars where step 0 = off
Co-authored-by: Ona <no-reply@ona.com>
- Add TFLTile component displaying real-time transport disruptions
- Show Northern line status prominently when good service
- Display disruptions sorted by severity with line colors
- Add optional tile decorations prop for flexible styling
- Auto-refresh every 5 minutes with background updates
Co-authored-by: Ona <no-reply@ona.com>
- Add TypeScript types for TfL disruptions API
- Add TanStack Query integration with 2-minute stale time
- Add helper functions for severity colors and labels
- Add line color mapping using official TfL colors as Tailwind classes
- Add status severity to border color mapping for visual indicators
Co-authored-by: Ona <no-reply@ona.com>
- Migrate from gemini-2.0-flash-exp to gemini-2.5-flash-lite
- 4x cheaper on input, 6x cheaper on output tokens
- Increase maxOutputTokens from 120 to 1000 to accommodate thinking tokens
- Fixes empty description issue caused by thinking tokens consuming limit
Co-authored-by: Ona <no-reply@ona.com>
- Add TfL Unified API integration for real-time transport disruptions
- Implement batch AI shortening using Gemini 2.5 Flash-Lite
- Add in-memory caching with 1-hour TTL
- Support Tube, Overground, DLR, Elizabeth Line, and Tram
- Sort disruptions by severity with regex-based line name cleanup
Co-authored-by: Ona <no-reply@ona.com>