This release adds full Danish and English localization, a much more resilient login/session system, a redesigned calendar experience, and lets itsdu-site recognize devices independently of itslearning accounts.
Localization
- Added full Danish and English translations across the app: command palette, sidebar, notifications, titlebar search, settings, update toast, calendar, and overview.
- Added locale-aware date, time, number, file size, and duration formatting.
- The app language setting (System / English / Danish) now actually drives the UI instead of only existing as a placeholder.
Calendar & overview
- Redesigned the calendar page: refreshed header with quick stats, a cleaner view switcher, and a reworked month/week grid.
- Added deterministic per-course color coding for events, so courses stay visually distinguishable at a glance; personal events keep a calm neutral accent.
- Refined the overview page layout.
Authentication & session resilience
- Added a proper session status state machine (authenticated, stale, refreshing, offline, reauth required) with a live status indicator.
- Expired sessions are now refreshed automatically and the original request retried transparently, instead of surfacing an error.
- Concurrent refresh attempts are deduplicated so the app no longer races itself.
- Distinguishes transient failures (offline) from terminal ones (invalid/missing token), only prompting re-login when actually necessary.
- Added a configurable background session refresh interval in Settings | Advanced (5-240 minutes, default 45).
Device identification
- Added a stable per-installation device identifier, generated once and persisted locally.
- The app now sends a one-time startup ping (device ID, app version, platform) to itsdu-site, letting future features and analytics be tracked per device instead of per itslearning account.
- Only fires in packaged builds - nothing is sent during development.
Full Changelog: v0.1.8...v0.1.9