[dreamwidth/dreamwidth] afbef3: Add /admin/recent_accounts for screening new accou...
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: afbef380e3688886c022553c1ac994a9b999dc37 https://github.com/dreamwidth/dreamwidth/commit/afbef380e3688886c022553c1ac994a9b999dc37 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M bin/upgrading/proplists.dat A cgi-bin/DW/Controller/Admin/Approve.pm M cgi-bin/DW/Controller/Create.pm M cgi-bin/DW/Hooks/PrivList.pm M cgi-bin/DW/Hooks/SiteSearch.pm M cgi-bin/DW/Setting/GlobalSearch.pm M cgi-bin/LJ/Console/Command/Suspend.pm M cgi-bin/LJ/Console/Command/Unsuspend.pm M cgi-bin/LJ/User/Account.pm M cgi-bin/LJ/User/Permissions.pm M etc/config.pl.example A views/admin/recent_accounts/review.tt A views/admin/recent_accounts/review.tt.text A views/admin/recent_accounts/suspend.tt A views/admin/recent_accounts/suspend.tt.text A views/admin/recent_accounts/user.tt A views/admin/recent_accounts/user.tt.text
Log Message:
Add /admin/recent_accounts for screening new accounts for spam
Adds an account approval system to screen new accounts for SEO spam. New accounts get a not_approved property set on creation. Admins can review accounts at /admin/recent_accounts, approving or flagging them. Flagged accounts can be batch-suspended. Unapproved accounts are excluded from site search, latest feeds, and random user display.
Review fixes: changed not_approved property from clustered (cldversion 4) to global (cldversion 0) and query userproplite instead of userproplite2; fixed suspend:recent priv check to allow users with both suspend:recent and suspend:openid to still use the console for OpenID suspensions.
Fixes #2824
Co-Authored-By: Kareila kareila@dreamwidth.org 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
[dreamwidth/dreamwidth] 69b73b: Style dead external services as unavailable
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 69b73bb3371d17d9d80379a20356e89a55abe86f https://github.com/dreamwidth/dreamwidth/commit/69b73bb3371d17d9d80379a20356e89a55abe86f Author: Mark Smith mark@dreamwidth.org Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M cgi-bin/DW/External/Site.pm M cgi-bin/DW/External/Site/Delicious.pm M cgi-bin/DW/External/Site/Diigo.pm M cgi-bin/DW/External/Site/Imzy.pm M cgi-bin/DW/External/Site/Inksome.pm M cgi-bin/DW/External/Site/JournalFen.pm M cgi-bin/DW/External/User.pm R htdocs/img/external/imzy.png R htdocs/img/external/ink-community.gif R htdocs/img/external/ink-userinfo.gif
Log Message:
Style dead external services as unavailable
For dead external services (del.icio.us, Diigo, Imzy, Inksome, JournalFen), show a generic userhead icon and unlinked username with [SiteName] suffix instead of linking to the dead site. Remove unused site-specific icons for dead services.
Fixes #3139 Closes #3056
Co-Authored-By: Carly Ho carlymho@fastmail.com 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
[dreamwidth/dreamwidth] 9c0e88: Modernize subscribe interface and convert tracking...
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 9c0e887414aecc86bf0d5b8762ac99392cb5deda https://github.com/dreamwidth/dreamwidth/commit/9c0e887414aecc86bf0d5b8762ac99392cb5deda Author: Mark Smith mark@dreamwidth.org Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M bin/upgrading/en.dat A cgi-bin/DW/Controller/Manage/Tracking.pm A cgi-bin/DW/Hooks/SubscriptionNotifOpts.pm A cgi-bin/DW/Hooks/SubscriptionStats.pm M cgi-bin/LJ/User/Message.pm M cgi-bin/LJ/Web.pm M htdocs/manage/settings/index.bml M htdocs/manage/settings/index.bml.text R htdocs/manage/tracking/comments.bml R htdocs/manage/tracking/comments.bml.text R htdocs/manage/tracking/entry.bml R htdocs/manage/tracking/user.bml A views/tracking/manage.tt A views/tracking/manage.tt.text A views/tracking/settings-interface.tt A views/tracking/settings-interface.tt.text A views/tracking/subscribe-interface.tt A views/tracking/subscribe-interface.tt.text
Log Message:
Modernize subscribe interface and convert tracking pages to TT
Move subscribe_interface HTML from LJ/Web.pm into TT templates, extract subscription logic into LJ::User::Message methods and hooks, convert 3 BML pages under /manage/tracking to TT controllers, and simplify /manage/settings notification code.
Add form_auth check to tracking controller and use LJ::check_referer for referer validation.
Fixes #3217
Co-Authored-By: Kareila kareila@dreamwidth.org 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
[dreamwidth/dreamwidth] 6dbc05: Hide website link for accounts younger than ten days
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 6dbc0529ac979d75453e49ab16fa870ef0bb736e https://github.com/dreamwidth/dreamwidth/commit/6dbc0529ac979d75453e49ab16fa870ef0bb736e Author: Mark Smith mark@dreamwidth.org Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M cgi-bin/DW/Logic/ProfilePage.pm M views/profile/logic.tt.text
Log Message:
Hide website link for accounts younger than ten days
Hide the website URL on user profiles for accounts less than 10 days old to deter SEO spammers. Accounts with the suspend priv can always see the link. The account owner sees a message explaining why their link is hidden.
Fixes #2795 Original PR: #3142
Co-Authored-By: Carly Ho carlymho@fastmail.com 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
[dreamwidth/dreamwidth]
Branch: refs/heads/dependabot/npm_and_yarn/api/js-yaml-4.1.1 Home: https://github.com/dreamwidth/dreamwidth
To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications
[dreamwidth/dreamwidth] 1b02ca: Bump js-yaml from 4.1.0 to 4.1.1 in /api (#3507)
Branch: refs/heads/main
Home: https://github.com/dreamwidth/dreamwidth
Commit: 1b02ca4c855c2fd71afa35cfd982cd9bec3d0b27
https://github.com/dreamwidth/dreamwidth/commit/1b02ca4c855c2fd71afa35cfd982cd9bec3d0b27
Author: dependabot[bot] <49699333+dependabot[bot]
users>
Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M api/package-lock.json
Log Message:
Bump js-yaml from 4.1.0 to 4.1.1 in /api (#3507)
[dreamwidth/dreamwidth] 488fbe: proper display of error messsages on the editpriva...
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 488fbe1d38a7190c1389c7c0c0a38b9f2c639a73 https://github.com/dreamwidth/dreamwidth/commit/488fbe1d38a7190c1389c7c0c0a38b9f2c639a73 Author: Jen kareila@dreamwidth.org Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M cgi-bin/DW/Controller/MassPrivacy.pm
Log Message:
proper display of error messsages on the editprivacy page (#3505)
To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications
[dreamwidth/dreamwidth] 1fa751: Add mysql-client to dependencies-system. (#3514)
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 1fa751f3896b4caaa6d532aaaa7f0b42da8ca7d5 https://github.com/dreamwidth/dreamwidth/commit/1fa751f3896b4caaa6d532aaaa7f0b42da8ca7d5 Author: Joshua Barrett jjbarr@ptnote.dev Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths: M doc/dependencies-system M etc/docker/dev/Dockerfile M etc/docker/web/Dockerfile M etc/docker/web22/Dockerfile M etc/docker/worker/Dockerfile M etc/docker/worker22/Dockerfile
Log Message:
Add mysql-client to dependencies-system. (#3514)
It turns out that almost every container pulls in mysql-client as an "exclusive dependency". And if everyone's doing it, it's not exclusive, and it should be added to the global dependency list.
To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications
Update on legal cases: one new victory! :) One new restriction :(
We're very sorry to have to do this, and especially on such short notice. The reason for it: on Friday, South Carolina governor Henry McMaster signed the South Carolina Age-Appropriate Design Code Act into law, with an effective date of immediately. The law is so incredibly poorly written it took us several days to even figure out what the hell South Carolina wants us to do and whether or not we're covered by it. We're still not entirely 100% sure about the former, but in regards to the latter, we're pretty sure the fact we use Google Analytics on some site pages (for OS/platform/browser capability analysis) means we will be covered by the law. Thankfully, the law does not mandate a specific form of age verification, unlike many of the other state laws we're fighting, so we're likewise pretty sure that just stopping people under 18 from creating an account will be enough to comply without performing intrusive and privacy-invasive third-party age verification. We think. Maybe. (It's a really, really badly written law. I don't know whether they intended to write it in a way that means officers of the company can potentially be sentenced to jail time for violating it, but that's certainly one possible way to read it.)
Netchoice filed their lawsuit against SC over the law as I was working on making this change and writing this news post -- so recently it's not even showing up in RECAP yet for me to link y'all to! -- but here's the complaint as filed in the lawsuit, Netchoice v Wilson. Please note that I didn't even have to write the declaration yet (although I will be): we are cited in the complaint itself with a link to our August news post as evidence of why these laws burden small websites and create legal uncertainty that causes a chilling effect on speech. \o/
In fact, that's the victory: in December, the judge ruled in favor of Netchoice in Netchoice v Murrill, the lawsuit over Louisiana's age-verification law Act 456, finding (once again) that requiring age verification to access social media is unconstitutional. Judge deGravelles' ruling was not simply a preliminary injunction: this was a final, dispositive ruling stating clearly and unambiguously "Louisiana Revised Statutes §§51:1751–1754 violate the First Amendment of the U.S. Constitution, as incorporated by the Fourteenth Amendment of the U.S. Constitution", as well as awarding Netchoice their costs and attorney's fees for bringing the lawsuit. We didn't provide a declaration in that one, because Act 456, may it rot in hell, had a total registered user threshold we don't meet. That didn't stop Netchoice's lawyers from pointing out that we were forced to block service to Mississippi and restrict registration in Tennessee (pointing, again, to that news post), and Judge deGravelles found our example so compelling that we are cited twice in his ruling, thus marking the first time we've helped to get one of these laws enjoined or overturned just by existing. I think that's a new career high point for me.
I need to find an afternoon to sit down and write an update for
In cases like SC, where the law takes immediate effect, or like TN and MS, where the district court declines to issue a temporary injunction or the district court issues a temporary injunction and the appellate court overturns it, we may need to take some steps to limit our potential liability: when that happens, we'll tell you what we're doing as fast as we possibly can. (Sometimes it takes a little while for us to figure out the exact implications of a newly passed law or run the risk assessment on a law that the courts declined to enjoin. Netchoice's lawyers are excellent, but they're Netchoice's lawyers, not ours: we have to figure out our obligations ourselves. I am so very thankful that even though we are poor in money, we are very rich in friends, and we have a wide range of people we can go to for help.)
In cases where Netchoice filed the lawsuit before the law's effective date, there's a pending motion for a preliminary injunction, the court hasn't ruled on the motion yet, and we're specifically named in the motion for preliminary injunction as a Netchoice member the law would apply to, we generally evaluate that the risk is low enough we can wait and see what the judge decides. (Right now, for instance, that's Netchoice v Jones, formerly Netchoice v Miyares, mentioned in our December news post: the judge has not yet ruled on the motion for preliminary injunction.) If the judge grants the injunction, we won't need to do anything, because the state will be prevented from enforcing the law. If the judge doesn't grant the injunction, we'll figure out what we need to do then, and we'll let you know as soon as we know.
I know it's frustrating for people to not know what's going to happen! Believe me, it's just as frustrating for us: you would not believe how much of my time is taken up by tracking all of this. I keep trying to find time to update
I look forward to the day we can lift the restrictions on Mississippi, Tennessee, and now South Carolina, and I apologize again to our users (and to the people who temporarily aren't able to become our users) from those states.
Question thread #148
The rules:
- You may ask any dev-related question you have in a comment. (It doesn't even need to be about Dreamwidth, although if it involves a language/library/framework/database Dreamwidth doesn't use, you will probably get answers pointing that out and suggesting a better place to ask.)
- You may also answer any question, using the guidelines given in To Answer, Or Not To Answer and in this comment thread.
Transformers (2023) #28

All the cool characters and interesting plots of the decades-long Transformers mythos exist for one reason alone.
And boy, does this issue succeed on that level. A Dan Mora design certainly doesn't hurt. Me want!
( Read more... )
Ultimate Death's Head

How does a freelance peacekeeping agent function in a post-future world without an economy? Well...
( Read more... )
[dreamwidth/dreamwidth] 5e94b4: Remove debug logging from DW::Request::Plack
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 5e94b4173f5cde8655bae27c54cf2c58f59318b7 https://github.com/dreamwidth/dreamwidth/commit/5e94b4173f5cde8655bae27c54cf2c58f59318b7 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)
Changed paths: M cgi-bin/DW/Request/Plack.pm
Log Message:
Remove debug logging from DW::Request::Plack
Leftover info-level logs in header_in() and address() that fire on every request through the proxy middleware.
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
[dreamwidth/dreamwidth] 20ed25: Add README for dwtool
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 20ed252f2bf4d768e186b84b26d9d28bd5333580 https://github.com/dreamwidth/dreamwidth/commit/20ed252f2bf4d768e186b84b26d9d28bd5333580 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)
Changed paths: A src/dwtool/README.md
Log Message:
Add README for dwtool
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
[dreamwidth/dreamwidth] eb6285: Skip all Apache2::Const modules in compile test
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: eb6285917454cd7e23d011380d965a09b327158d https://github.com/dreamwidth/dreamwidth/commit/eb6285917454cd7e23d011380d965a09b327158d Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)
Changed paths: M CLAUDE.md M t/00-compile.t
Log Message:
Skip all Apache2::Const modules in compile test
All five modules that import Apache2::Const are vulnerable to the same load-order issue: whichever loads first determines which constant groups get compiled, and subsequent use statements are no-ops. This only affects the shared-process test harness, not production where load order is controlled by mod_perl.
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
[dreamwidth/dreamwidth] a6a9be: Add dwtool — ECS
Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: a6a9bebf1ab547544e60ff260464a20289d4f926 https://github.com/dreamwidth/dreamwidth/commit/a6a9bebf1ab547544e60ff260464a20289d4f926 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)
Changed paths: A src/dwtool/.gitignore A src/dwtool/go.mod A src/dwtool/go.sum A src/dwtool/internal/aws/cloudwatch.go A src/dwtool/internal/aws/ecs.go A src/dwtool/internal/config/config.go A src/dwtool/internal/config/workers.go A src/dwtool/internal/github/github.go A src/dwtool/internal/model/types.go A src/dwtool/internal/ui/app.go A src/dwtool/internal/ui/dashboard.go A src/dwtool/internal/ui/deploy.go A src/dwtool/internal/ui/detail.go A src/dwtool/internal/ui/filter.go A src/dwtool/internal/ui/help.go A src/dwtool/internal/ui/keys.go A src/dwtool/internal/ui/logs.go A src/dwtool/internal/ui/styles.go A src/dwtool/main.go
Log Message:
Add dwtool — ECS deployment TUI for Dreamwidth
Bubble Tea-based terminal UI for managing ECS services, replacing the need to bounce between GitHub Actions, AWS Console, and CLI.
Features: - Dashboard with all ~42 services grouped by Web/Workers/Proxy - Service detail view with running tasks and metadata - Deploy flow: pick GHCR image, confirm, trigger GitHub Actions workflow - CloudWatch log viewer with follow mode and search - Shell access via ECS Exec (suspends TUI, resumes on exit) - Help overlay (?) and service filter (/) - Workers grouped by category from config/workers.json
Stack: Go 1.23, Bubble Tea v1, Lipgloss v1, aws-sdk-go-v2
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Commit: 294403f553295d08487c34b625908d7813bb82a2 https://github.com/dreamwidth/dreamwidth/commit/294403f553295d08487c34b625908d7813bb82a2 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)
Changed paths: M cgi-bin/DW/Request/Apache2.pm M t/00-compile.t
Log Message:
Revert Apache2::Const workaround, skip in compile test instead
Revert DW::Request::Apache2 back to the idiomatic mod_perl form. The load-order issue (earlier modules pre-loading Apache2::Const without :http) only manifests when all modules share one process in the test harness, not in production. Skip this module in t/00-compile.t rather than risk changing production behavior.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Compare: https://github.com/dreamwidth/dreamwidth/compare/3fe0010b6279...294403f55329
To unsubscribe from these emails, change your notification settings at https://github.com/dreamwidth/dreamwidth/settings/notifications
