Commit Graph

12366 Commits (cb1d1f973559dd3fd8f5ab4fab72bed3d6649900)
 

Author SHA1 Message Date
Your Name cb1d1f9735 Remove PF_HOME_TIMELINE_CACHE config entry entirely
Home timeline caching is now always on with no toggle.
3 months ago
Your Name 986e271e98 Default PF_HOME_TIMELINE_CACHE to true, remove false code path
The home timeline cache-busting calls (Cache::forget) are now
unconditional since caching is always on. Removed the config
checks from StatusObserver, FollowerObserver, and UnfollowPipeline.
3 months ago
Your Name 8d156bda1a Add DB fallback, cache TTL, and configurable dropoffs for all timelines
Improvements to all three timeline services (Home, Public, Network):

1. DB fallback on cache exhaustion:
   - Add fallbackMaxId() to each service that queries the DB when
     Redis returns empty during max_id pagination
   - Users can now scroll infinitely regardless of cache size

2. Cache TTL (24 hours):
   - All sorted sets now expire after 24h, triggering a fresh rebuild
   - Prevents stale data from accumulating
   - Configurable via PF_HOME_TIMELINE_CACHE_TTL,
     INSTANCE_PUBLIC_TIMELINE_CACHE_TTL, INSTANCE_NETWORK_TIMELINE_CACHE_TTL

3. Configurable dropoff limits:
   - Home: 400 -> 800 (per user, via PF_HOME_TIMELINE_CACHE_DROPOFF)
   - Public: 400 -> 10000 (via INSTANCE_PUBLIC_TIMELINE_CACHE_DROPOFF)
   - Network: already 10000

4. Increased get() cap from 100 to 500 in all services
3 months ago
Your Name b08da33a3c Merge branch 'investigate-network-timeline-cached' into timeline-improvements 3 months ago
Your Name 49211c129e Merge branch 'investigate-public-timeline-cached' into timeline-improvements 3 months ago
Your Name 247054b262 Remove INSTANCE_NETWORK_TIMELINE_CACHED, always use Redis cache
Remove the config entry and all DB-query fallback branches for the
network/federated timeline. NetworkTimelineService (Redis) is now
the only code path.

- config/instance.php: remove 'cached' key from timeline.network
- ApiV1Controller: remove DB fallback in network timeline branch
- PublicApiController: remove entire DB fallback (~70 lines)
- Helpers.php: remove cached check before adding to NetworkTimelineService
- Diagnostics: remove INSTANCE_NETWORK_TIMELINE_CACHED row
3 months ago
Your Name ec51672fe2 Increase network timeline cache_dropoff default to 10000
100 items was far too small — users hit an empty feed after just a
few pages since there's no DB fallback. 10000 gives deep scrolling
at negligible Redis cost (~80KB for status IDs in a sorted set).
3 months ago
Your Name 68886fb772 Default INSTANCE_NETWORK_TIMELINE_CACHED to true
When PF_NETWORK_TIMELINE is enabled (the default), the network/federated
timeline will now use NetworkTimelineService (Redis sorted set) by default
instead of direct DB queries.

The cache_dropoff (100) and max_hours_old (2160h/90d) tuning values
remain configurable via their respective env vars.
3 months ago
Your Name 06c0a16a81 Remove INSTANCE_PUBLIC_TIMELINE_CACHED, always use Redis cache
Remove the config entry and the DB-query fallback branch from
ApiV1Controller::timelinePublic(). The PublicTimelineService
(Redis sorted set) path is now the only code path for serving
the local public timeline via the Mastodon API.
3 months ago
Your Name 80fb583b72 Default INSTANCE_PUBLIC_TIMELINE_CACHED to true
This controls whether the Mastodon-compatible /api/v1/timelines/public
endpoint uses PublicTimelineService (Redis sorted set) or direct DB
queries. The Redis path is mature, handles cache warming, and Redis
is already a hard dependency. Defaulting to true for better performance
on all instances.
3 months ago
Your Name 5fbe5682f2 Remove cached timeline feature flags, make caching always-on
Remove EXP_CPT and EXP_CHT config entries from exp.php and eliminate
all conditional branches. The Redis-cached timeline paths are now the
only code paths:

- ApiV1Controller: Remove ~150 lines of DB-query home timeline fallback
- PublicApiController: Remove ~70 lines of DB-query public timeline fallback
- StatusObserver: Always dispatch feed removal on status delete
- StatusEntityLexer: Always dispatch feed insert on new status
- FeedRemoveDomainPipeline: Remove early-return guard
- Diagnostics: Remove EXP_CPT row

The cached timeline code is mature with proper cold-boot handling
and Redis is already a hard dependency for Pixelfed.
3 months ago
Your Name b6ad52b522 Enable cached timelines by default (EXP_CPT, EXP_CHT)
Change default for cached_public_timeline and cached_home_timeline
from false to true. Both use Redis sorted sets to serve timeline
feeds instead of direct DB queries on every request.

The code is mature with proper cold-boot handling (FeedWarmCachePipeline)
and full lifecycle management (insert/remove on post create/delete,
follow/unfollow, domain blocks). Redis is already a hard dependency.

Also remove a no-op frontend check in SPA Timeline.vue that set
baseApi to the same value regardless of the flag.
3 months ago
Daniel Supernault 0a41c9e387
Fix typo 3 months ago
Daniel Supernault 14b325641f
Update Password Change with new Revoke Sessions option
As requested in https://lgbtqia.space/@serigala_tropis/116412473982617371
3 months ago
dansup 3723f796a1
Merge pull request #6554 from pixelfed/w4
API: Media uploads creates orphaned files after status creation validation
4 months ago
Your Name b329ee9edc API: Media uploads leak orphaned files when status creation validation fails 4 months ago
Daniel Supernault d8c9cece15
Lint 4 months ago
Daniel Supernault 015f619008
Fix key 4 months ago
Daniel Supernault 1add0938fe
Increase default concurrency 4 months ago
Daniel Supernault e4e9d12b5c
Reduce timeout 4 months ago
Daniel Supernault 92f469ff20
Fix delete fanout 4 months ago
Daniel Supernault 7be475cbb7
Add debugging 4 months ago
Daniel Supernault 9826b54d76
Dont sign content-type 4 months ago
Daniel Supernault 78a657d7df
Refactor, use actor private key, thanks Mastodon ;) 4 months ago
Daniel Supernault dfd538e7e0
Fix signing headers 4 months ago
Daniel Supernault c5868de7d6
Lint 4 months ago
Daniel Supernault f98588b769
Lint 4 months ago
Daniel Supernault 0175b4a605
Lint 4 months ago
Daniel Supernault f5d2d95e76
Lint 4 months ago
Daniel Supernault 8aab6bdf1a
Lint 4 months ago
Daniel Supernault b969c5acd0
Lint 4 months ago
Daniel Supernault 273efe88c1
Lint 4 months ago
Daniel Supernault c12f07f7d8
Lint 4 months ago
Daniel Supernault 87a8b4507f
Update UserAccountDelete.php 4 months ago
Daniel Supernault 967ab88ec0
Fix UserAccountDelete delivery 4 months ago
Daniel Supernault cfc5c9387a
Fix UserAccountDelete delivery 4 months ago
Daniel Supernault 45b5381970
Fix UserAccountDelete delivery 4 months ago
Daniel Supernault 68a6a5fa51
Update UserAccountDeleteCommand 4 months ago
Daniel Supernault dd0ed3dd24
Update composer 4 months ago
dansup a1d6fefd2b
Merge pull request #6509 from pixelfed/l10n_staging
New Crowdin updates
4 months ago
dansup eabfe206a9
Merge pull request #6519 from cgx/patch-1
Add exif PHP extension to Dockerfile
4 months ago
dansup e7aca161f7
Merge pull request #6508 from rm-yakovenko/issues/6386
[Web Bug]: Ui/UX: view profil is going the to the profil which reposted, not to the original one.
4 months ago
dansup 77f228da1f
Merge pull request #6501 from pixelfed/shleeable-patch-12
Refactored StatusDelete jobs that currently skip deletion if the profile is soft-deleted
4 months ago
dansup e6697da7e2
Merge pull request #6499 from pixelfed/shleeable-patch-10
Profiles Mutual followers Redis keys never expire. Fixed memory leak.
4 months ago
dansup cb26e1831a
Merge pull request #6498 from pixelfed/shleeable-patch-9
zcard > 0 incorrectly implies the cache is fully warmed
4 months ago
dansup 6e9c33fcab
Merge pull request #6496 from pixelfed/shleeable-patch-7
Remove sleep from AppRegisterController.php
4 months ago
dansup bdc203dc5c
Merge pull request #6493 from ShadowJonathan/fix-profile-saving
Make sure profile saving has a clear error when email is not verified
4 months ago
dansup d2d16b17a1
Merge pull request #6491 from pixelfed/shleeable-patch-5
Update logging.php to default to `daily` via stack
4 months ago
dansup c6b32882e0
Merge pull request #6483 from pixelfed/q2
Refactor: Updated Laravel casts to modern format
4 months ago
dansup b51307ff42
Merge pull request #6482 from pixelfed/q1
Refactor: Created/Updated factories to Laravel  12
4 months ago