Ce qui se passe
Payload 3.89.0 est sortie le 10 septembre. Version mineure, mais les notes
portent une section Breaking changes : la collection interne payload-jobs,
où vit la file des tâches, refuse désormais par défaut tout accès CRUD générique
(#17867, backport du #17768 déjà appliqué en v4).
Sont refusés : les requêtes REST et GraphQL sur payload-jobs, et les appels de
la Local API avec overrideAccess: false. Les opérations dédiées
payload.jobs.queue(), payload.jobs.run() et payload.jobs.cancel() ne
changent pas, ni les appels Local API qui laissent l'override actif. Un projet
qui inspecte ou administre les jobs par CRUD brut, ou qui rend la collection
visible dans l'admin, doit déclarer ses règles via jobsCollectionOverrides, de
préférence en lecture seule pour des administrateurs : un document de job peut
contenir des données sensibles.
payload.config.tsTypeScriptjobs: {
jobsCollectionOverrides: ({ defaultJobsCollection }) => ({
...defaultJobsCollection,
access: {
...defaultJobsCollection.access,
read: ({ req }) => Boolean(req.user?.roles?.includes('admin')),
},
}),
},Deux correctifs qui comptent
Client uploads (#17872). Le navigateur envoie le fichier directement au
stockage, mais le serveur le relisait ensuite en entier dans un seul buffer
mémoire, sans limite, ne serait-ce que pour lire les dimensions d'une image.
Depuis que l'adaptateur Azure accepte des fichiers de plus de 5 Go, un seul
envoi pouvait dépasser la mémoire du serveur. Le serveur décide maintenant de ce
qu'il lui faut : rien si les métadonnées client suffisent, une plage d'octets
pour les dimensions, ou le fichier entier diffusé vers un fichier temporaire sur
disque. Au passage : les collections sans disableLocalStorage explicite
pouvaient prendre le chemin réduit et enregistrer un fichier tronqué, et un
clone de requête cassait le signal d'annulation lu par les adaptateurs S3 et
Azure.
Identifiants Postgres (#17650). Postgres tronque tout identifiant au-delà
de 63 caractères. Payload concatène les chemins de champs imbriqués pour nommer
colonnes, index et clés étrangères, d'où des noms qui dépassaient et un schéma
désynchronisé, avec un push en dev bloqué sur la question « created or
renamed ? ». Désormais : avertissement en dev quand un identifiant dépasse,
erreur au démarrage quand deux identifiants se tronquent au même nom.
À retenir
Next passe en 16.3.3 dans le cœur et les templates, Banner gagne un type
warning, et l'adaptateur Resend ne masque plus les erreurs de fetch. Avant de
monter de version : chercher payload-jobs dans le code et dans les appels REST
du front.
Source : Payload CMS v3.89.0