- Move callback route exception check BEFORE auth redirect check - This was preventing OIDC token exchange from ever happening - Add favicon.ico to web root for browser tab icon 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.1 KiB
7.1 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[1.0.10] - 2026-01-04
Fixed
- Fixed OIDC callback route being redirected to login before processing
- Moved callback route exception check BEFORE the auth redirect check in router
- This was preventing token exchange from ever happening
- Added favicon.ico to web root for proper browser tab icon display
[1.0.9] - 2026-01-04
Fixed
- Fixed OIDC callback Riverpod state modification error
- Deferred callback processing to
addPostFrameCallbackto avoid modifying state during widget build
- Deferred callback processing to
[1.0.8] - 2026-01-04
Changed
- Switched from hash-based URLs (
/#/login) to path-based URLs (/login)- Required for OIDC callback to work correctly
- Uses conditional import to avoid breaking mobile/desktop builds
[1.0.7] - 2026-01-04
Fixed
- Fixed OIDC PKCE state loss across browser redirect
- Code verifier and state now persist in sessionStorage instead of memory
- Prevents "No code verifier" error after Authentik redirect
[1.0.6] - 2026-01-04
Fixed
- Fixed version generation in CI/CD builds
- Removed generated files (version.g.dart, health.json) from git tracking
- These files are now regenerated from pubspec.yaml during Docker build
[1.0.5] - 2026-01-04
Changed
- Web authentication now uses OIDC instead of NPM forward auth
- Added
OidcServiceWebfor browser redirect-based Authorization Code flow with PKCE - Added
/callbackroute to handle Authentik redirect after login - Login page now shows "Sign in with Authentik" button for both web and mobile
- Tokens stored in SharedPreferences and synced with core-api via
/auth/sync
- Added
- Added web utility functions (
web_utils.dart) with conditional imports for non-web platforms - Added
cryptoandwebpackages for PKCE SHA-256 and browser API access
Fixed
- Removed cross-origin cookie dependency that caused authentication failures on web
[1.0.4] - 2026-01-03
Added
health.jsongenerated at build time with app version infohealth.htmlnow displays version, title, and status from health.json
[1.0.3] - 2026-01-03
Fixed
- Fixed auth endpoint path:
/auth/me→/auth/users/me
[1.0.2] - 2026-01-03
Fixed
- Production Docker build now uses correct API URLs
- Added
--dart-defineflags forCORE_API_URLandTATLOCK_API_URL - This enables
requiresAuth=trueso authentication is actually triggered
- Added
- Updated AGENTS.md with clear service port reference table
[1.0.1] - 2026-01-03
Fixed
- Web authentication now works correctly with NPM forward auth
- Dio client sends cookies with requests via
withCredentials: true - Added platform-specific adapters (native vs web) for proper cookie handling
- Dio client sends cookies with requests via
[1.0.0] - 2026-01-03
Added
- Authentication System - Dual-flow auth supporting web (NPM forward auth) and mobile (OIDC)
AuthStatemodel with roles, permissions, and user preferencesAuthProviderwith automatic web session detection via/auth/me- Permission system with Domain/Action enums and hierarchical access levels
PermissionGateandAdminGatewidgets for UI permission checksRolemodel with{domain}.{category}:{action}format parsing- Route guards redirect unauthenticated users to login page
- Login page with Authentik OAuth redirect
- Mobile auth platform configuration (iOS URL schemes, Android AppAuth)
- Comprehensive auth test suite (60 unit tests)
Changed
- API interceptor skips Bearer tokens on web (uses cookies via NPM forward auth)
- Router integrates auth state for protected route access
- First stable release - Core functionality complete for home lab dashboard
[0.3.3] - 2026-01-03
Added
- Health check endpoint (
/health.html) for Portainer container monitoring - Local search filtering in DataGrid (filters cached data client-side)
- Container status badges now reflect health status (green=healthy, orange=unhealthy)
ContainerHealthenum for parsing Docker health status from status string
Changed
- Standardized header bar heights to 56px across all panels
- Container grid now correctly parses Docker API JSON format (capitalized keys)
- Status column displays clean uptime (stripped health indicators)
- Status badges have consistent minimum width (90px)
- Search bar styling improved (36px height, visible border, proper background)
- Quick links now properly persist link type (iframe vs new tab)
- Iframe switching now closes existing content before loading new link
Fixed
- Quick links form properly saves changes and refreshes panel
ContainerStatetype conflict resolved (removed duplicate enum)- Container data parsing handles null values safely
Branding
- Updated favicon and icons with Tatlock bucket logo
- Updated manifest.json with Tatlock branding
[0.3.2] - 2025-01-02
Changed
- API defaults now use LAN IPs for local development (no auth required)
- Auth interceptor skips authentication when using LAN endpoints
[0.3.0] - 2025-12-30
Added
- docs/UI_LAYOUT.md - Responsive layout specification with "Rooms of the Estate" navigation
Changed
- Directory structure now mirrors room navigation (front_hall/, control_room/, parlor/, library/, study/)
- Chat moved to top-level
lib/chat/(omnipresent, not a room) - Updated ARCHITECTURE.md and PLAN.md to reflect room-based structure
- Version generation now automated via build_runner (replaces manual script)
lib/version.g.dartauto-generated frompubspec.yamlduring build
[0.2.0] - 2024-12-30
Added
- Phase 1: Foundation complete
- Clean Architecture folder structure (
core/,features/,shared/,routing/) - Full dependency stack: Riverpod, Dio, go_router, freezed, flex_color_scheme
- Core infrastructure:
core/config/app_config.dart- Environment configurationcore/theme/app_theme.dart- Material 3 theming with FlexColorSchemecore/theme/theme_provider.dart- Theme state with persistencecore/error/app_exception.dart- Typed exception hierarchycore/api/api_client.dart- Dio HTTP clients for Core API and Tatlock APIcore/api/api_interceptors.dart- Auth, logging, error interceptorscore/auth/auth_provider.dart- Authentication state management
- Routing with go_router and shell route for navigation
- Adaptive scaffold with responsive navigation (rail/bottom nav)
- Dashboard page placeholder with welcome card and stat cards
[0.1.0] - 2024-12-30
Added
- Initial Flutter project setup with all platforms (web, android, ios, macos, linux, windows)
- Build-time version generation from pubspec.yaml (
dart run tool/generate_version.dart) - Version logging on app startup
- Project documentation (PHILOSOPHY.md, README.md, AGENTS.md, PLAN.md)
- Phase 0 technical documentation:
- docs/ARCHITECTURE.md - Clean Architecture patterns
- docs/API_INTEGRATION.md - Backend API reference
- docs/DEPLOYMENT.md - Docker and infrastructure setup
- docs/DATAGRID.md - DataGrid component specification
- docs/THEMING.md - Material 3 theming guide