Commit graph

199 commits

Author SHA1 Message Date
Patrick Britton 3c74457af1 fix: use Promise.allSettled so one failing fetch doesn't wipe the other 2026-02-08 12:14:40 -06:00
Patrick Britton cae9a479da fix: remove user_id from profiles query - column doesn't exist 2026-02-08 12:13:36 -06:00
Patrick Britton 7b493bcd67 feat: model selector dropdown fetches from OpenRouter API 2026-02-08 12:02:53 -06:00
Patrick Britton 2acf76eab2 fix: move official-profiles route to avoid Gin wildcard conflict 2026-02-08 11:49:00 -06:00
Patrick Britton 3d371e965e feat: add ListOfficialProfiles endpoint + profiles grid in admin UI 2026-02-08 11:39:27 -06:00
Patrick Britton 2dae622dea feat: official accounts management - AI post generation, RSS news import (NPR/AP/BMTN), scheduled auto-posting, admin UI 2026-02-08 11:30:44 -06:00
Patrick Britton de5797ad41 feat: add Content Tools page to Next.js admin - create user + import content (posts/quips/beacons) 2026-02-08 10:04:19 -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 6621e323e6 feat: admin create user + import content (posts/quips/beacons) endpoints 2026-02-08 09:43:55 -06:00
Patrick Britton 8d419ba057 fix: close ALL NSFW leaks - GetPostByID, GetPostChain, GetPostFocusContext now filter NSFW server-side 2026-02-08 00:27:23 -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 77ef1ecac5 feat: wire image + video thumbnail moderation into post creation flow (OpenRouter vision model, worst-outcome merge) 2026-02-07 18:21:36 -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 8d00dc4fda fix: add is_nsfw/nsfw_reason to all post queries (profile, detail, saved, liked, chain, focus context) 2026-02-07 18:12:35 -06:00
Patrick Britton 8ea63edf8c fix: exclude NSFW posts from search, discover, trending, hashtag pages - only allow in following feed + own profile 2026-02-07 17:39:31 -06:00
Patrick Britton 27b48128fe feat: full NSFW system - Cinemax rules, auto-reclassify with warning, not-allowed removal with appeal email, blur toggle setting, user self-labeling 2026-02-07 16:58:57 -06:00
Patrick Britton 68dd8d3544 feat: AI Audit Log admin page with filters, feedback training, and export 2026-02-07 16:43:38 -06:00
Patrick Britton 1f0461b4f4 feat: AI moderation audit log with admin feedback for training - DB migration, service methods, admin endpoints 2026-02-07 16:35:50 -06:00
Patrick Britton c83317c29c fix: COALESCE all bare p.duration_ms to prevent NULL scan crash on focus-context and other queries 2026-02-07 16:29:35 -06:00
Patrick Britton 10c48f1fd7 fix: badge count uses live query instead of stale cached column, excludes archived 2026-02-07 15:15:02 -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 95056aee82 Fix AI moderation: wrap content with moderation prefix, add temperature=0 and max_tokens to prevent conversational replies 2026-02-06 21:03:46 -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 e81e9e52b7 Fix AI moderation parser: robust JSON extraction + score-based flagging override 2026-02-06 20:19:36 -06:00
Patrick Britton d40baf9bee AI moderation: detailed explanations per category in test results 2026-02-06 20:06: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 d73b73ac89 Remove hardcoded reserved names - all reserved usernames now DB-only via admin console 2026-02-06 17:26:02 -06:00
Patrick Britton 2fb413c8d2 Admin console: reserved usernames management + claim request review system 2026-02-06 17:13:15 -06:00
Patrick Britton 6a1f20759b Add reserved username + inappropriate content validation for registration and profile updates 2026-02-06 16:32:14 -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 a94c91da24 Fix notification badge: exclude archived from count, recalculate on archive, update trigger 2026-02-06 15:44:58 -06:00
Patrick Britton d83cdb3778 Fix orphaned string literals in local_message_store.dart causing build failure 2026-02-06 15:40:36 -06:00
Patrick Britton 2ad148f607 Refactor SendPulse into shared service, wire app registration to Sojorn Members list (book 568122) 2026-02-06 15:33:58 -06:00
Patrick Britton 90ff6e223b Wire SendPulse newsletter signup into waitlist endpoint, add subscriber to address book 568090 2026-02-06 14:45:51 -06:00
Patrick Britton b91e42d005 Add coming soon landing page with waitlist signup, add waitlist API endpoint 2026-02-06 14:40:37 -06:00