**Major Features Added:** - **Inline Reply System**: Replace compose screen with inline reply boxes - **Thread Navigation**: Parent/child navigation with jump functionality - **Chain Flow UI**: Reply counts, expand/collapse animations, visual hierarchy - **Enhanced Animations**: Smooth transitions, hover effects, micro-interactions **Frontend Changes:** - **ThreadedCommentWidget**: Complete rewrite with animations and navigation - **ThreadNode Model**: Added parent references and descendant counting - **ThreadedConversationScreen**: Integrated navigation handlers - **PostDetailScreen**: Replaced with threaded conversation view - **ComposeScreen**: Added reply indicators and context - **PostActions**: Fixed visibility checks for chain buttons **Backend Changes:** - **API Route**: Added /posts/:id/thread endpoint - **Post Repository**: Include allow_chain and visibility fields in feed - **Thread Handler**: Support for fetching post chains **UI/UX Improvements:** - **Reply Context**: Clear indication when replying to specific posts - **Character Counting**: 500 character limit with live counter - **Visual Hierarchy**: Depth-based indentation and styling - **Smooth Animations**: SizeTransition, FadeTransition, hover states - **Chain Navigation**: Parent/child buttons with visual feedback **Technical Enhancements:** - **Animation Controllers**: Proper lifecycle management - **State Management**: Clean separation of concerns - **Navigation Callbacks**: Reusable navigation system - **Error Handling**: Graceful fallbacks and user feedback This creates a Reddit-style threaded conversation experience with smooth animations, inline replies, and intuitive navigation between posts in a chain.
102 lines
1.9 KiB
YAML
102 lines
1.9 KiB
YAML
name: sojorn
|
|
description: "sojorn - Friend's Only"
|
|
publish_to: 'none'
|
|
version: 1.0.0+1
|
|
|
|
environment:
|
|
sdk: '>=3.6.0 <4.0.0'
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
flutter_localizations:
|
|
sdk: flutter
|
|
|
|
# Supabase (removed - migrated to Go backend)
|
|
firebase_core: ^3.4.0
|
|
firebase_messaging: ^15.1.0
|
|
|
|
# State Management
|
|
flutter_riverpod: ^2.6.1
|
|
|
|
# HTTP & API
|
|
http: ^1.2.2
|
|
|
|
# UI & Utilities
|
|
cupertino_icons: ^1.0.8
|
|
google_fonts: ^6.2.1
|
|
share_plus: ^10.0.2
|
|
timeago: ^3.7.0
|
|
url_launcher: ^6.3.1
|
|
image_picker: ^1.1.2
|
|
image: ^4.3.0
|
|
flutter_image_compress: ^2.4.0
|
|
video_player: ^2.10.1
|
|
visibility_detector: ^0.4.0+2
|
|
ffmpeg_kit_flutter_new: ^4.1.0
|
|
|
|
# Rich Text Editor
|
|
flutter_quill: ^11.0.0
|
|
flutter_quill_extensions: ^11.0.0
|
|
flutter_colorpicker: ^1.1.0
|
|
flutter_markdown: ^0.7.4
|
|
markdown: ^7.3.0
|
|
|
|
# Image Editing
|
|
pro_image_editor: ^6.0.0
|
|
pro_video_editor: ^1.3.0
|
|
camera: ^0.10.0+1
|
|
|
|
# Navigation
|
|
go_router: ^15.1.0
|
|
|
|
# Storage
|
|
shared_preferences: ^2.3.4
|
|
hive: ^2.2.3
|
|
hive_flutter: ^1.1.0
|
|
|
|
# E2EE Cryptography
|
|
cryptography: ^2.5.0
|
|
convert: ^3.1.1
|
|
pointycastle: ^3.7.3
|
|
file_picker: ^10.3.10
|
|
universal_html: ^2.0.8
|
|
|
|
# Maps and Location
|
|
flutter_map: ^8.2.0
|
|
latlong2: ^0.9.1
|
|
geolocator: ^11.0.0
|
|
permission_handler: ^11.3.0
|
|
flutter_secure_storage: ^9.0.0
|
|
local_auth: ^2.2.0
|
|
http_parser: ^4.1.2
|
|
app_links: ^6.3.2
|
|
cloudflare_turnstile: ^3.6.2
|
|
path_provider: ^2.1.5
|
|
video_editor: ^3.0.0
|
|
chewie: ^1.10.0
|
|
intl: 0.19.0
|
|
web_socket_channel: ^3.0.3
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
|
|
flutter_lints: ^6.0.0
|
|
flutter_launcher_icons: ^0.13.1
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
assets:
|
|
- assets/images/
|
|
- assets/rive/
|
|
- assets/audio/
|
|
|
|
dependency_overrides:
|
|
intl: 0.19.0
|
|
|
|
flutter_launcher_icons:
|
|
android: "launcher_icon"
|
|
ios: true
|
|
image_path: "assets/icon/icon.png"
|
|
min_sdk_android: 21
|