B6 scroll-to-latest: ScrollController on the timeline; a small arrow-down FAB fades in once scrolled >400px up and animates back to the newest message on tap (overlaid on the list, not the FAB slot) B5 panic hold-ring: 700ms AnimationController drives a red progress ring around the panic icon; haptic + fire on completion, silent reset on early release; tap-hint and configured guard preserved Panic ring verified in-browser (ring fills, alert fires to the room). Scroll-to-latest verified with a deterministic widget test because the CanvasKit surface rejects synthetic scroll input in headless Chromium. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
670 B
Dart
19 lines
670 B
Dart
// Version: 2.1.0 | Created: 2026-04-01 | Updated: 2026-07-03
|
|
// App-wide constants. Change matrixBaseUrl for different environments.
|
|
|
|
abstract final class AppConfig {
|
|
static const String matrixBaseUrl = 'https://matrix.m8chat.au';
|
|
static const String matrixServerName = 'matrix.m8chat.au';
|
|
static const String livekitJwtUrl =
|
|
'https://matrix.m8chat.au/_matrix/livekit/jwt';
|
|
static const List<String> turnUrls = [
|
|
'turn:matrix.m8chat.au:3478',
|
|
'turns:matrix.m8chat.au:5349',
|
|
];
|
|
static const String appName = 'M8Chat';
|
|
static const String appVersion = '1.10.0';
|
|
|
|
// Jitsi conferencing
|
|
static const String jitsiDomain = 'conf.m8chat.au';
|
|
}
|