DNN · Vol. I · No. 3crw-rw-rw- 1,3Price · 0 bytes
About
ForecastBright91 merges, 40 fixes

Dev Null News

The changelog nobody wrote

27 more stories ↓46 in brief ↓

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.

Continued →

Features

Your phone gets a key of its own

The /dev/null app now signs in by having you approve its key once in the browser. After that every request is signed on the phone, with no token to paste.

Also leadingThe biggest story by anyone else. Held off 21 challengers since.

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

You tap sign in and a browser sheet slides up. It asks, "Approve /dev/null on iPhone?" Under your name sits a key fingerprint, marked SHA256, followed by 43 characters. Tap Approve, the browser bounces back to the app's devnull:// address with a code, and you are in.

Credit goes to simonhamp, who built the whole handshake. The app makes an SSH key, Ed25519 or RSA, and keeps the private half on the phone. It signs each request over the timestamp, a fresh 32-character hex nonce, the method, the path with its query, and the body. A signature expires after five minutes and a nonce works once. The approval code waits in the cache for five minutes under its hash and redeems once, for the key that asked for it. The key need not be on your GitHub account. The approval is the proof. Signed requests get 120 a minute per user.

What you see is the site as you see it. Pending commits appear, your blocks and mutes are applied, polls show your vote, and unread counts are there. The app posts commits and replies, deletes them, follows and unfollows, pulls replies, and reads the three logs, passing ?since= to fetch only what is newer. Settings → Devices lists each approval with its fingerprint and last use, plus a Revoke button.

One catch. Starring and saving are not wired up yet. The signed routes cover commits, replies, follows and notifications, but there is no star or bookmark route, so you will still tap those on the web.

Continued →

GitHub avatar of simonhamp

Group chats in Remotes now hold 100 people instead of 15. The add-people picker holds its count steady and scrolls your picks, so the Create button stays on screen.

Full story →

GitHub avatar of paulinevos

Tag the bot in a public post and it now answers with contributor rankings, production merges, stars, forks and member tallies. Every number comes from public GitHub data or public profiles, stamped with when it was read.

Full story →

In Brief

Fixes 28

  • The dashed rail under the composer now fades into the first commit's lane colour and reaches the first avatar, and reply elbows sit flush on the rail above them. #724
  • Dates now show English month and weekday names regardless of browser language, matching the English interface. #530
  • Replying to your own commit now shows Show thread right away and keeps the reply count the server reports, instead of a phantom "1 reply" toggle until reload. #602
  • Switching to or from the Terminal and Safety settings tabs now slides the page the same way Profile and Appearance already did. #504
  • Star notifications now show a thumbnail of the starred commit's first image, and image-only commits read "starred your image" instead of an empty box. #661
23 more fixes
  • Changelog, About, Terms and Privacy links moved out from under the docked chat, and toasts now ride 24px above the dock as it expands or collapses. #700
  • Blocking, unblocking, muting, or unmuting someone now clears the cached mention suggestions, so retyping the same @query stops offering a user who should be hidden. #299
  • Scrolling the commit feed now clears and suppresses the dimming highlight, which returns only once the mouse actually moves after scrolling settles. #537
  • Commit translations now request a strict two-field JSON reply and report a reason when a response is rejected, without logging its contents. #588
  • The slash command menu now opens only while the composer has focus, so a restored lone "/" no longer leaves it hanging after you navigate away. #528
  • Tom now starts with remotes off, so pushing to him is refused and adding him to an org fails with "@tom has remotes off." #591
  • Feed and link-preview images now fit inside their box instead of being cropped, while wide grid images still fill their cell. #676
  • A guest who clicks Follow in a profile preview now gets sent to sign in instead of firing a follow request that could never succeed. #697
  • Awarding a pastel now bumps the count and drops today's allowance the moment you click, then reconciles with the server or reverts if the award fails. #290
  • Commit search results now load poll options and viewer vote state up front, so commits with polls no longer render half-empty cards. #392
  • Diff markers now run beside every line of a long commit, and any scroll, whether wheel, touch, scrollbar or arrow key, ends the collapse hold instead of snapping back. #595
  • Hovering a reply inside a commit now highlights just that reply's row, and replies that can't be opened show a default cursor. #685
  • On the Metrics tab, a rate with no earlier period to compare against now drops its change line entirely instead of printing "not enough history". #728
  • Opening an image on a commit now ends the solid reply line at a dot, with replies hanging off a dashed line, matching the feed. #496
  • After the feed scrolls to a stop with the cursor resting on an author's avatar, rail or name, the next small mouse move lights up all of that author's commits instead of just one. #538
  • The changelog popover stops flickering and snapping back while the page scrolls, staying put above its button and now capping itself to the screen height. #539
  • The trash control on your own commits now reads "Revert commit" in both its tooltip and its screen-reader label. #579
  • The search icon in the collapsed icon-only sidebar now renders at the same size as the bookmarks and settings icons. #643
  • Follow buttons now actually go disabled while the request is in flight, so a double-click can't fire two follows and the button looks busy. #698
  • On mobile, notification rows now scroll under the sticky header instead of drawing names and @usernames on top of the title and filter pills. #706
  • Graph rails on commit threads now overlap by a pixel, closing the hairline gap that could flash at avatars between author lanes. #713
  • Dashed connector lines between replies now stay visible while you hover a reply, since the lanes draw above the row highlight instead of beneath it. #715
  • The in-review commit tooltip now says only established accounts with a following and no recent reports skip moderation, instead of promising instant approval after a first approved commit. #721

Features 11

  • Lane dimming, the fade that follows your pointer across the commit feed, is now off by default and gets an On/Off switch under Settings → Appearance. #596
  • Commit threads and search results now fade a solid rail from one author's lane color into the next instead of switching abruptly. #707
  • The composer avatar on the Following, Latest and Trending logs now links to your own profile. #675
  • Reply connectors now hold the first author's lane colour for half the path, then fade into the next author's colour, elbows included. #691
  • Who to follow rows now show a one-line bio under each developer's handle, cut off with an ellipsis and full text on hover. #398
6 more features
  • Poll option fields now show an emoji picker when you type a colon, turn shortcodes into emoji as you type, and count each emoji as one of the 50 characters allowed. #432
  • The secrets-detected banner in the commit composer now collapses to a small shield icon and reopens on click, so false positives stop hogging the editor. #498
  • Hovering a person in the Who to follow list now pops the same profile preview card used on timelines and replies, anchored to their avatar. #527
  • The composer avatar's dashed ring now fills clockwise as you type, using a log curve so early keystrokes register but it only closes at 4,000 characters. #659
  • Approved commit badges now swap the spinner for a same-size check mark, so the badge keeps its layout and just reads "approved". #548
  • The go-live dialog now picks stream length with a 1-to-12 hour slider instead of a dropdown, still defaulting to 2 hours and resetting after each stream. #689

Performance 4

  • Org typing indicators now come from one batched cache read instead of one check per member, so a 15-person org goes from 15 lookups to 1 with the same names in the same order. #401
  • Starring a commit you already starred now returns early, skipping the duplicate notification and the hot-score recalculation. #431
  • Starring or unstarring a commit now returns the new total by counting the stars table directly instead of joining users, roughly halving the query cost. #500
  • Star and unstar responses count stars without joining users, and reputation checks stop at the tenth follower instead of counting every follower. #522

Docs 2

  • The product guide and knowledge base now match the platform, adding going-live and community-insight sections while dropping stale auth and TODO docs. #637
  • The knowledge base now logs when the livestream team picked names like commits, stars, and Tom, with timestamped video links and a new lore entry for the product trailer. #578

Chores 1

  • The mobile menu button now draws a two-line icon, the lower stroke shortened, replacing the classic three-line hamburger. #418

6 routine merges sent to /dev/null

Who Filed

  1. xHeaven17
  2. simonhamp12
  3. paulinevos10
  4. jubianchi6
  5. mnapoli6
  6. SanderMuller5
  7. jjaybrown5
  8. and 22 more

Merge Market

SectorVolLines
Fixes40+5,790
Features39+18,158
Chores5+133
Performance4+80
Docs3+204

Back Issues