Commit Graph

290 Commits (1ba3f8c9cf65b9bf60802ee1f235176fab6e7344)

Author SHA1 Message Date
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
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
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 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
Daniel Supernault 51beaa30d1
Update UserAccountDelete command 4 weeks ago
Your Name 7148c58283 Add user:setpassword artisan command for CLI password reset 4 weeks ago
Your Name e39b0f1b50 Add user:status artisan command for account login/reset diagnostics 4 weeks ago
Shlee f018004b56
Merge pull request #6892 from pixelfed/refactor/move-models-to-namespace
Refactor/move models to namespace
4 weeks ago
Your Name c0cde2f682 refactor: move 52 legacy models from App\ to App\Models\
Move all Eloquent models from the app/ root directory to app/Models/
for consistency with modern Laravel conventions. The project already had
54 models in App\Models; this migrates the remaining 52 legacy models.

Changes:
- Move 52 model files from app/ to app/Models/
- Update namespace declarations in each model
- Update all ~1000 import references across the codebase
- Add Relation::morphMap() in AppServiceProvider for backward
  compatibility with existing polymorphic database records
- Add missing HasSnowflakePrimary imports for models that relied
  on same-namespace resolution
4 weeks ago
Your Name a142db87b4 polish 4 weeks ago
Daniel Supernault 33dce75f2c
Pint app/ 4 weeks ago
Your Name c807a8524c refactor: replace short facade aliases with fully-qualified imports
Convert all 273 short facade alias imports (e.g. 'use Cache;') to their
fully-qualified class names (e.g. 'use Illuminate\Support\Facades\Cache;')
across 193 files.

This resolves 643 PHPStan 'class.notFound' errors caused by the static
analyzer being unable to resolve global aliases, and aligns with modern
Laravel conventions. It also unblocks removing the aliases array from
config/app.php in a future change.

All 107 tests pass.
4 weeks ago
Your Name 98267eb26f refactor: replace deprecated str_random() with Str::random()
str_random() is a deprecated helper from laravel/helpers that was
missed in the initial helpers removal. Replace all 18 call sites
with the modern Str::random() equivalent.
4 weeks ago
Your Name edb4368b08 refactor: replace deprecated laravel/helpers with native alternatives
Replace all deprecated helper function calls:
- str_slug() → Str::slug()
- starts_with() → str_starts_with()
- ends_with() → str_ends_with()
- array_first() → Arr::first()
- array_last() → Arr::last()
- array_flatten() → Arr::flatten()

Remove laravel/helpers package from composer.json as it is no longer
needed and will not be maintained for Laravel 13.
4 weeks ago
Ashley Hull ab07a705e6
Merge branch 'dev' into shift-179490 4 weeks ago
Shlee 16b5ffff10
Create SeedDevUsers.php 4 weeks ago
Shift 19880c2ffb
Convert string references to `::class`
PHP 5.5.9 adds the new static `class` property which provides the fully qualified class name. This is preferred over using strings for class names since the `class` property references are checked by PHP.
4 weeks ago
Daniel Supernault d2f06af07d
Update UserAvatarDelete command. Fixes #6627 1 month ago
Daniel Supernault 9fe9b7eb32
Update AdminInviteController 3 months ago
Daniel Supernault 764f106de7
Create UserAvatarDelete.php 4 months ago
Daniel Supernault d8c9cece15
Lint 6 months ago
Daniel Supernault 015f619008
Fix key 6 months ago
Daniel Supernault 1add0938fe
Increase default concurrency 6 months ago
Daniel Supernault e4e9d12b5c
Reduce timeout 6 months ago
Daniel Supernault 92f469ff20
Fix delete fanout 6 months ago
Daniel Supernault 7be475cbb7
Add debugging 6 months ago
Daniel Supernault 9826b54d76
Dont sign content-type 6 months ago
Daniel Supernault 78a657d7df
Refactor, use actor private key, thanks Mastodon ;) 6 months ago
Daniel Supernault dfd538e7e0
Fix signing headers 6 months ago
Daniel Supernault f98588b769
Lint 6 months ago
Daniel Supernault 0175b4a605
Lint 6 months ago
Daniel Supernault f5d2d95e76
Lint 6 months ago
Daniel Supernault 8aab6bdf1a
Lint 6 months ago
Daniel Supernault b969c5acd0
Lint 6 months ago
Daniel Supernault 273efe88c1
Lint 6 months ago
Daniel Supernault c12f07f7d8
Lint 6 months ago
Daniel Supernault 87a8b4507f
Update UserAccountDelete.php 6 months ago
Daniel Supernault 967ab88ec0
Fix UserAccountDelete delivery 6 months ago
Daniel Supernault cfc5c9387a
Fix UserAccountDelete delivery 6 months ago