Commit graph

62 commits

Author SHA1 Message Date
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 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 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 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 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 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 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 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 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 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
Patrick Britton b10595f252 Age gating: birth month/year in registration, under-16 login block, under-18 NSFW block 2026-02-06 20:56:00 -06:00
Patrick Britton 256592379a NSFW content system: blur overlay, user toggle, AI tri-state (clean/nsfw/flag), feed filtering 2026-02-06 20:42:23 -06:00
Patrick Britton 7c52a1a1ed AI moderation config: OpenRouter integration, admin console page, 10s quip limit 2026-02-06 19:48:36 -06:00
Patrick Britton 9d7aa46a0d Fix bracket mismatch in notifications_screen.dart 2026-02-06 16:15:03 -06:00
Patrick Britton 72264c3044 NotificationsScreen + DiscoverScreen: match Thread screen AppBar (back, home/search/chat actions, full-page push) 2026-02-06 16:12:12 -06:00
Patrick Britton 8d52e34647 DiscoverScreen: match Thread screen AppBar (back, title, home/chat actions) 2026-02-06 16:04:49 -06:00
Patrick Britton b8bd45c0f9 NotificationsScreen: match Thread screen AppBar (back, title, home/chat actions, tab bar) 2026-02-06 16:03:50 -06:00
Patrick Britton 858d57b5b2 Keep original bottom nav, navigate search/notifications inside shell with Threads-style top bar 2026-02-06 16:00:07 -06:00
Patrick Britton 8623596903 Revert "Threads-style nav: Home, Search, +, Activity (heart+badge), Profile as bottom nav tabs"
This reverts commit 7f81923b3e.
2026-02-06 15:58:58 -06:00
Patrick Britton 7f81923b3e Threads-style nav: Home, Search, +, Activity (heart+badge), Profile as bottom nav tabs 2026-02-06 15:57:16 -06:00
Patrick Britton 863ddfe654 Revert "Fix: Search and Notifications render inside shell (bottom nav stays visible), remove duplicate nav"
This reverts commit d3aa09424e.
2026-02-06 15:55:33 -06:00
Patrick Britton d3aa09424e Fix: Search and Notifications render inside shell (bottom nav stays visible), remove duplicate nav 2026-02-06 15:51:59 -06:00
Patrick Britton c9add58b8b Revert "Threads-style nav: move Search and Activity into bottom nav tabs, remove duplicate nav from NotificationsScreen"
This reverts commit 1376802f76.
2026-02-06 15:50:38 -06:00
Patrick Britton 1376802f76 Threads-style nav: move Search and Activity into bottom nav tabs, remove duplicate nav from NotificationsScreen 2026-02-06 15:49:46 -06:00
Patrick Britton 8186e9e71c Fix notifications: add archived_at to model/queries, archived tab returns only archived, add bottom nav to notifications screen 2026-02-06 14:30:18 -06:00
Patrick Britton 46566f394b Clean up: fix run scripts, remove 190+ debug print statements from 22 files, keep only FCM debugPrints for active notification work 2026-02-06 14:13:03 -06:00
Patrick Britton b14e1fbfa3 Fix notification badge: archive marks as read; change notifications to full page 2026-02-06 13:04:36 -06:00
Patrick Britton b5002c1ce4 Replace blocked content popup with Instagram-style inline banner 2026-02-06 11:53:32 -06:00
Patrick Britton f6c4bb88e0 Add layered content moderation: hard blocklist + strike system + client-side filter 2026-02-06 11:46:30 -06:00
Patrick Britton 0954c1e2a3 feat: add Turnstile to login, improve email templates, and security cleanup
- Add Cloudflare Turnstile verification to login flow
- Add API_BASE_URL and APP_BASE_URL to config for environment flexibility
- Redesign verification and password reset emails with modern HTML templates
- Use config URLs instead of hardcoded domains in auth handlers
- Remove sensitive logging from OTK operations for security
- Delete unused deployment and draft inspection scripts
- Add TURNSTILE_SITE_KEY to Flutter run
2026-02-06 08:51:34 -06:00
Patrick Britton 33ea9b1d56 feat: notify archive instead of delete, fix api domain failsafe 2026-02-04 19:38:02 -06:00
Patrick Britton 0f6a91e319 feat: implement traditional threaded quips (comments) sheet with rich text post body and expand functionality. 2026-02-04 18:44:20 -06:00
Patrick Britton c635da552d Implement robust notification deep linking
- Create SecureChatLoaderScreen for linking to conversations by ID
- Add /secure-chat/:id route to AppRoutes
- Update NotificationService to use AppRoutes.router for all navigation
- Fix Follow and Post navigation routes in NotificationService
- Decouple notification handling from manual Navigator pushes
2026-02-04 17:42:37 -06:00
Patrick Britton 69358b016f Fix compilation errors in followers/following and privacy screens
- Fix FollowersFollowingScreen: correct imports, AppTheme references, SignedMediaImage param
- Fix profile_screen.dart: move _navigateToConnections to _ProfileScreenState, pass callback to _ProfileHeader
- Fix profile_settings_screen.dart: update property names (isPrivate, defaultVisibility)
2026-02-04 17:21:08 -06:00
Patrick Britton adeffe691e Add followers/following screen and comprehensive privacy settings
Features:
- Create FollowersFollowingScreen with tabs for followers/following lists
- Make follower/following counts tappable on profile to navigate to connections
- Create comprehensive PrivacySettingsScreen with sections for:
  - Account privacy (private account toggle)
  - Post visibility defaults
  - Interaction controls (who can message/comment)
  - Discovery settings (search visibility)
  - Circle (close friends) management placeholder
  - Data export and blocked users
- Update ProfilePrivacySettings model with additional fields
- Connect to new backend API endpoints
2026-02-04 16:46:20 -06:00
Patrick Britton 92d8920183 Fix 413 Request Entity Too Large and refine image display aesthetics 2026-02-04 13:32:46 -06:00
Patrick Britton 3f3e228e8a feat: Add comprehensive notification system including model, UI, and service integration, alongside new deployment documentation. 2026-02-04 12:17:58 -06:00
Patrick Britton f77bd72c57 feat: Implement comprehensive reaction display widget, add numerous new screens, services, models, documentation, and configuration files. 2026-02-04 10:57:00 -06:00
Patrick Britton 002f960142 Update terminology, fix search feed, and deploy updates 2026-02-03 21:44:08 -06:00
Patrick Britton 10ae2944d2 feat: Initialize Sojorn Flutter application with core UI, services, E2EE, backup, and build scripts for various platforms. 2026-02-03 17:13:28 -06:00