diff --git a/install.zsh b/install.zsh
index d5afe8e..81cbbff 100755
--- a/install.zsh
+++ b/install.zsh
@@ -54,10 +54,8 @@ function at-repos-env() {
dport=5000
typeset -A PINNED_COMMITS
- PINNED_COMMITS=(
- [indigo]="d49b454196351c988ceb5ce1f5e21b689487b5ab"
- [atproto]="104e6ed37b0589cc000109dc76316be35b2257e1"
- )
+ PINNED_COMMITS=()
+ #PINNED_COMMITS=( [indigo]="d49b454196351c988ceb5ce1f5e21b689487b5ab" [atproto]="104e6ed37b0589cc000109dc76316be35b2257e1")
}
# Arrays for patch management
@@ -77,6 +75,7 @@ PATCH_FILES=(
"disable-statsig-sdk.diff"
"140-social-app-yarn-network-timeout.patch"
"130-atproto-ozone-enable-daemon-v2.patch"
+ "152-indigo-newpds-dayper-limit-pr707.diff"
"190-bgs-disable-ratelimit.patch"
"200-feed-generator-custom.patch"
)
@@ -266,14 +265,15 @@ function at-repos-patch-apply-all() {
local repo=""
# Determine repo from filename
+ # Note: check indigo/bgs BEFORE pds to avoid "newpds" matching "pds"
if [[ $filename == *"social-app"* || $filename == *"statsig"* ]]; then
repo="social-app"
+ elif [[ $filename == *"indigo"* || $filename == *"bgs"* ]]; then
+ repo="indigo"
elif [[ $filename == *"atproto"* ]]; then
repo="atproto"
elif [[ $filename == *"pds"* ]]; then
repo="atproto"
- elif [[ $filename == *"indigo"* || $filename == *"bgs"* ]]; then
- repo="indigo"
elif [[ $filename == *"feed"* ]]; then
repo="feed-generator"
fi
diff --git a/ios/patching/013-social-app-ios-settings-remove-help.patch b/ios/patching/013-social-app-ios-settings-remove-help.patch
index 03ca178..1f43167 100644
--- a/ios/patching/013-social-app-ios-settings-remove-help.patch
+++ b/ios/patching/013-social-app-ios-settings-remove-help.patch
@@ -1,8 +1,8 @@
diff --git a/src/screens/Settings/Settings.tsx b/src/screens/Settings/Settings.tsx
-index 6b0e184c0..42b609c9e 100644
+index 2fa5aa7de..3faf6a7b3 100644
--- a/src/screens/Settings/Settings.tsx
+++ b/src/screens/Settings/Settings.tsx
-@@ -203,24 +203,8 @@ export function SettingsScreen({}: Props) {
+@@ -205,26 +205,8 @@ export function SettingsScreen({}: Props) {
Notifications
@@ -14,22 +14,24 @@ index 6b0e184c0..42b609c9e 100644
- Content and media
-
-
-- {isNative && findContactsEnabled && (
--
--
--
-- Find friends from contacts
--
--
-- )}
-+{/* Content and media removed for syu.is */}
-+{/* Find friends from contacts removed for syu.is */}
+- {isNative &&
+- findContactsEnabled &&
+- !gate('disable_settings_find_contacts') && (
+-
+-
+-
+- Find friends from contacts
+-
+-
+- )}
++ {/* Content and media removed for syu.is */}
++ {/* Find friends from contacts removed for syu.is */}
-@@ -245,16 +229,6 @@ export function SettingsScreen({}: Props) {
+@@ -249,16 +231,6 @@ export function SettingsScreen({}: Props) {
Languages
diff --git a/ios/patching/037-social-app-ios-disable-contacts-nux.patch b/ios/patching/037-social-app-ios-disable-contacts-nux.patch
index 0fddde3..521b60c 100644
--- a/ios/patching/037-social-app-ios-disable-contacts-nux.patch
+++ b/ios/patching/037-social-app-ios-disable-contacts-nux.patch
@@ -1,13 +1,13 @@
-diff --git a/src/components/dialogs/nuxs/index.tsx b/src/components/dialogs/nuxs/index.tsx
+diff --git a/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx b/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
index 63e11a7f4..70fa993cf 100644
---- a/src/components/dialogs/nuxs/index.tsx
-+++ b/src/components/dialogs/nuxs/index.tsx
-@@ -46,7 +46,7 @@ const queuedNuxs: {
- enabled: ({currentProfile}) => {
- return (
- isNative &&
-- isExistingUserAsOf('2025-12-16T00:00:00.000Z', currentProfile.createdAt)
-+ isExistingUserAsOf('2099-12-16T00:00:00.000Z', currentProfile.createdAt)
- )
- },
- },
+--- a/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
++++ b/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
+@@ -25,7 +25,7 @@ export const enabled = createIsEnabledCheck(props => {
+ !IS_E2E &&
+ isNative &&
+ isExistingUserAsOf(
+- '2025-12-16T00:00:00.000Z',
++ '2099-12-16T00:00:00.000Z',
+ props.currentProfile.createdAt,
+ ) &&
+ isFindContactsFeatureEnabled(props.geolocation.countryCode)
diff --git a/patching/152-indigo-newpds-dayper-limit-pr707.diff b/patching/152-indigo-newpds-dayper-limit-pr707.diff
new file mode 100644
index 0000000..ca45186
--- /dev/null
+++ b/patching/152-indigo-newpds-dayper-limit-pr707.diff
@@ -0,0 +1,106 @@
+diff --git a/bgs/bgs.go b/bgs/bgs.go
+index 35dfab9d..7e225f6c 100644
+--- a/bgs/bgs.go
++++ b/bgs/bgs.go
+@@ -112,6 +112,7 @@ type BGSConfig struct {
+ DefaultRepoLimit int64
+ ConcurrencyPerPDS int64
+ MaxQueuePerPDS int64
++ InitialNewPDSPerDayLimit int64
+ NumCompactionWorkers int
+ }
+
+@@ -122,6 +123,7 @@ func DefaultBGSConfig() *BGSConfig {
+ DefaultRepoLimit: 100,
+ ConcurrencyPerPDS: 100,
+ MaxQueuePerPDS: 1_000,
++ InitialNewPDSPerDayLimit: 10,
+ NumCompactionWorkers: 2,
+ }
+ }
+@@ -159,6 +161,7 @@ func NewBGS(db *gorm.DB, ix *indexer.Indexer, repoman *repomgr.RepoManager, evtm
+ slOpts.DefaultRepoLimit = config.DefaultRepoLimit
+ slOpts.ConcurrencyPerPDS = config.ConcurrencyPerPDS
+ slOpts.MaxQueuePerPDS = config.MaxQueuePerPDS
++ slOpts.DefaultNewPDSPerDayLimit = config.InitialNewPDSPerDayLimit
+ s, err := NewSlurper(db, bgs.handleFedEvent, slOpts)
+ if err != nil {
+ return nil, err
+diff --git a/bgs/fedmgr.go b/bgs/fedmgr.go
+index 42ce7407..9072ba05 100644
+--- a/bgs/fedmgr.go
++++ b/bgs/fedmgr.go
+@@ -45,6 +45,7 @@ type Slurper struct {
+ MaxQueuePerPDS int64
+
+ NewPDSPerDayLimiter *slidingwindow.Limiter
++ initialNewPDSPerDayLimit int64
+
+ newSubsDisabled bool
+ trustedDomains []string
+@@ -70,6 +71,7 @@ type SlurperOptions struct {
+ DefaultRepoLimit int64
+ ConcurrencyPerPDS int64
+ MaxQueuePerPDS int64
++ DefaultNewPDSPerDayLimit int64
+ }
+
+ func DefaultSlurperOptions() *SlurperOptions {
+@@ -82,6 +84,7 @@ func DefaultSlurperOptions() *SlurperOptions {
+ DefaultRepoLimit: 100,
+ ConcurrencyPerPDS: 100,
+ MaxQueuePerPDS: 1_000,
++ DefaultNewPDSPerDayLimit: 10,
+ }
+ }
+
+@@ -112,6 +115,7 @@ func NewSlurper(db *gorm.DB, cb IndexCallback, opts *SlurperOptions) (*Slurper,
+ ssl: opts.SSL,
+ shutdownChan: make(chan bool),
+ shutdownResult: make(chan []error),
++ initialNewPDSPerDayLimit: opts.DefaultNewPDSPerDayLimit,
+ }
+ if err := s.loadConfig(); err != nil {
+ return nil, err
+@@ -224,13 +228,15 @@ func (s *Slurper) loadConfig() error {
+ }
+
+ if sc.ID == 0 {
+- if err := s.db.Create(&SlurpConfig{}).Error; err != nil {
++ sc.NewPDSPerDayLimit = s.initialNewPDSPerDayLimit
++ if err := s.db.Create(&SlurpConfig{ NewPDSPerDayLimit: s.initialNewPDSPerDayLimit, }).Error; err != nil {
+ return err
+ }
+ }
+
+ s.newSubsDisabled = sc.NewSubsDisabled
+ s.trustedDomains = sc.TrustedDomains
++ s.initialNewPDSPerDayLimit = sc.NewPDSPerDayLimit
+
+ s.NewPDSPerDayLimiter, _ = slidingwindow.NewLimiter(time.Hour*24, sc.NewPDSPerDayLimit, windowFunc)
+
+diff --git a/cmd/bigsky/main.go b/cmd/bigsky/main.go
+index 540796f5..cb946aed 100644
+--- a/cmd/bigsky/main.go
++++ b/cmd/bigsky/main.go
+@@ -195,6 +195,12 @@ func run(args []string) error {
+ EnvVars: []string{"RELAY_EVENT_PLAYBACK_TTL"},
+ Value: 72 * time.Hour,
+ },
++ &cli.Int64Flag{
++ Name: "newpds-perday-limit",
++ EnvVars: []string{"RELAY_NEWPDS_PERDAY_LIMIT"},
++ Value: 10,
++ Usage: "initial value for NewPDSPerDayLimit",
++ },
+ &cli.IntFlag{
+ Name: "num-compaction-workers",
+ EnvVars: []string{"RELAY_NUM_COMPACTION_WORKERS"},
+@@ -418,6 +424,7 @@ func runBigsky(cctx *cli.Context) error {
+ bgsConfig.ConcurrencyPerPDS = cctx.Int64("concurrency-per-pds")
+ bgsConfig.MaxQueuePerPDS = cctx.Int64("max-queue-per-pds")
+ bgsConfig.DefaultRepoLimit = cctx.Int64("default-repo-limit")
++ bgsConfig.InitialNewPDSPerDayLimit = cctx.Int64("newpds-perday-limit")
+ bgsConfig.NumCompactionWorkers = cctx.Int("num-compaction-workers")
+ bgs, err := libbgs.NewBGS(db, ix, repoman, evtman, cachedidr, rf, hr, bgsConfig)
+ if err != nil {