Patrick Britton
8365d0c079
Replace deprecated MaterialStateProperty with WidgetStateProperty in admin_scaffold
2026-02-10 16:20:08 -06:00
Patrick Britton
6867c95ca6
Replace all .withOpacity() with .withValues(alpha:) across 32 files (189 occurrences) - zero deprecation warnings remaining
2026-02-10 16:18:50 -06:00
Patrick Britton
2f9f0aaaf2
Fix profile header 9px overflow: raise compact threshold to 280, add clip safety net
2026-02-10 16:06:28 -06:00
Patrick Britton
d3feaf98d8
Fix build errors: add basicBlack token, fix const contexts, fix missing import and non-existent token references
2026-02-10 15:47:08 -06:00
Patrick Britton
568a764d37
Replace last Colors.transparent in notifications_screen.dart - zero Colors.* remaining
2026-02-10 15:39:18 -06:00
Patrick Britton
aa2b5d3447
Replace Colors.* in remaining files: intel_cards, quip_metadata, auth screens, admin screens, discover, search, profile, settings, utils, services, app_theme
2026-02-10 15:38:23 -06:00
Patrick Britton
248a32eb87
Replace Colors.* in admin_scaffold, admin_content_tools, secure_chat_screen, new_conversation_sheet, notifications_screen, viewable_profile
2026-02-10 15:30:22 -06:00
Patrick Britton
3aa0f5e93a
Replace Colors.* in profile_settings dialogs, beacon.dart model, resources_sheet, beacon_screen remaining
2026-02-10 15:27:03 -06:00
Patrick Britton
cefa69d7e7
Replace inline Colors.* with SojornColors tokens in secure_chat screens + chat_data_management + local_key_backup
2026-02-10 14:47:02 -06:00
Patrick Britton
cca4ffa08b
Replace inline Colors.* with SojornColors tokens in video_player_with_comments, image_editor, traditional_quips_sheet
2026-02-10 14:43:43 -06:00
Patrick Britton
2551829604
Replace inline Colors.* with SojornColors tokens in quip_editor, quip_metadata, video_editor screens
2026-02-10 14:40:48 -06:00
Patrick Britton
7a53f41b97
Replace inline Colors.* with SojornColors tokens in quip screens (video_item, preview, recorder, feed)
2026-02-10 14:35:21 -06:00
Patrick Britton
52dfa0c653
Replace inline Colors.* with SojornColors tokens in profile_settings_screen.dart (56 replacements)
2026-02-10 14:23:23 -06:00
Patrick Britton
38f0952bc8
Replace inline Colors.* with SojornColors tokens in beacon_detail, create_beacon_sheet, beacon_bottom_sheet
2026-02-10 14:19:57 -06:00
Patrick Britton
54fac1eafa
Replace inline Colors.* with SojornColors tokens in beacon_screen.dart (46 replacements)
2026-02-10 14:16:46 -06:00
Patrick Britton
9093c17e55
Replace inline Colors.* with SojornColors tokens in feed_sojorn, home_shell, threaded_conversation, compose screens
2026-02-10 14:15:16 -06:00
Patrick Britton
b1f1cc5a44
Replace inline Colors.* with SojornColors tokens in secure_chat bubble + composer widgets
2026-02-10 14:12:54 -06:00
Patrick Britton
9b11b95a57
Replace inline Colors.* with SojornColors tokens in 8 more widgets: composer, reactions, modals, safety, button, radial_menu
2026-02-10 13:59:15 -06:00
Patrick Britton
9ec4ad408d
Replace inline Colors.* with SojornColors tokens in chain_quote, interactive_reply_block, sojorn_swipeable_post
2026-02-10 13:57:13 -06:00
Patrick Britton
4512ff11d1
Grand Unification: centralize design tokens, add sponsored PostViewMode, delete 9 dead files
...
Phase 1 - Design Tokens:
- tokens.dart: Add NSFW, sponsored, overlay, surface state color tokens
- tokens.dart: Add granular spacing (s6, s8) and card gap constants
- tokens.dart: Add SojornRadii.xl
- app_theme.dart: Bridge new tokens (nsfwWarning*, sponsored*, overlay*, media*)
Phase 2 - Super Post Unification:
- post_view_mode.dart: Add PostViewMode.sponsored enum value
- sojorn_post_card.dart: Handle sponsored mode with badge, use token refs for NSFW colors
- feed_sojorn_screen.dart: Replace SponsoredPostCard with sojornPostCard(mode: sponsored)
- post_body/media/link_preview: Add sponsored case to all PostViewMode switches
- post_media.dart: Replace inline Colors.* with SojornColors/AppTheme tokens
- post_header.dart: Replace Colors.white with SojornColors.basicWhite
- post_menu.dart: Replace Colors.red with SojornColors.destructive
- post_actions.dart: Replace Colors.transparent with SojornColors.transparent
Phase 3 - Tree Shake (9 files deleted):
- widgets/post/sponsored_post_card.dart (absorbed into sojornPostCard)
- widgets/post/chain_quote_widget.dart (duplicate, unused)
- widgets/post_with_video_widget.dart (dead)
- widgets/video_player_widget.dart (dead)
- widgets/video_thumbnail_widget.dart (dead)
- widgets/composer_field.dart (dead)
- widgets/compose_fab.dart (dead)
- widgets/category_tile.dart (dead)
- theme/sojorn_feed_palette.dart (deprecated, unused)
2026-02-10 13:55:00 -06:00
Patrick Britton
701150bc8c
fix: reduce spacing around link preview card - remove top padding, tighten gap above
2026-02-10 12:57:31 -06:00
Patrick Britton
858d556d25
fix: sign link preview image URLs through assetService for R2 paths
2026-02-09 20:28:40 -06:00
Patrick Britton
d3d1e371c1
fix: missing closing brace in sojorn_post_card, remove invalid onExpired param in turnstile_widget
2026-02-09 19:23:57 -06:00
Patrick Britton
257acb0e51
refactor: unify post widgets, profile screens, and tree-shake dead code
...
Phase 1 - Post Widget Unification:
- Added PostViewMode.thread for compact thread styling
- Updated SojornPostCard, PostBody, PostLinkPreview, PostMedia for thread mode
- Migrated feed_personal_screen, profile_screen, viewable_profile_screen to sojornPostCard
- Deleted deprecated: post_card.dart, post_item.dart, reading_post_card.dart
Phase 2 - Profile Screen Unification:
- Renamed ViewableProfileScreen to UnifiedProfileScreen
- Made handle optional (null = own profile mode)
- Added auth listener, auto-create profile, avatar actions for own profile
- Added connections navigation to stats for own profile
- Updated all routes and references across codebase
- Deleted old profile_screen.dart
Phase 3 - Tree Shaking:
- Deleted 9 orphan files: compose_and_chat_fab, sojorn_top_bar, sojorn_app_bar,
sojorn_dialog, sojorn_card, glassmorphic_quips_sheet, kinetic_thread_widget,
reaction_strip, smart_reaction_button
2026-02-09 17:55:39 -06:00
Patrick Britton
3d4b661370
fix: improve Turnstile configuration - handle web/mobile differences, add error callbacks
2026-02-09 16:46:02 -06:00
Patrick Britton
5674c8e4f8
feat: apply thread screen news card layout to all post cards - show after body, hide URLs
2026-02-09 16:44:44 -06:00
Patrick Britton
feed826e39
feat: show news card in thread screen, hide URL text when link preview is present
2026-02-09 16:39:17 -06:00
Patrick Britton
c8b08968ba
fix: make Turnstile baseUrl nullable to avoid const error
2026-02-09 16:25:45 -06:00
Patrick Britton
ba71610fb6
fix: use actual API baseUrl for Turnstile instead of localhost
2026-02-09 16:24:10 -06:00
Patrick Britton
2dd1fe3ac2
fix: downgrade share_plus to v10.1.4 due to Android build errors with v12
2026-02-09 16:10:41 -06:00
Patrick Britton
2377899d72
fix: web thumbnail loading - bypass signing on web, add fallback, improve error handling
2026-02-09 14:45:43 -06:00
Patrick Britton
d43cf2de06
chore: update share_plus ^12.0.1, replace discontinued flutter_markdown with flutter_markdown_plus
2026-02-09 12:23:07 -06:00
Patrick Britton
5780f0ff75
feat: beacon tactical dashboard - dark map-first UI, DraggableScrollableSheet, severity pins, 'I see this too' verification, incident categories
2026-02-09 10:43:34 -06:00
Patrick Britton
442b4bef32
feat: beacon safety system - add severity/incident_status/radius to DB, model, and API
2026-02-09 10:21:07 -06:00
Patrick Britton
9a66d7df64
feat: move link preview card (news widget) above post body text
2026-02-08 15:22:18 -06:00
Patrick Britton
ea692da571
fix: RadialMenuOverlay gesture-eating bug IgnorePointer when not visible + status listener to trigger rebuild on dismiss
2026-02-08 15:04:08 -06:00
Patrick Britton
d6204db5c4
fix: prevent setState after pop with _popped guard, remove snackbar from compose to prevent scaffold corruption on Android
2026-02-08 14:58:53 -06:00
Patrick Britton
1d05300f17
feat: show link URL below post body for news stories
2026-02-08 14:53:46 -06:00
Patrick Britton
e03442f789
fix: reset focus after compose pop to prevent web freeze, show snackbar before pop, skip animation replay on thread reload
2026-02-08 14:48:44 -06:00
Patrick Britton
46bf51a6c4
feat: compose URL preview, truncated URLs in post body, sync link preview fetch
2026-02-08 14:20:38 -06:00
Patrick Britton
43199e52bc
refactor: remove hardcoded safe domain lists, fetch from backend API instead
2026-02-08 13:57:38 -06:00
Patrick Britton
e9e140df5e
feat: link preview system - OG tag fetching, safe URL validation, full-width thumbnail card
2026-02-08 13:27:13 -06:00
Patrick Britton
9a9b2eb887
feat: admin content tools UI - create user form + import posts/quips/beacons via links or CSV
2026-02-08 09:52:19 -06:00
Patrick Britton
25d3e213ea
fix: hide NSFW posts entirely when user hasn't enabled NSFW - backend filtering + Flutter safety net
2026-02-08 00:19:44 -06:00
Patrick Britton
b51c9ba90b
feat: email notifications for deactivate/delete, typed confirmations, chat backup manager, provider invalidation on logout
2026-02-07 23:39:51 -06:00
Patrick Britton
bc35eea69b
feat: add NSFW self-labeling toggle in compose, blur setting in user preferences, improve signup date pickers with modal sheets
...
- Add `isNsfw` checkbox to compose screen for user self-labeling
- Add `nsfwBlurEnabled` setting to UserSettings model (default true)
- Replace signup month/year dropdowns with modal bottom sheet pickers
- Preload Noto Color Emoji font on app startup
- Refactor notifications/discover screens to use FullScreenShell component
2026-02-07 18:15:54 -06:00
Patrick Britton
f48274706a
fix: cast birthYear subtraction to int to fix build error
2026-02-07 12:07:04 -06:00
Patrick Britton
6e8cc5d802
fix: remove anonymous label from beacons, just omit author info entirely
2026-02-07 12:04:41 -06:00
Patrick Britton
67f74deb58
feat: anonymous beacons, video metadata stripping, remove beacon author exposure
...
- GetNearbyBeacons no longer returns author info (anonymous placeholder)
- Beacons excluded from profile posts (GetPostsByAuthor)
- Vouch/report notifications removed for beacon privacy
- MediaHandler strips all metadata (EXIF/GPS/device) via ffmpeg before R2 upload
- Flutter beacon UI shows 'Anonymous Beacon' instead of author info
2026-02-07 12:02:47 -06:00
Patrick Britton
ecc02e10cc
feat: implement account deactivation, deletion (14-day), and immediate destroy with email confirmation
2026-02-07 11:13:11 -06:00