* lexicons for block lists
* reorg blockset functionality into graph service, impl block/mute filtering
* apply filterBlocksAndMutes() throughout appview except feeds
* update local feeds to pass through cleanFeedSkeleton(), offload block/mute application
* impl for grabbing block/mute details by did pair
* refactor getActorInfos away, use actor service
* experiment with moving getFeedGenerators over to a pipeline
* move getPostThread over to a pipeline
* move feeds over to pipelines
* move suggestions and likes over to pipelines
* move reposted-by, follows, followers over to pipelines, tidy author feed and post thread
* remove old block/mute checks
* unify post presentation logic
* move profiles endpoints over to pipelines
* tidy
* tidy
* misc fixes
* unify some profile hydration/presentation in appview
* profile detail, split hydration and presentation, misc fixes
* unify feed hydration w/ profile hydration
* unify hydration step for embeds, tidy application of labels
* setup indexing of list-blocks in bsky appview
* apply list-blocks, impl getListBlocks, tidy getList, tests
* tidy
* update pds proxy snaps
* update pds proxy snaps
* fix snap
* make algos return feed items, save work in getFeed
* misc changes, tidy
* tidy
* fix aturi import
* hoist actors out of composeThread()
* tidy
* run ci on all prs
* format
* build
* proxy graph.getListBlocks
* remove unneeded index
* build pds
* setup noop listblock indexer on pds
* remove build
---------
Co-authored-by: dholms <dtholmgren@gmail.com>
* serve legacy repos & checkouts
* tidy
* check lock before formatting commit
* tidy locks
* clean up db test
* check error on failed commit format
* be more generous with new blocks
* Update packages/pds/src/db/index.ts
Co-authored-by: devin ivy <devinivy@gmail.com>
* force upgrade & ensure lock
* make it a bit smarter
* add log
* dont build branch
---------
Co-authored-by: devin ivy <devinivy@gmail.com>
* logical changes in repo
* tests
* tweak commit data
* building pds
* patching up some tests
* tidy + more tests
* patch up bsky
* clean up db
* db migration
* small patches
* fix up another test
* reinclude prevs
* api & lex updates
* add back in deprecated routes
* backward compatibility for commit v2
* add upgrade repo version root
* move namespace
* migration test
* patch up a few more tests
* remove deprecated rebase routes
* tweak api
* sprinkle rev around a few more places
* getCurrent -> getLatestCommit
* fix test
* pr feedback & tidy
* fix up block pagination
* tidy again
* add in a tets
* add cursor to listBlobs
* getRepo rev -> since
* clean up proofs test
* dont change getHead
* tweak migrate route
* build branch
* hit index in block range query
* check for dupe record refs
* tidy
* set prev to null
* dont build branch
* move nsid package in to identifier
* move uri package in to identifier
* update packages to pull from identifier, not nsid or uri
* rename @atproto/identifier to @atproto/syntax
* update all refs from @atproto/identifer to @atproto/syntax
* ✨ Revert labels on takedown reversal
* ✅ Add tests to cover label reversal
* ✅ Add label reversal test to bsky package
* ⚡ Move xrpc call out of db transaction
* pseudocode for sending notification to user
* add notification push token table
* lexicon codegen
* `pds` and `api` codegen
* update lexicon
* add simple function to `putNotificationPushToken` into `notification_push_token` table
* reorgnaize imports
* add unspecced `putNotificationPushToken` to pds
* add `notification-push-tokens` table to PDS
* check if token exists before adding it to db
* add endpoint and appId to PDS table
* setup notification server
* fix logic for inserting token into db
* fix NotificationServer methods by making them static
* fix merge conflicts
* add comments on how sending ntoifications work
* remove dead code
* move notifServer to AppContext
* refactor code to handle notif sending in `Indexer` service
* add additional data when sending notifs
* clean up code
* move notif logic to indexer
* add `appId` and `endpoint` optional params to putNotificationPushToken
* clone notification code to AppView
* add endpoint to register push token with app view
* disable pds and enable app view notification server
* clean up code
* simply logic to check if a token already exists
* remove NotificationServer from PDS
* remove notification-push-token table from PDS
* remove `putNotificationPushToken` endpoint
* clean up code
* let `axios` throw error if `gorush` has an error
* let `kysely` throw error if notif cannot be registered by client
* rename `registerPushNotificationEndpoint` to `registerPushNotifications`
* delete `putNotificationPushToken` from AppView
* rename putPushNotificationToken to registerPushNotification
* remove dead notification code from pds
* remove sanitizeDisplayName from NotificationSever
* move `pushNotificationEndpoint` to config
* temp add `pushNotificationEndpoint` to dev-env setup
* remove example test from feed-generation.test.ts
* add test for registerPushNotification and clean up error handling
* move notifications test to its own file
* add test for NotificationServer to check if tokens are retrieved correctly
* remove unused functions from NotificationServer
* add additional tests for NotificationServer
* add return type to getNotificationDisplayAttributes function
* remove unnecessary comments
* remove dead NotificationServer code from PDS
* clean up code to prepareNotifsToSend
* put sending notifications as part of the backgroundQueue
* log instead of throwing error if notification attributes don't exist
* remove logs
* add more tests to `notification-server.test.ts`
* show replied with text for reply notifs
* better error handling when sending notifications via backgroundQueue
* add rate limit and batching to sending notifications
* add comments to NotificationServer
* merge with main
* use redis for rate limiting instead of normal rate limits
* move `notificationBatchSize` into config
* usePrimary db in test
* hoist push notif migration to present, update model to remove endpoint
* update push notif lexicon
* pare down lex for unregistering push
* helpers for working with service endpoints from did doc
* service-authed register/unregister push notifs
* add well-known endpoint to appview
* update bsky notif service tests
* fix to batching logic, misc tidy
* batch display notifications
* colocate all notification sending logic
* tidy tests
* remove unregister token for now
* fix registerPush lexicon, make a procedure
* fix registerPush impl, test pds proxy to notif service
* fix tests, make notif server optional when not configured
* fix notif server config for bsky app service
* move notif server rate limiting in-mem for now, add sending retry
* codegen tidy
* only push notifs on commit
* build
* fix notif rate limiter check
* send notifs from users w/o a profile
* remove build
---------
Co-authored-by: dholms <dtholmgren@gmail.com>
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* origin: (21 commits)
styleguide
Increase CI test matrix size (#1490)
tweak author-feed rejects test syntax
update test
format
add repost of reply, update snaps
simplify query
fix typos
include reposted replies in posts_no_replies filter
fix bad test syntax
fix actor takedown tests
use getActor, failing atm
only include media posts by post creator
Fix condition for viewing soft-deleted followers (#1485)
✨ Expose takendown profile, their follows and followers to mods (#1456)
Handle revalidation (#1474)
Handle db pool errors on appview (#1483)
Handle db client errors on appview (#1481)
v0.6.4
✨ Allow creating moderation action with a duration (#1431)
...
* origin:
Increase CI test matrix size (#1490)
Fix condition for viewing soft-deleted followers (#1485)
✨ Expose takendown profile, their follows and followers to mods (#1456)
Handle revalidation (#1474)
Handle db pool errors on appview (#1483)
Handle db client errors on appview (#1481)
* ✨ Add action duration to action model
* ✨ Add periodic moderation action reversal
* ✨ Use actionDurationInHours and remove takedownExpiresAt
* ✨ Destroy mod action reversal job
* ✅ Add test for automatic moderation action reversal
* 🧹 Port over actionDuration to bsky package
* ♻️ Better naming for action duration and minor fixes
* ♻️ Optionally build expiresAt based on createdAt when logging action
* ♻️ Adjust constructor params
* ✨ Copy over migration from pds to bsky package
* 🚨 Fix indentation
* ✨ Propagate action reversal from app-view to pds
* ✨ Revert locally only if pushAgent is not found
* build
* merge dbcoordinator work into periodic mod actions
* fix entrypoint for periodic mod reversals
* do not run periodic reversals on sequencer leader
* fix duration in action detail on bsky
* update env for pushing mod reversals
* allow zero-duration actions for testing
* remove build
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* setup bsky so that writes always go to a db primary
* test bsky primary db functionality
* sprinkle db primary over moderation and view maintainer usage
* make bsky tests more strict on primary/secondary db, fixes
* maintain prev db config on appview, require primary db, make primary/replica explicit in config
* tidy
* sketch out db replicas
* wip
* support multiple tags per bsky replica, "any" tag, fallbacks and warns
* clarify tags
* use new coordinator api across routes & services
* wire-up replica tagging config
* tidy
* cleanup entroypoints and tests for db coordinator
* fix pds test
* re-hookup migrate db
* standardize env vars for db on bsky services
* tidy
* build
* fix bav api entrypoint
* support DB_POSTGRES_URL on ingester/indexer for backwards compat
* remove build
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>
* first pass on profiles
* quick test
* wip
* wip
* test post thread
* record embeds
* get author feed profiles
* wip timeline
* fix get timeline
* switch from counter to tid
* tidy into a service
* quick tid test
* pr feedback
* clock -> rev
* update image formatting
* disable migration & build branch
* add recent posts to getAuthorFeed & handle post thread not found errors
* refactor for lag header
* tidy
* rm collections check
* tidy test
* pr feedback
* fix small bug
* build branch
* get migrations into system
* enable migrations
* Add self-label schemas
* switch around array and union for self-labels
* apply self-labels to post and profile views
* test for self labels in pds
* apply self-labels to post and profile views in bsky appview
* test for self labels in bsky appview
* update pds proxied test snapshots
* Add support for self-labels to the mdoeration sdk
* Disable unknown-labeler filtering until 3P support is added
---------
Co-authored-by: Devin Ivy <devinivy@gmail.com>