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
Patrick Britton
a1d47f8e95
Add reaction system and security improvements
2026-02-01 16:06:12 -06:00
Patrick Britton
2d5323a310
Remove 'Dashboard View' text and implement 3-per-row grid layout
...
- Remove unnecessary 'Dashboard View' badge from header
- Replace vertical list with GridView (3 columns)
- Update reply cards for compact grid layout:
- Smaller avatars (24x24) with initials
- More compact text sizes and spacing
- Reduced padding and margins
- Simplified reactions display (just count)
- Shorter 'View' button instead of 'View Thread'
- Adjust childAspectRatio for better card proportions
- Faster staggered animations (50ms vs 100ms)
- Scale animation instead of slide for grid items
2026-02-01 13:53:58 -06:00
Patrick Britton
ad11183ddc
Fix timeago import error in threaded conversation screen
2026-02-01 13:44:41 -06:00
Patrick Britton
c281a224d3
Redesign threaded conversation layout with dashboard-style reply chains
...
- Add top padding to anchor zone for better spacing
- Move reactions into stage actions to match main post width
- Left-align interaction buttons (reply, like, save)
- Create dashboard-style reply chains with:
- Header showing reply count and 'Dashboard View' badge
- Individual reply cards with menu buttons
- 'View Thread' action buttons
- Consistent width matching main post
- Subtle shadows and borders for depth
- Add staggered animations for reply items
- Improve visual hierarchy and spacing throughout
2026-02-01 13:44:14 -06:00
Patrick Britton
904996a14e
Redesign previous chain (anchor zone) in threaded conversation
...
- Edit correct file: threaded_conversation_screen.dart _buildAnchorZone method
- Implement rounded top corners with flat bottom
- Add gradient from darker navy top to transparent bottom
- Add prominent top border for visual separation
- Remove spacing between anchor zone and stage zone
- Add 'Previous chain' label and enhanced styling
- Update arrow icon with background container
2026-02-01 13:39:12 -06:00
Patrick Britton
681b5b85f9
Add debug logging to _persistReaction to track API response data
2026-02-01 13:13:08 -06:00
Patrick Britton
558272c9a2
Fix reaction UI updates - prioritize local state over post model
...
Change _reactionCountsFor and _myReactionsFor to prefer local state for immediate UI updates after toggle reactions, falling back to post model data when no local state exists.
2026-02-01 13:08:08 -06:00
Patrick Britton
b76154be3a
Fix UUID casting issues in post, notification, and category repositories
...
- Replace NULLIF with CASE WHEN for proper UUID casting
- Fix missing ::uuid casting in WHERE clauses
- Resolve 'operator does not exist: uuid = text' errors
- Focus on post_repository.go, notification_repository.go, and category_repository.go
2026-01-31 13:55:59 -06:00
Patrick Britton
94c5c2095e
chains debugging
2026-01-30 20:56:57 -06:00
Patrick Britton
ca59f3286a
Chain updates
2026-01-30 10:03:15 -06:00
Patrick Britton
b9351b76ae
Reframe Sojorn as Friends-First Social Network
...
## Remove All 'Calm' References & Reframe Platform Identity
### Documentation Updates
- **Deleted**: CALM_UX_GUIDE.md (outdated philosophy document)
- **Updated**: All documentation to remove 'calm' terminology
- **Reframed**: Platform as 'friends-first' instead of 'calm'
### Design System Changes
- Replace 'calm & elegant' with 'warm & welcoming'
- Update theme descriptions to focus on friendliness
- Change 'calm velocity' to 'authentic engagement'
- Update UI microcopy for friendly tone
### Content Updates
- Philosophy documents reframe for social connection focus
- Design guides emphasize warmth over calmness
- API documentation updated for new terminology
- User-facing text changed to friendly language
### Key Terminology Changes
- 'Calm design' 'Warm, welcoming design'
- 'Calm velocity' 'Authentic engagement'
- 'Calm UI' 'Friendly UI'
- 'Structural calm' 'Structural friendliness'
- 'Calm platform' 'Friends-first platform'
### Platform Focus Shift
- From: Text-based calm platform
- To: Friends-first social network prioritizing genuine connections
- Emphasis on social connection over mindfulness
- Focus on warmth and friendliness in design
### Files Modified
- 15+ documentation files updated
- Flutter app UI text updated
- Design system rebranded
- Philosophy documents reframed
- API documentation updated
The platform is now positioned as a warm, welcoming social network that prioritizes genuine human connections over calm minimalism.
2026-01-30 09:49:36 -06:00
Patrick Britton
3c4680bdd7
Initial commit: Complete threaded conversation system with inline replies
...
**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.
2026-01-30 07:40:19 -06:00