Commit Graph

12904 Commits (04536a6e322a2c007d2f37d08b937364c76b83fe)
 

Author SHA1 Message Date
Your Name 04536a6e32 Add admin:MigrateLocalMediaURL; replace media:cloud-url-rewrite
Rebuilds stale local media URLs (cdn_url, thumbnail_url, optimized_url) and
avatar cdn_urls from their storage paths via the configured cloud disk.

- Default target host comes from the configured cloud disk (AWS_URL);
  requires confirmation (or --force) and can be overridden with --newDomain.
- Optional --oldDomain filters to a single old backend host; by default all
  stale hosts are rewritten.
- Refuses to run when PF_ENABLE_CLOUD is false (local storage) and, when
  auto-detecting, refuses a target equal to the app domain — so local-storage
  instances are never rewritten.
- Single status id / post URL, --all, --avatars; --dry-run; busts
  MediaService/StatusService caches for affected statuses.
- Removes the superseded media:cloud-url-rewrite command.
- Adds feature tests covering rewrite/skip/dry-run/oldDomain/newDomain/
  remote-skip/local-storage-refusal.
4 weeks ago
Your Name 4aa7b57280 Add post:status command for post/media diagnostics
Dumps a Status and its media for debugging. Accepts a post id or URL
(/p/username/ID). Shows status columns, author, every media row's storage
fields (media_path, thumbnail_path, cdn_url, thumbnail_url, optimized_url,
remote_url, etc.), computed url()/thumbnailUrl()/expected-from-path, a URL
health check comparing stored URL hosts against the configured cloud disk
host (flags stale hosts), and the cached MediaService media_attachments
actually served to clients.
4 weeks ago
Shlee 746044f7f2
Merge pull request #6927 from pixelfed/fix/vue-intersect-single-element
Fix VueIntersect single-element warning in notifications section
4 weeks ago
Shlee 1ba3f8c9cf
Merge pull request #6928 from pixelfed/feature/user-status-command
Require --scope (local/remote/both) for admin:fixProfileCounts --all
4 weeks ago
Your Name bcd5a5bd7b Require --scope (local/remote/both) for admin:fixProfileCounts --all
Bulk --all reconciliation previously scanned both local and remote profiles
implicitly. Now --all requires an explicit --scope of local, remote, or
both. --active stays local-only and rejects a non-local --scope. Adds the
BelongsTo return type to Profile::user() so the whereHas('user') scope
filter passes Larastan, and adds tests for scope requirement/validation and
local/remote filtering.
4 weeks ago
Your Name b3be61c47c Fix VueIntersect single-element warning in notifications section
The <intersect> in sections/Notifications.vue wrapped four <placeholder>
elements directly. vue-intersect requires exactly one child (it checks
$slots.default.length and observes $slots.default[0]), so it logged
'[VueIntersect] You may only wrap one element in a <intersect> component.'
and only observed the first placeholder. Wrap the placeholders in a single
<div> so the slot has one root element.
4 weeks ago
Shlee c086f20d3f
Merge pull request #6926 from pixelfed/feature/user-status-command
Update stale command-name reference in comment to admin:fixProfileCounts
4 weeks ago
Your Name 55e9201b1a Update stale command-name reference in comment to admin:fixProfileCounts 4 weeks ago
Shlee 511527fc5a
Merge pull request #6923 from pixelfed/feature/user-status-command
Refactor: FixProfileCounts
4 weeks ago
Your Name 96f26405f1 Rename to admin:fixProfileCounts, make --active its own mode, add --type
- Rename command signature fix:profilecounts -> admin:fixProfileCounts.
- --active is now its own bulk mode (recently-active local accounts),
  mutually exclusive with --all and a single id.
- Add --type=followers|following|statuses to restrict reconciliation to a
  single metric (validated).
- Update/extend tests for the new name, --type restriction and invalid-type
  rejection.
4 weeks ago
Shlee f54c3f394f
Merge pull request #6924 from pixelfed/refactor/profile-count-recalc
Refactor/profile count recalc
4 weeks ago
Your Name 698ba224e3 Schedule weekly profile-count reconcile and add reconciliation tests
- Add --force flag to fix:profilecounts for unattended runs and schedule
  'fix:profilecounts --all --force' weekly (Sun 03:37) as a safety-net
  reconcile. Kept as a low-frequency full scan rather than a new event-driven
  dirty-set; it only writes profiles that actually drifted.
- Add Feature tests for AccountStatService recompute helpers and
  reconcileProfileCounts (media-type status_count semantics, follower/
  following counts, drift/no-drift/no-write, metric restriction, missing
  profile) plus fix:profilecounts command behavior (silent-when-synced,
  dry-run makes no changes).
4 weeks ago
Your Name a187ab6639 Refactor profile count reconciliation into shared AccountStatService methods
Extract canonical source-of-truth count logic into AccountStatService:
recalculateStatusCount/FollowerCount/FollowingCount and a
reconcileProfileCounts() that fixes only drifted columns and busts caches.

Both the scheduled app:account-post-count-stat-update (status-only, its
correct scope) and fix:profilecounts now use these instead of duplicating
the SQL. Also corrects the status_count definition to match the actual
increment logic in StatusEntityLexer/StatusDelete (media post types only:
photo/video albums), rather than the previous inconsistent all-statuses /
scoped counts that could themselves cause drift.

The scheduled updater keeps its incremental, dirty-set design and remains
status-only; follower/following stay owned by FollowServiceWarmCache.
4 weeks ago
Your Name 037f1ac0b9 Add fix:profilecounts (total profile cache resync); remove redundant count commands
Consolidate cached-count reconciliation into a single fix:profilecounts
command that resyncs followers_count, following_count and status_count
from the source-of-truth tables for one profile or --all. Only reports
profiles with actual drift (silent when in sync); supports --dry-run and
--dispatch (queues FollowServiceWarmCache and rebuilds Redis sets).

Removes the superseded manual commands fix:followercount, fix:statuscount
and fix:rpc. Keeps app:account-post-count-stat-update, which is scheduled
(runs every 6 hours) and queue-driven.
4 weeks ago
Your Name 9fe1fe55af Add fix:followercount command to resync drifted follower/following counts
profiles.followers_count/following_count are cached columns reconciled
lazily by FollowServiceWarmCache (throttled up to 7 days), so they can
drift from the followers table. This command recomputes them from the
source-of-truth table for a single profile or --all drifted local
profiles, with --dry-run to report and --dispatch to queue the warm-cache
job (which also rebuilds the Redis sets). Mirrors the existing
fix:statuscount convention.
4 weeks ago
Shlee 350b8fdca5
Merge pull request #6920 from pixelfed/feature/user-status-command
new admin commands
4 weeks ago
Your Name 92d09ffaaf Add profile:status command for local and remote profile diagnostics
Unlike user:status (local users only, keyed on the users table),
profile:status keys on the profiles table so it works for remote/
federated actors too. Resolves id, username, user@domain, @user@domain,
webfinger, or remote_url. Shows full column dump, derived/federation
metadata, linked local user (local) or Instance row (remote), and
health checks for orphans, missing keys, and count desync.
4 weeks ago
Your Name 93f8138482 Expand user:status profile section with full column dump and derived metadata
Dump every profiles column dynamically (keys redacted, long text trimmed),
add derived metadata (local/remote type, urls, live vs cached follower/
following/status counts, avatar, federation fields), and profile health
checks (soft-delete, id mismatches, missing crypto keys, count desync).
4 weeks ago
Shlee fc89c156b1
Merge pull request #6919 from pixelfed/fix/csrf-token-guest-pages
Fix CSRF token not found error on guest pages (login/register)
4 weeks ago
Your Name ea1a629b1a Add csrf-token meta to anon and app-guest layouts
These guest layouts also load app.js, which reads the csrf-token meta
tag to set the axios X-CSRF-TOKEN header. Without it, they logged the
same 'CSRF token not found' console error and had no CSRF header for
AJAX requests. Adds the meta tag to match the other layouts.
4 weeks ago
Your Name 32e391d267 Fix CSRF token not found error on guest pages (login/register)
The app layout renders separate head blocks for auth vs guest users.
The guest block was missing the <meta name="csrf-token"> tag that
app.js reads to set the axios X-CSRF-TOKEN header, causing a console
error on the login and register pages. Add the meta tag to the guest
head to match the authenticated head block.
4 weeks ago
Your Name 54f99334bb Fix CSRF token not found error on guest pages (login/register)
The app layout renders separate head blocks for auth vs guest users.
The guest block was missing the <meta name="csrf-token"> tag that
app.js reads to set the axios X-CSRF-TOKEN header, causing a console
error on the login and register pages. Add the meta tag to the guest
head to match the authenticated head block.
4 weeks ago
Shlee 3dfa249f3c
Merge pull request #6914 from pixelfed/fix/cached-eloquent-model-incomplete-object
Refactor: stop caching raw Eloquent models to prevent incomplete-object 500s
4 weeks ago
Shlee 80b7e99efe
Merge pull request #6915 from pixelfed/feature/user-status-command
New artisan admin commands
4 weeks ago
Your Name 2c7227a9c1 Add user:checkpassword read-only command to diagnose rejected logins 4 weeks ago
dansup 88d4713b8d
Merge pull request #6917 from pixelfed/staging
Update UserAccountDelete command
4 weeks ago
Daniel Supernault 51beaa30d1
Update UserAccountDelete command 4 weeks ago
Your Name 7148c58283 Add user:setpassword artisan command for CLI password reset 4 weeks ago
dansup 371b205f4f
Merge pull request #6916 from pixelfed/staging
Update AdminReportController
4 weeks ago
Daniel Supernault 0679216fa2
Update AdminReportController 4 weeks ago
Your Name e39b0f1b50 Add user:status artisan command for account login/reset diagnostics 4 weeks ago
Your Name f0e951dcce fix: stop caching raw Eloquent models to prevent incomplete-object 500s
Caching an Eloquent model in a Cache::remember closure could deserialize
into a __PHP_Incomplete_Class on read, throwing 'attempt to access a
property on an incomplete object' and returning a 500. This surfaced on
guest profile pages (ProfileController::buildProfile reading
$user->user->settings) and affected several other latent call sites.

Changes:
- ProfileController: cache a plain settings array instead of the
  UserSetting model; fall back to defaults when the settings row is missing
- StoryService::getById: fetch a live model instead of caching it
- InstanceService::getByDomain, CustomEmoji::scan: cache arrays
- Site/MobileController: cache Page data as an array via a shared
  ManagesCachedPages trait; update blade views to array access
- Add public-route smoke/regression tests covering the cache-read path
4 weeks ago
dansup 7b6ca7a6f3
Merge pull request #6913 from pixelfed/staging
Staging
4 weeks ago
Daniel Supernault db37202e6f
Update compiled assets 4 weeks ago
Daniel Supernault 5b63f5f225
Fix AdminReports 4 weeks ago
dansup 5a915daa7e
Merge pull request #6909 from pixelfed/staging
Staging
4 weeks ago
Daniel Supernault 81245ec467
Fix ProfileMigrationStorageRequest, use signed requests for gts and other compat 4 weeks ago
Shlee fddeb57441
Merge pull request #6910 from pixelfed/shleeable-patch-1
Create DeduplicationChanges.md
4 weeks ago
Shlee 01215eb758
Merge pull request #6912 from pixelfed/chore/cache-config-cleanup
chore: remove unused import and fix spacing in cache config
4 weeks ago
Your Name 3be6dbf547 chore: remove unused import and fix spacing in cache config 4 weeks ago
Shlee 78a48f0ef0
Update DeduplicationChanges.md with service reference 4 weeks ago
Shlee 6cce210321
Refactor boilerplate examples for deduplication
Updated boilerplate examples for ActivityPub Delivery, Username validation, and Notification services to replace repeated code snippets with concise method calls.
4 weeks ago
Shlee 4982839c5a
Update DeduplicationChanges.md 4 weeks ago
Shlee 27c778f4bf
Remove duplicate boilerplate code in documentation
Removed duplicate lines from username validation, notification, and fractal boilerplate sections.
4 weeks ago
Shlee 101b529acf
Update DeduplicationChanges.md 4 weeks ago
Shlee 0b6f8e4ab6
Rename DeduplicationChanges.md to notes/DeduplicationChanges.md 4 weeks ago
Shlee 0d00727dc2
Merge pull request #6911 from pixelfed/refactor/rename-valid-username-rule
refactor: rename PixelfedUsername rule to ValidUsername
4 weeks ago
Your Name 302edf09d5 refactor: rename PixelfedUsername rule to ValidUsername
Pure rename of the App\Rules\PixelfedUsername validation rule to
App\Rules\ValidUsername for a clearer, more idiomatic name. Updates
the class, filename, test, and all 8 controller call sites. No
behavior change.
4 weeks ago
Shlee d1ea7a5be7
Create DeduplicationChanges.md 4 weeks ago
Shlee 30810936e0
Merge pull request #6908 from pixelfed/refactor/pixelfed-username-rule
Deduplication - username validation in 8 places
4 weeks ago