chore: release v1.4.0
Build and Push / release (push) Successful in 3s
Build and Push / build (push) Successful in 3m7s

- Decentralized Room Registry pattern
- Each room registers itself with central registry
- Dynamic navigation tabs and settings dropdown
- New Media Room and Parlor feature folders
- Permission-based room filtering support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jeroen Schweitzer
2026-01-05 15:46:44 +01:00
co-authored by Claude Opus 4.5
parent 40ba6a869d
commit c3f6d27a52
15 changed files with 581 additions and 134 deletions
+17
View File
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:tatlock_ui/features/control_room/presentation/pages/control_room_page.dart';
import 'package:tatlock_ui/routing/app_router.dart';
import 'package:tatlock_ui/routing/room_registry.dart';
import 'package:tatlock_ui/shared/layouts/widgets/nav_panel.dart';
/// Route paths for Control Room.
@@ -49,6 +50,22 @@ enum ControlRoomNav {
/// Get route path for a nav item.
String pathForNav(ControlRoomNav nav) => nav.path;
/// Control Room room definition.
final controlRoomRoom = RoomDefinition(
id: 'control-room',
label: 'Control Room',
icon: Icons.dns_outlined,
selectedIcon: Icons.dns,
defaultRoute: ControlRoomRoutes.containers,
routes: controlRoomRoutes,
// No permissions required - accessible to all authenticated users
);
/// Register Control Room with the room registry.
void registerControlRoom() {
roomRegistry.register(controlRoomRoom);
}
/// Control Room routes for go_router.
List<RouteBase> controlRoomRoutes() {
return [