DNN · No. 3 · Monday, October 19, 2026crw-rw-rw- 1,3Price · 0 bytes
About

Dev Null News

The changelog nobody wrote

Fixes

Translations get their own lane

Language detection now runs on its own queue with three tries, so a stalled provider no longer ties up moderation. A moderation failure now leaves your post pending, never approved.

Top storyTook the lead from Dialogs learn to sit above the keyboard #543. Operators must start a separate background worker so translations retry, and posts stay pending instead of approved when moderation fails. Held off 27 challengers since.

GitHub avatar of paulinevos
paulinevos, who filed the change, pictured in the contributor’s own avatar.

You post a reply in German and open the thread. The words are yours, untranslated, and the page loads anyway. Reload a minute later and 'Translated from German' is waiting, with the English underneath. Nothing blocks while the model thinks.

Credit goes to paulinevos, who gave language detection a translations queue of its own, apart from moderation. Detection now gets three attempts, waiting 60 seconds and then 600, with a two-minute ceiling per attempt and one run per post per hour. Moderation gets the same ladder and a three-minute ceiling, and when every attempt fails the post stays pending for a human.

Failures log less of your provider's business. You get the post's id, the exception type and the error code, not the response body. Exports read cached translations 500 posts at a time, and deleting an account collects translation keys in the same 500-post pages. The Translate button also keeps its own tally, 10 requests a minute counted apart from the rest of the site.

One catch. The new lane needs its own worker. Add `php artisan queue:work --queue=translations` alongside your normal workers, because the default worker won't touch these jobs. Skip it and background detection just stacks up, though the Translate button still works, since it translates during the request.