Rolls the session/journey/friction tracking module out to M8Chat app2, per plan ancient-petting-hejlsberg.md §5 step 4. Same pattern as GardenBuddy's same-day port: SessionJourney.init() wired after WidgetsFlutterBinding. ensureInitialized() and after the existing FlutterError.onError / PlatformDispatcher.instance.onError handlers, which it chains rather than replaces. SessionJourneyNavigatorObserver registered on the GoRouter instance; SessionJourneyGestureLayer wraps MaterialApp.router for rage-tap detection. This repo has no shared offline-cache module like GardenBuddy's core/offline/, so persistence is a small scoped sj_local_store.dart using the package:web dependency already present in the repo (localStorage on web, in-memory fallback for the test VM), rather than adding a new package. app_key m8chat.au-app was reserved today in track.php v2.0.1's allowed_sites/allowed_origins for https://app2.m8chat.au, confirmed by grep before use. Verified live: build deployed to app2.m8chat.au (md5-matched), Playwright navigation produced real session/visitor/screen_view rows in admin_flutterstats with app_key=m8chat.au-app, nginx logs show no 5xx and no real visitor served a broken build during the test window.
71 lines
1.3 KiB
YAML
71 lines
1.3 KiB
YAML
name: m8chat_app
|
|
description: "M8Chat — Matrix chat client for Android, iOS, and Web."
|
|
publish_to: 'none'
|
|
version: 1.12.0+16
|
|
|
|
environment:
|
|
sdk: '>=3.11.0 <4.0.0'
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
|
|
# Matrix SDK
|
|
matrix: ^0.33.0
|
|
olm: ^2.0.4
|
|
|
|
# State management
|
|
flutter_riverpod: ^3.0.0
|
|
riverpod_annotation: ^3.0.0
|
|
|
|
# Navigation
|
|
go_router: ^15.0.0
|
|
|
|
# Storage
|
|
drift: ^2.22.0
|
|
drift_flutter: ^0.2.0
|
|
flutter_secure_storage: ^9.0.0
|
|
|
|
# Serialisation
|
|
freezed_annotation: ^3.0.0
|
|
json_annotation: ^4.9.0
|
|
|
|
# Video/Voice (MatrixRTC + LiveKit) — Phase 2 active use; wired in Phase 1
|
|
livekit_client: ^2.4.0
|
|
flutter_webrtc: ^0.12.0
|
|
|
|
# HTTP client (used directly in LiveKit JWT fetch)
|
|
http: ^1.0.0
|
|
|
|
# Media upload
|
|
file_picker: ^8.0.0
|
|
|
|
# Emoji reactions
|
|
emoji_picker_flutter: ^4.0.0
|
|
|
|
# Web platform (required for dart:js_interop DOM access)
|
|
web: ^1.1.0
|
|
|
|
# UI
|
|
cached_network_image: ^3.4.0
|
|
timeago: ^3.7.0
|
|
intl: ^0.20.0
|
|
flutter_svg: ^2.2.4
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
flutter_lints: ^5.0.0
|
|
build_runner: ^2.4.0
|
|
riverpod_generator: ^3.0.0
|
|
freezed: ^3.0.0
|
|
json_serializable: ^6.9.0
|
|
drift_dev: ^2.22.0
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
|
|
assets:
|
|
- assets/images/
|
|
- assets/icons/
|