deps: Composer- und npm-Pakete innerhalb der Constraints aktualisiert
Laravel 12.69, Livewire 4.4, Flux 2.20, Cashier 16.8 (Stripe-SDK 21), Larastan 3.12; Vite 6.4.3, Tailwind 4.3, Alpine 3.17 - npm audit 0. Drei neue Larastan-Befunde behoben, drei tote Baseline-Einträge entfernt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e7e12b9436
commit
6e159ecf06
7 changed files with 2508 additions and 1457 deletions
|
|
@ -161,9 +161,9 @@ class FixApiPortalDuplicates extends Command
|
||||||
->filter(fn (Collection $group): bool => $group->count() >= 2)
|
->filter(fn (Collection $group): bool => $group->count() >= 2)
|
||||||
->flatMap(function (Collection $group) use ($windowMinutes): array {
|
->flatMap(function (Collection $group) use ($windowMinutes): array {
|
||||||
$pairs = [];
|
$pairs = [];
|
||||||
$items = $group->values();
|
$items = $group->values()->all();
|
||||||
|
|
||||||
for ($i = 0; $i < $items->count() - 1; $i++) {
|
for ($i = 0; $i < count($items) - 1; $i++) {
|
||||||
$first = $items[$i];
|
$first = $items[$i];
|
||||||
$second = $items[$i + 1];
|
$second = $items[$i + 1];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -132,9 +132,7 @@ class PressReleaseMediaPrivatizer
|
||||||
throw new RuntimeException("Could not write private press release media: {$path}");
|
throw new RuntimeException("Could not write private press release media: {$path}");
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (is_resource($stream)) {
|
fclose($stream);
|
||||||
fclose($stream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$public->delete($path);
|
$public->delete($path);
|
||||||
|
|
|
||||||
|
|
@ -736,14 +736,10 @@ class PressReleaseService
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$mailable = match ($event) {
|
$mailable = $notificationType === EmailNotificationType::PressReleasePublished
|
||||||
'published' => new PressReleasePublished($user, $pressRelease, $recipientName),
|
? new PressReleasePublished($user, $pressRelease, $recipientName)
|
||||||
'rejected' => new PressReleaseRejected($user, $pressRelease, $reason, $recipientName),
|
: new PressReleaseRejected($user, $pressRelease, $reason, $recipientName);
|
||||||
default => null,
|
|
||||||
};
|
|
||||||
|
|
||||||
if ($mailable) {
|
Mail::to($recipient)->queue($mailable);
|
||||||
Mail::to($recipient)->queue($mailable);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2663
composer.lock
generated
2663
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1111,3 +1111,46 @@ Tests: `tests/Feature/MailSuppressionAdminTest.php` (3).
|
||||||
**Damit ist 1b.6 komplett — und Block 1b.** Offen bleibt nur das
|
**Damit ist 1b.6 komplett — und Block 1b.** Offen bleibt nur das
|
||||||
Anlegen des Postfachs und die Live-Konfiguration (siehe Deploy-Hinweise
|
Anlegen des Postfachs und die Live-Konfiguration (siehe Deploy-Hinweise
|
||||||
zu Schritt 1 und 3).
|
zu Schritt 1 und 3).
|
||||||
|
|
||||||
|
## Zwischenschritt — Paket-Update (15.09.2026)
|
||||||
|
|
||||||
|
Anlass: Auf Live war `composer require webklex/laravel-imap` samt
|
||||||
|
`composer update` von Hand gelaufen. Das hob dort *alle* Pakete an, die
|
||||||
|
`composer.lock` wich vom Repo ab, und die im Mai veröffentlichten
|
||||||
|
Livewire-Assets (`public/vendor/livewire`, gitignored) passten nicht mehr
|
||||||
|
zum neuen Livewire — Konsolen-Warnung „published assets are out of
|
||||||
|
date" und verschobene Formatierung, weil der Portal-Build noch gegen die
|
||||||
|
alte Flux-CSS gebaut war.
|
||||||
|
|
||||||
|
Entscheidung: Das Update wird hier nachgezogen und versioniert, statt
|
||||||
|
Live zurückzusetzen.
|
||||||
|
|
||||||
|
- `composer update` innerhalb der Constraints: 71 Pakete. Wesentlich:
|
||||||
|
Laravel 12.63 → 12.69, Livewire 4.2.4 → 4.4.5, Flux/Flux Pro 2.14 →
|
||||||
|
2.20, Volt 1.10 → 1.11, Fortify 1.36 → 1.39, Cashier 16.5 → 16.8 (zieht
|
||||||
|
`stripe/stripe-php` 17 → 21 nach, API-Version bleibt über Cashier
|
||||||
|
gepinnt), Larastan 3.9 → 3.12, Pint 1.29 → 1.32. Majors (Laravel 13,
|
||||||
|
Pest 5, spatie/permission 8) bewusst nicht.
|
||||||
|
- `npm update` + `npm audit fix`: Vite 6.4.0 → 6.4.3, Tailwind 4.1 → 4.3,
|
||||||
|
Alpine 3.15 → 3.17; vorher 13 gemeldete Schwachstellen (Build-Tooling),
|
||||||
|
danach 0.
|
||||||
|
- Larastan 3.12 versteht Query-Scopes jetzt selbst → drei Baseline-Einträge
|
||||||
|
(`visibleInArchive`, `forPortalValues`) waren tot und sind raus. Drei
|
||||||
|
neue Befunde behoben: `PressReleaseService::notifyAuthor()` wählt die
|
||||||
|
Mailable jetzt über den Benachrichtigungstyp statt über ein zweites
|
||||||
|
`match`; `PressReleaseMediaPrivatizer` prüft vor `fclose()` nicht mehr
|
||||||
|
auf `is_resource`; `FixApiPortalDuplicates` iteriert über ein Array
|
||||||
|
statt über Collection-Offsets. phpstan: No errors, Pint sauber.
|
||||||
|
- Flux-Changelog 2.15–2.20 gesichtet: keine Breaking Changes, aber
|
||||||
|
Feinkorrekturen an Icon-Buttons (Inset/Padding), Navbar-Abständen,
|
||||||
|
Sidebar-Tooltips und Tabellen-Padding. Die auf Live gesehenen Sprünge
|
||||||
|
kamen aus dem alten Build; nach frischem `npm run build` bleiben
|
||||||
|
allenfalls diese kleinen Anpassungen.
|
||||||
|
- Tests: 1612 passed.
|
||||||
|
|
||||||
|
Deploy: `composer install`, `npm run build`, **`php artisan
|
||||||
|
livewire:publish --assets`** (gehört dauerhaft ins Ploi-Skript, sonst
|
||||||
|
läuft `public/vendor/livewire` bei jedem Livewire-Update wieder aus dem
|
||||||
|
Takt), `optimize:clear`, `config:cache`, `view:cache`, `queue:restart`.
|
||||||
|
Vorher auf dem Server `git checkout composer.lock`, damit der Pull nicht
|
||||||
|
an der handgeänderten Datei hängen bleibt.
|
||||||
|
|
|
||||||
1221
package-lock.json
generated
1221
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -144,12 +144,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: app/Http/Controllers/Web/ReportFormController.php
|
path: app/Http/Controllers/Web/ReportFormController.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\<Illuminate\\Database\\Eloquent\\Model\>\:\:visibleInArchive\(\)\.$#'
|
|
||||||
identifier: method.notFound
|
|
||||||
count: 1
|
|
||||||
path: app/Http/Controllers/Web/SitemapController.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Call to function method_exists\(\) with Laravel\\Sanctum\\PersonalAccessToken and ''getKey'' will always evaluate to true\.$#'
|
message: '#^Call to function method_exists\(\) with Laravel\\Sanctum\\PersonalAccessToken and ''getKey'' will always evaluate to true\.$#'
|
||||||
identifier: function.alreadyNarrowedType
|
identifier: function.alreadyNarrowedType
|
||||||
|
|
@ -912,24 +906,12 @@ parameters:
|
||||||
count: 5
|
count: 5
|
||||||
path: app/Services/Web/HomePageData.php
|
path: app/Services/Web/HomePageData.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\<Illuminate\\Database\\Eloquent\\Model\>\:\:forPortalValues\(\)\.$#'
|
|
||||||
identifier: method.notFound
|
|
||||||
count: 1
|
|
||||||
path: app/Services/Web/HomePageData.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
||||||
identifier: nullsafe.neverNull
|
identifier: nullsafe.neverNull
|
||||||
count: 1
|
count: 1
|
||||||
path: app/Services/Web/HomePageData.php
|
path: app/Services/Web/HomePageData.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Builder\<Illuminate\\Database\\Eloquent\\Model\>\:\:visibleInArchive\(\)\.$#'
|
|
||||||
identifier: method.notFound
|
|
||||||
count: 1
|
|
||||||
path: app/Services/Web/HubPageData.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Call to function is_array\(\) with list\<array\{label\: string, value\: string, delta\: string, positive\: bool\}\> will always evaluate to true\.$#'
|
message: '#^Call to function is_array\(\) with list\<array\{label\: string, value\: string, delta\: string, positive\: bool\}\> will always evaluate to true\.$#'
|
||||||
identifier: function.alreadyNarrowedType
|
identifier: function.alreadyNarrowedType
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue