github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: badf5eae7a944fed8e8381ee3dff2238633191c6 https://github.com/dreamwidth/dreamwidth/commit/badf5eae7a944fed8e8381ee3dff2238633191c6 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-13 (Fri, 13 Mar 2026)

Changed paths: M etc/docker/web22/Dockerfile M etc/docker/web22/config/etc/varnish/dreamwidth.vcl M etc/docker/web22/scripts/startup-prod.sh

Log Message:


Replace Apache with Starman behind Varnish on web22

Varnish now forwards to Starman on port 8080 instead of Apache on port 80. This removes Apache from the web22 request path entirely, with Varnish's caching layer helping absorb health check traffic that previously queued behind busy Starman workers.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 4b5bcf8ad5cda83928da05e87508127b1fdd3a46 https://github.com/dreamwidth/dreamwidth/commit/4b5bcf8ad5cda83928da05e87508127b1fdd3a46 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)

Changed paths: M app.psgi A cgi-bin/Plack/Middleware/DW/WriteTimeout.pm A t/plack-write-timeout.t

Log Message:


Add SO_SNDTIMEO middleware to prevent Starman workers blocking on dead connections

When the ALB closes a connection before Starman finishes writing a response (e.g. due to idle timeout), the worker's write() blocks for 15-30 minutes waiting for TCP retransmits to exhaust. With 10 workers, this quickly deadlocks the entire server.

The new DW::WriteTimeout middleware sets SO_SNDTIMEO on the client socket via psgix.io so that blocked writes fail in seconds instead of minutes, freeing the worker to handle new requests.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 64b109f6fdd36a9130ef4a90057e71e07be5ec86 https://github.com/dreamwidth/dreamwidth/commit/64b109f6fdd36a9130ef4a90057e71e07be5ec86 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)

Changed paths: M bin/upgrading/deadphrases.dat M cgi-bin/DW/Controller/Create.pm M cgi-bin/DW/Controller/Manage/Profile.pm M cgi-bin/LJ/TextUtil.pm M t/plack-request.t M t/textutil.t M views/create/setup.tt M views/manage/profile.tt M views/manage/profile.tt.text

Log Message:


Remove dead utf8convert links, handle invalid UTF-8 in profiles (#3535)

  • Remove dead utf8convert links and handle invalid UTF-8 in profiles

The utf8convert page was removed years ago, but the profile editing and account creation pages still linked to it when a user's name or bio contained invalid UTF-8. This left users unable to edit those fields at all.

Instead of hiding fields behind a dead link, clean invalid UTF-8 byte sequences on load using a new LJ::clean_utf8() utility function. This strips broken sequences while preserving valid multi-byte characters, so the edit fields are always shown.

  • Add LJ::clean_utf8() to LJ::TextUtil
  • Clean name/bio on load in profile and create controllers
  • Remove text_in/is_utf8 conditionals from profile.tt and setup.tt
  • Remove name_absent/bio_absent hidden input fallback logic
  • Mark dead translation strings in deadphrases.dat
  • Add 16 regression tests for text_in, text_trim, and clean_utf8

Fixes #1894

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

  • Add tests for undef input and 4-byte UTF-8 (emoji) in clean_utf8

Cover edge cases: undef returns empty string, emoji (4-byte sequences) are preserved, and truncated 4-byte sequences are properly stripped while preserving valid preceding characters.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 453fa0142c344ae33d3d208067f110e33d7d48d5 https://github.com/dreamwidth/dreamwidth/commit/453fa0142c344ae33d3d208067f110e33d7d48d5 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-12 (Thu, 12 Mar 2026)

Changed paths: M src/dwtool/internal/ui/app.go M src/dwtool/internal/ui/logs.go

Log Message:


Update dwtool log filtering to be more useful

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)
[staff profile] denise posting in [site community profile] dw_advocacy
Case: Netchoice v Wilson, 3:26-cv-00543, (D.S.C.)

Netchoice's litigation page: Netchoice v Wilson

Netchoice filed the motion for preliminary injunction on March 9. It isn't available on the docket in RECAP yet (and I'm over my threshold for PACER fees that will get refunded for the quarter, or else I'd put it there!) but it is available on Netchoice's litigation page: Motion for Preliminary Injunction. They haven't included the declarations, but here's Dreamwidth's declaration as filed, authored by yours truly. Because of the wild incoherence of so many of the provisions of this law, many of which were new because a lot of states have switched to using different model legislation, I had to write almost all of our declaration for this one from scratch (while recovering from a lumbar puncture, lying flat on my back in bed: never let it be said I am not completely extra about the lengths to which I will go to fight against this bullshit), so much less of it will look familiar than usual, but boy was I mad.

We'll let you know when the judge makes a ruling on the PI! And three cheers as always for the Netchoice team and for the outside litigation counsel team, who is Lehotsky Keller Cohn for this one and who put in massively heroic effort to get this filed as fast as possible thanks to the law taking immediate effect.
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 11c40353c19cc0d986a932efe41668023117b3c6 https://github.com/dreamwidth/dreamwidth/commit/11c40353c19cc0d986a932efe41668023117b3c6 Author: Mark Smith mark@dreamwidth.org Date: 2026-03-11 (Wed, 11 Mar 2026)

Changed paths: M cgi-bin/LJ/SynSuck.pm M cgi-bin/ljlib.pl

Log Message:


Fix feed fetching on Ubuntu 22.04+ and reduce backoff aggressiveness

Force HTTP/1.1 via SSL_alpn_protocols in LJ::get_useragent. LWP does not support HTTP/2, but IO::Socket::SSL on 22.04+ advertises h2 via ALPN by default, causing servers like Tumblr to respond with HTTP/2 which LWP can't parse ("500 Server closed connection").

Also reduce exponential backoff cap from 30 days to 48 hours (max multiplier 2^4=16 instead of 2^7=128) and replace fixed 0-4 minute jitter with proportional jitter (up to 10% of delay) so retries stagger more effectively.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: a7c872c2e9a9286da62970e298ad04106c860b90 https://github.com/dreamwidth/dreamwidth/commit/a7c872c2e9a9286da62970e298ad04106c860b90 Author: momijizukamori momijizukamori+bugzilla@gmail.com Date: 2026-03-10 (Tue, 10 Mar 2026)

Changed paths: M bin/build-static-modern.sh

Log Message:


Build JS for ES6, not ES2020 (#3532)

Co-authored-by: Cocoa momijizukamori@gmail.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github posting in [site community profile] changelog

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 7e2581ef4c63b5fd84be3771093348bb9b65fded https://github.com/dreamwidth/dreamwidth/commit/7e2581ef4c63b5fd84be3771093348bb9b65fded Author: Mark Smith mark@dreamwidth.org Date: 2026-03-09 (Mon, 09 Mar 2026)

Changed paths: M cgi-bin/DW/Request/Plack.pm M t/plack-request.t

Log Message:


Fix Plack print() dropping all arguments after the first

DW::Request::Plack::print() only captured $_[1], silently discarding any subsequent arguments. This broke callers that pass multiple args — notably DW::Controller::Interface::Flat which uses $r->print($key, "\n", $val, "\n"), causing the flat client protocol to return keys with no newlines or values.

The Apache2 implementation correctly forwards all args via $self->{r}->print(@). Match that behavior by joining @ before appending to the response body.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications

The List of Shame

Mar. 9th, 2026 04:22 am
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)
[staff profile] denise posting in [site community profile] dw_advocacy
People frequently ask us about whether their specific US state is trying to enact a social media age verification law so they can call their state representatives and yell at them about it! I have had "build a system that will let me easily update this without having to do so manually, categorizing these bills by status, what problems they have, and what we'd do about them if they pass" on my want-to-do list for a really long time, but until I can, here's the current list of bills I know about.

This (very long, sigh) list is accurate to the best of my knowledge as of 8 March 2026, but it may not include every bill that's been introduced in every state. (I've used a few different lists plus my own "searching until I got too depressed to continue" to assemble it, excluding laws I think have absolutely no chance of passing but including laws where I think there's still even a slight chance.) If you know of one that isn't on the list, please let me know in the comments!

These are state laws only. I'm concentrating on those because you can find lists of bad federal bills more easily, but all the lists of state bills I know of are industry-gated or limited-distribution. If you don't have a preferred source for finding out about bad federal legislation about the internet, Bad Internet Bills (from Fight for the Future) and the EFF Action Center are a great place to start!

This list is only counting social media bills; I am not including bills that don't apply to us because they're modeled on the app store/OS age signal model legislation or bills that deal with age verification for other services like chatbots or "AI companions", because I'd go completely off the rails and resort to just screaming incoherently when the list passed a hundred items. I will try to update this at least quarterly, or whenever the Magic 8 Ball says there's a rapidly moving bill that you need to yell at people about.


The Current Hall of Shame )
Page generated Mar. 22nd, 2026 04:08 pm
Powered by Dreamwidth Studios