musesfool: (it's good to be the queen)
[personal profile] musesfool
Bridgerton season 4, part 1: spoilers )

So yeah, I definitely think this season has been firing on all cylinders (excellent musical choices as well, especially the Paramore cover), and thankfully we only have to wait a few weeks for part 2.

*
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: 1dba291b136e2650d4770ccb59b89588e09ffdc4 https://github.com/dreamwidth/dreamwidth/commit/1dba291b136e2650d4770ccb59b89588e09ffdc4 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-01 (Sun, 01 Feb 2026)

Changed paths: M .github/workflows/tasks/web-shop-service.json M bin/starman M etc/docker/shop/Dockerfile M etc/docker/shop/scripts/startup-prod.sh

Log Message:


Add Starman to production web-shop container

Run Starman alongside Apache+Varnish in the shop container on port 8080, exposed directly without Varnish. The load balancer can route traffic to either 6081 (Varnish→Apache) or 8080 (Starman) for gradual migration.

Remove hardcoded LJ_IS_DEV_SERVER from bin/starman so it no longer forces dev mode in production — the devcontainer sets this via containerEnv.

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

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

FESTIVIDS!

Feb. 1st, 2026 08:51 pm
tafadhali: ([music] artsy)
[personal profile] tafadhali
Oh, it's like Christmas all over again, Festivids is here! There were 128 vids this year and I watched nearly all of them; there are so many great ones to check out. I will rec some favorites, beginning with the two wonderful gifts I received:

ASSHOLE (Looney Tunes): A hysterical tribute to Daffy and Bugs and all the mayhem they cause. I love the way Daffy's manic winding up builds with the escalation of the music — and it's possible their asshole-ish qualities are what I love best about these characters. Bugs' insouciant little shrug at the end is the perfect capper.

Looney für Elise (Looney Tunes): This one was a great tribute to the way the original cartoons play with classical music. The cover of Für Elise is perfect — playful, varied, and still beautifully musical — and the clips are so well-timed and funny.



And then here are about 20 more that I really enjoyed:

Slipping Through My Fingers (Are You There God? It's Me Margaret): This song really just gets me in my feels. I loved this movie and I like how this vid shifts the POV to Margaret's mother and grandmother, showing the connections and similarities between them and also the way that Margaret is moving into her own private little world as she enters adolescence.

Hard Knock Life (Canopener Bridge YouTube Channel): This is the kind of source you look forward to every Festivids! I could just watch trucks get stuck under that bridge all day.

Weapon of Choice (Clue): We were spoiled for choice with Clue vids this FV! I was just particularly tickled by this song choice and the commitment to the bit in the editing.

You've Got Time (Dolores Claiborne): This packs a punch! Love how it incorporates the way the movie moves between past and present.

Everything I Need (Dykes to Watch Out For): Loved both DtWoF vids, but this one made me just cry uncontrollably. Such a beautiful tribute to queer community and activism — and an incredibly engaging use of still source!

Read My Mind (Elementary): I was so excited that Elementary was eligible this year! This vid reminded me how much I loved Joan and Sherlock's friendship. I teared up by the final repetition of "I don't shine if you don't shine."

That Escalated Quickly (Game Changer): I'm always here for all of the Dropout vids! This one made me laugh out loud as the wild comic energy built.

Primadonna (Hacks): I have not seen Hacks, but it was clear that this was both a funny and incisive character study! Gorgeous editing. Also, I don't know who the two people in this vid are at all but Take a Chance on Me charmed the pants off of me.

Spaceship and A Sadness Runs Through Him (I Saw the TV Glow): I can't pick one of the IStTG vids. Both just broke my heart open. I loved that both, especially "Spaceship," gave time to Maddy's POV.

The Man I Knew (Jesus Christ Superstar): Stunning multi-source vid from Judas's POV, with a perfect song selection. So many beautiful matching shots — Jesus surrounded by palms, Judas having coins rain down on him. The audience gets to see Jesus' vulnerability in the show through Gethsemane, but Judas is cut out that, and here the man he loves has just become opaque, Jesus-the-public-figure not the man.

Turn Tables (Multifandom): Another vid that captured the power of collective action. The vidder beautifully combines several biopics focused on people who built the Civil Rights movement.

Let's Get This Over With (Murderbot): There were several fantastic Murderbot vids this year. This one just struck exactly the right tone for me, of humor mixed with anxiety, from the opening lines where you can see Murderbot's overstimulation creeping up: "The drumbeat never changes tempo / It's steady like a rock / And like a rock it crushes you." 

The Heart Always Holds Onto Missing Roads (Murderbot): A special shoutout to this Murderbot vid, as well, for such a moving song choice and for giving such care and attention to Mensah and her relationship with Murderbot.

I Know She Knows (Next to Normal): The perfect vid for this source. I'd never heard this song before and when the title line "A ship could never really love an anchor" came along it just punched the air out of me. I love the montage where you see all the caring touches Diana gives Gabriel that she could never give Natalie (who seems so much more vulnerable in this production than in any I've seen, which just adds to the emotional impact).

The Pitt (Ordinary Day): We can all hope season one doesn't show an ordinary day at the Pitt, but this vid is lovely and gives every character a chance to shine. I particularly loved the section focusing on Dana!

Now I See (Ripley): A stylish, sharp vid that really makes the most of the source's lush black and white. I need to watch this adaptation!

Let's Get This Over With (Rosencrantz and Guildenstern Are Dead): Like the Murderbot vid to this song, this was one of my absolute favorite vids of the exchange! I almost didn't notice they were the same song at first because the two vids brought out such different things in them. In this vid, I loved how the lyrics played up the sense of performance and inevitability — that R and G are always inevitably making their way to that absurd and tragic end. Excellent use of multiple sources! (I also really really enjoyed the multi-source Hamlet vid, nothing and everything.)

birdsong (The Secret Garden): A beautiful, lush vid that captures how the children all come to life along with the garden.

Ya Ya (Sinners): Everything I could have wanted from a Sinners vid! A fantastic, expansive song choice, which matched the genre-bending in the film. This was sexy and scary and empowering and really made the most of the film's gorgeous visuals.

A Good Day (Tono to Inu): I was happy to come into this source cold because it meant I could be completely delighted and surprised by every adorable frame watching the vid.

littlefics: Three miniature books standing on an open normal-sized book. (Default)
[personal profile] littlefics posting in [community profile] seasonsofdrabbles
We have seven post-deadline pinch hits available! These are all due Friday, February 6, noon Eastern Standard time (Countdown), though we can be flexible if needed. If you're interested but would like more time, we encourage you to get in touch!

If you would like to claim a pinch hit, please comment to this post with the name/number of the pinch hit you would like. Make sure to include your AO3 username! Comments are screened.

PH 6 - 呪術廻戦 | Jujutsu Kaisen (Anime), 呪術廻戦 | Jujutsu Kaisen (Manga), Wind Breaker (Anime), Outlast (Video Games), Given (Anime), Wind Breaker - にいさとる | Nii Satoru (Manga) )

PH 7 - Psychonauts (Video Games), Umineko no Naku Koro ni | When the Seagulls Cry, Sonic the Hedgehog - All Media Types )

PH 13 - Doctor Who (2005), Mad Men, Blake's 7, Shakespeare & Hathaway: Private Investigators (TV), Monster - Urasawa Naoki (Anime & Manga), Original Work, Industry (TV) )

PH 14 - Heated Rivalry (TV), The Long Walk (Movie 2025), Thai Actor RPF, มีสติหน่อยคุณธีร์ | Me and Thee (TV), Stranger Things (TV 2016), Wicked (Movie 2024), Yellowjackets (TV), KinnPorsche: The Series (TV), Superman (Movie 2025), Ted Lasso (TV) )

PH 15 - Deltarune (Video Game), Hazbin Hotel (Cartoon), Team Fortress 2, Haunted Hotel (Cartoon), I Have No Mouth and I Must Scream - Harlan Ellison, The Electric State (2025) )

PH 16 - Star Trek: Voyager, Star Trek: Deep Space Nine, Star Trek: The Next Generation, Star Trek: Enterprise, The Murderbot Diaries - Martha Wells, Andor (TV), Mad Max Series (Movies), The Lord of the Rings - All Media Types )

PH 17 - Final Fantasy VIII, Final Fantasy XV, Compilation of Final Fantasy VII, Final Fantasy VII Remake and Rebirth (Video Games 2020-2024), Suikoden V, Chronicle of the Unhewn Throne Series - Brian Staveley, 逆転裁判 | Gyakuten Saiban | Ace Attorney, 陈情令 | The Untamed (TV), Frankenstein (2025) )

February the first.

Feb. 1st, 2026 08:56 pm
hannah: (Laundry jam - fooish_icons)
[personal profile] hannah
It remains below freezing, and I remain inside most of the day. I got my laundry done by going to the basement and I spent a little time at the gym by walking down the block to get to the relevant building. Other than that, it's not just been inside my building, but inside my apartment. There's not much desire to get out and head around right now, especially not with a day as slow as a Sunday. I had the possibility to make it more rapid, but I hadn't gotten myself together early enough in the day to spend three hours at the movies far downtown - a screening of Short Cuts - and I'm doing what I can to tell myself it'll come back around sometime.

That said, staying close by got the laundry done, got me to the gym for one of those "something is better than nothing" sessions, and got some lunch prep done, so I can live with that.
emylilas: (Mirror)
[personal profile] emylilas posting in [community profile] halfamoon
Title: So it's her fault!
Fandom: Fate the winx saga
Characters: Farah/Luna, Rosalind
Rated: G
Content warnings: dealing with grief
Prompt: The innocent.
Language: English
Word count: 1,778.

Summary: Farah is dead, and Luna's looking for someone to blame (preferably, someone that isn't her). She cannot let Rosalind be right when she says Luna had wanted it to happen.
Read on Ao3
jazzfish: Alien holding a cat: "It's vibrating"; other alien: "That means it's working" (happy vibrating cat)
[personal profile] jazzfish
Among the better things in life: a cat sleeping next to the laptop while I'm eating dinner.

Sadly he really dislikes the sound of me typing next to him, to the point that he woke up and got bitey. So now I am on the couch with the laptop and he's having a bath on the table.
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: dbe48689a185806364203cdd1757692b54141ec0 https://github.com/dreamwidth/dreamwidth/commit/dbe48689a185806364203cdd1757692b54141ec0 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-01 (Sun, 01 Feb 2026)

Changed paths: M cgi-bin/modperl_subs.pl

Log Message:


Fix Apache2::Connection XS bootstrap for client_ip method

The Plack merge removed use Apache2::Const qw/ :common / from LJ/S2.pm, which had been bootstrapping Apache2::Connection XS methods as a side effect. Without it, $conn->client_ip fails at runtime. Explicitly load Apache2::Connection in modperl_subs.pl.

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

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

Tarot Reading for Imbolc

Feb. 1st, 2026 05:10 pm
muccamukk: Sinbad looks up with an innocent and concerned expression (Sinbad: Puppy Eyes)
[personal profile] muccamukk
(Layout from [instagram.com profile] thewitchoftheforest right here.)

1. In what areas of my life do I need a fresh start?
Ten of Pentacles

2. How can I nurture myself at this time?
Five of Cups

3. What practical ways can I do this?
Eight of Wands (Reversed)

4. What seeds of intention should I plant?
Eight of Swords

5. What must I do to nurture those intentions?
The Priestess.

Like fucking fine, I guess! It's reasonable advice. Not in love with both the Five of Cups and the Eight of Swords in one reading, but that's not out of line with how things have been going, either. I like the Priestess.
rogueslayer452: (Firefly. Kaylee Frye.)
[personal profile] rogueslayer452
Challenge #05: In your own space, create a list of at least three things you'd love to receive, a wishlist of sorts.

01. Icons Of: Huo Wensi and/or Huo Wensi/Luo Fei from the cdrama Detective L.

02. Recommendations of programs to create fanwork. This is quite a specific one because I've been itching for years to create something, from icons and graphics to fanvids because I have ideas. I used to have a program ages ago (Microsoft's Picture It!) which I created various things including graphics for the fanmixes I did way back when, but that was on an old computer and that program has long since been discontinued and defunct. I've been attempting to look for comparable programs, however my findings lead me to being confused and overwhelmed and a bit apprehensive on the legitimacy since some places are websites only instead of a program you download onto your computer, and even then I don't want to download anything that is going to take forever to load or cause problems, which I know is a risk for anything these days anyway.

So, my request is mainly for the graphic makers and vidders in fandom: what programs do you use, your pros and cons for them, how much of a learning curve there is and if there is good tutorial out there. Note that I mainly use my laptop, I don't do anything on mobile.

2026 Schedule & Info (Last Round!)

Feb. 1st, 2026 06:27 pm
longficmod: Photo of a woman tying a running shoe (Default)
[personal profile] longficmod posting in [community profile] fandom5k
Welcome to Fandom 5K! 2026 will be our tenth and final year.

This is a multi-fandom gift exchange for fic with a 5,000-word minimum and comics with a 5-page minimum. Last year's challenge can be found here on AO3 - 2026 link TBA.

Before signing up, please read the rules! You can also see the 2025 FAQ for some common questions. 2026 versions of these pages will be linked soon, but most of the rules will be consistent with the exception of the default amnesty (see below).

Other questions to the mods can be posted to the community or emailed to fandom5kmod@gmail.com. Please contact us privately for any concerns about your assignment or your gift.

Quick links for 2026 TBA:
  • Challenge profile
  • Rules
  • FAQ
  • Tag set
  • Requests on the app
  • Mod email: fandom5kmod@gmail.com

Planned 2026 schedule (may be tweaked slightly, especially if other longform exchanges announce conflicting schedules; will be finalized by nominations):
  • Nominations: 22 March - 1 April
  • Signups: 3 April - 11 April
  • Assignments out by: 14 April
  • Mandatory check-in: 8-15 May
  • Default deadline: 15 May
  • Works due: 5 June
  • Works revealed: 26 June
  • Creators revealed: 11 July
All deadlines are at 10:59 PM EDT on the date listed, unless otherwise indicated. (This is an hour earlier than last year. Your mod is getting older and fonder of sleep.)

As a reminder, for the final round, I am issuing an amnesty to anyone who defaulted late in 2025 or previous years, as long as that default occurred before the works due deadline.
 
That is, if you forgot to contact me during check-in week, or you checked in but then hit the default button before the deadline because something came up, you no longer need to create a make-up assignment to participate in the final round.
 
If you didn't default before the works due deadline--maybe you simply didn't show up on that date and never turned a work in, or you defaulted with an extension--I will still ask you to turn in a makeup assignment before signing up next year. This also may apply if you turned in a placeholder or your gift otherwise didn't fulfill our rules.
 
If you have any questions about how this amnesty applies to you, please email me!
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: 22120106eb6013b4857e3d8f233d0b34dfaad9bd https://github.com/dreamwidth/dreamwidth/commit/22120106eb6013b4857e3d8f233d0b34dfaad9bd Author: Mark Smith mark@dreamwidth.org Date: 2026-02-01 (Sun, 01 Feb 2026)

Changed paths: M .devcontainer/config/etc/apache2/ports.conf M .devcontainer/devcontainer.json A .devcontainer/plack/Dockerfile A .devcontainer/plack/devcontainer.json A .devcontainer/setup.sh M .devcontainer/start.sh M .gitignore R Build.PL M CLAUDE.md A app.psgi M bin/checkconfig.pl A bin/starman M cgi-bin/Apache/BML.pm M cgi-bin/Apache/LiveJournal.pm M cgi-bin/DBI/Role.pm A cgi-bin/DW/BML.pm M cgi-bin/DW/Controller/Create.pm A cgi-bin/DW/Controller/Journal.pm M cgi-bin/DW/Controller/Login.pm A cgi-bin/DW/Controller/Userpic.pm M cgi-bin/DW/Request.pm M cgi-bin/DW/Request/Apache2.pm M cgi-bin/DW/Request/Base.pm A cgi-bin/DW/Request/Plack.pm M cgi-bin/DW/Request/Standard.pm M cgi-bin/DW/Widget/AccountStatistics.pm M cgi-bin/LJ/Global/Defaults.pm M cgi-bin/LJ/S2.pm M cgi-bin/LJ/User/Account.pm M cgi-bin/LJ/Web.pm A cgi-bin/Plack/Middleware/DW/Auth.pm A cgi-bin/Plack/Middleware/DW/ConcatRes.pm A cgi-bin/Plack/Middleware/DW/Dev.pm A cgi-bin/Plack/Middleware/DW/Redirects.pm A cgi-bin/Plack/Middleware/DW/RequestWrapper.pm A cgi-bin/Plack/Middleware/DW/Sysban.pm A cgi-bin/Plack/Middleware/DW/UniqCookie.pm A cgi-bin/Plack/Middleware/DW/XForwardedFor.pm M cgi-bin/ljlib.pl M cgi-bin/modperl_subs.pl A doc/PLACK.md M doc/dependencies-cpanm M doc/dependencies-system M src/s2/S2.pm A t/plack-app.t A t/plack-auth.t A t/plack-bml.t A t/plack-controller.t A t/plack-integration.t A t/plack-middleware.t A t/plack-static.t A t/plack-sysban.t M views/login.tt

Log Message:


Plack/Starman Support (#3512)

  • Add missing use LJ::Memories in AccountStatistics widget

The widget calls LJ::Memories::count() but relied on modperl_subs.pl to load the module at startup rather than declaring its own dependency.

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

  • Use path-based journal URLs in dev container

Override $SUBDOMAIN_RULES for dev containers to use path-based format (/~username) instead of subdomain-based format (username.domain). Fix journal_base() to construct URLs from the request host when the rule has an empty domain.

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

  • Plack testing with devcontainer

  • Fix Plack request lifecycle and integration tests

DW::Request->get now always creates a fresh request when plack_env is provided, fixing the issue where LJ::start_request's internal reset/get cycle would leave DW::Request in a stale state. Also fixes DW::Request::Plack->status to work as a getter, adds a default 404 for unmatched routes in app.psgi, and rewrites the integration test to properly monkey-patch after module loading. Includes tidyall formatting.

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

  • Plack: render Login controller through full stack, remove dead Procnotify call

Add missing methods to DW::Request::Plack (pnote, note, content, content_type getter/setter, no_cache, get_remote_ip) so controllers can render through the Plack stack. Route all requests through DW::Routing in app.psgi instead of only /api/ paths, and use the routing return value to set HTTP 200 status for handled requests.

Remove the dead LJ::Procnotify::check() call from RequestWrapper middleware — the module was deleted but the call was left behind.

New test t/plack-controller.t validates GET /login renders through the real routing + controller + template pipeline via Plack::Test.

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

  • Add UniqCookie middleware and fix is_web_context for Plack

Add Plack::Middleware::DW::UniqCookie that calls LJ::UniqCookie->ensure_cookie_value to generate and set the unique tracking cookie on every request, matching Apache behavior.

This required two supporting changes:

  • LJ::is_web_context() now returns true when a DW::Request is active, not just under mod_perl. Many modules gate web-only behavior on this check, so Plack requests were silently skipping cookie, auth, and other web-context logic.

  • DW::Request::Plack now implements err_header_out, header_out_add, and err_header_out_add so that add_cookie (which appends Set-Cookie headers) works correctly.

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

  • Add static content serving middleware for Plack

Add DW::ConcatRes middleware to handle concatenated CSS/JS requests (??file1.css,file2.css URLs), ported from Apache::LiveJournal. Wire in Plack::Middleware::Static for plain static files from $LJ::HTDOCS, matching Apache's DocumentRoot behavior.

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

  • Implement redirect.dat support in Plack redirects middleware

Load redirect.dat and redirect-local.dat at startup and return 301 for matching paths, preserving query strings. Matches the existing Apache behavior in Apache::LiveJournal::trans().

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

  • Add Sysban middleware for Plack and clean up app.psgi TODOs

Port sysban blocking from Apache::LiveJournal::trans() to a Plack middleware: IP bans, uniq cookie bans, tempbans, and noanon_ip bans for anonymous users. Also remove stale TODOs from app.psgi (srand preforking is a non-issue in modern Perl, BML language setup is irrelevant to Plack but noted in RequestWrapper for future BML port).

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

  • Implement Auth middleware for Plack

Resolve authenticated user from session cookies via LJ::Session->session_from_cookies() and set the remote user for the request. Bypasses LJ::get_remote() directly since it depends on BML::get_request(), but subsequent get_remote() calls hit the cache. Supports dev server ?as=username impersonation.

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

  • Route embed module domain requests to embedcontent handler

When the request host matches $LJ::EMBED_MODULE_DOMAIN, force routing to /journal/embedcontent regardless of path, matching the Apache trans() behavior. Removes the last placeholder comment from app.psgi.

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

  • Implement BML rendering under Plack via DW::BML

Add DW::BML module that renders .bml pages using DW::Request instead of Apache APIs, allowing BML pages to work under Plack. The module reuses the core BML engine (bml_decode, bml_block, config loading, scheme/look system) from Apache::BML and only replaces the handler and request adapter layers.

Includes a RequestAdapter that makes DW::Request look like an Apache request object for BML's public API functions (BML::get_request(), etc.), BML fallback routing in app.psgi after DW::Routing, and tests.

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

  • Add homepage integration tests verifying tropo-red site scheme

Tests that GET /index returns 200, renders with the tropo-red body class, includes tropo-red.css, and has text/html content type. Restructured integration tests so real-routing tests run before the monkey-patch.

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

  • Add Starman dependency and dev server startup script

Add Starman to dependencies-cpanm and create bin/dev-plack-server for running Dreamwidth under Plack/Starman with a single worker in dev mode. Listens on 0.0.0.0:8080 by default, configurable via --port and --host.

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

  • Fix static file serving to search all htdocs directories

Static middleware now iterates over LJ::get_all_directories('htdocs') so files from extensions (e.g. dw-nonfree) are served alongside base htdocs. Uses pass_through so each layer falls through to the next when a file isn't found in that directory.

Fixes 404s for nonfree static assets like /img/tropo-red/dw_logo.png.

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

  • Provide BML package functions for Plack and initialize language getter

DW::BML now defines all BML::* package functions (ml, set_language, ehtml, get_request, cookies, etc.) and Apache::BML::* stubs at load time so they're available in any Plack web context. Previously these were only defined by Apache::BML which can't be loaded without Apache2::* modules.

RequestWrapper now calls BML::set_language with LJ::Lang::get_text on every request so translation strings resolve correctly for all pages.

Also fixes infinite recursion in the request adapter's overloaded hash classes by using array-based objects to avoid re-triggering %{} overload.

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

  • Fix login error display, URL doubling, and BML scope bridging

  • Display login errors in login.tt using Foundation alert-box pattern

  • Set ml_scope early in Login controller so LJ::Lang::ml resolves relative string codes before template rendering
  • Bridge BML and TT scope mechanisms: BML::ml falls back to $r->note('ml_scope') when $BML::ML_SCOPE is empty
  • Fix DW::Request::Plack::uri to return path only (matching Apache behavior) instead of full URL, which caused doubled URLs in every LJ::create_url call

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

  • Fix cookie domain issues for dev container under Plack

The Redirects middleware used local $LJ::DOMAIN_WEB = "www.$LJ::DOMAIN" which leaked "www." into downstream cookie-setting code when $DOMAIN is empty (dev container). Changed to a lexical variable scoped to the redirect checks only.

Also set $COOKIE_DOMAIN to empty string in dev container defaults to prevent it defaulting to "." (just a dot), which browsers reject.

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

  • Update CLAUDE.md with Plack dev server and workflow notes

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

  • Preserve cookies on Plack redirects and handle controller redirect responses

DW::Request::Plack::redirect was creating a new Plack::Response, discarding any cookies/headers already set on the request (e.g. login session cookies). Now builds the redirect from the existing response object. Also handle controller redirect responses (arrayrefs) in app.psgi dispatch.

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

  • Load real Apache::BML engine under Plack, fix BML strings and dev server usability

  • Load Apache::BML by stubbing Apache2/APR modules so the BML engine functions (bml_decode, load_conffile, parsein, etc.) are available under Plack without duplicating them. Fake Apache2::Const provides the constants Apache::BML needs.

  • Remove no-op stubs for BML::register_hook, set_config, register_language, etc. that were preventing BML config files (like BMLInit.pm) from registering the ml_getter hook. This fixes missing translation strings on BML pages.

  • Keep .bml in the language scope so LJ::Lang::get_text can match scope to .bml.text files, fixing [missing string] on BML pages.

  • Fix undef warnings in BML::decide_language.

  • Fix check_referer for dev servers with empty $LJ::DOMAIN by comparing referer host against the request Host header.

  • Auto-validate email on account creation in dev servers so new accounts can post immediately without email confirmation.

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

  • Fix grants

This supports both localhost (domain socket) and 127.0.0.1 (TCP socket) connections, which get triggered depending on how you access the database.

  • Fix missing standard CSS/JS resources and LJ::Memories under Plack

Under Plack, start_request called DW::Request->reset before the request was created, so the resource registration block (lj_base.css, esn.css, jquery UI, etc.) was skipped. Extract registration into LJ::register_standard_resources() and call it from the Plack middleware after the DW::Request is created.

Also add explicit use LJ::Memories in AccountStatistics widget, which was previously only loaded via modperl_subs.pl.

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

  • Add DW::Controller::Userpic to serve userpics via DW::Routing

Replaces the Apache::LiveJournal userpic_trans/userpic_content handlers with a proper controller that works under both Plack and mod_perl.

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

  • Add DW::Controller::Journal for journal rendering under Plack

Extract journal viewing pipeline from Apache::LiveJournal into a shared DW::Controller::Journal module. Journals are now accessible under Plack via path-based URLs (/~username/ and /users/username/).

  • Create DW::Controller::Journal with determine_view() and render() methods
  • Add journal path-based routing in app.psgi before BML fallback
  • Override $SUBDOMAIN_RULES for dev container to use path-based URLs
  • Fix LJ::User::journal_base to construct /~user URLs in dev container
  • Add OK/NOT_FOUND/DECLINED/status_line stubs to DW::BML::RequestAdapter
  • Load Apache2::Response in modperl_subs.pl for headers_out in trans phase
  • Fix S2 check_depth undef warnings by guarding before hash interpolation

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

  • Load DW::Request::Apache2 at startup to bootstrap mod_perl XS methods

DW::Request no longer loads DW::Request::Apache2 at compile time (to support Plack), so Apache2::RequestRec XS methods like headers_out were never bootstrapped. Load DW::Request::Apache2 explicitly in modperl_subs.pl so all Apache2 XS methods are available during the PerlInitHandler/PerlTransHandler phases.

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

  • Fix redirect loop for path-based journal URLs under Apache

When SUBDOMAIN_RULES uses path-based URLs in the dev container, journal_base returns http://host/~user which matches the incoming /~user/ path, causing an infinite redirect. Detect this case and dispatch directly via $determine_view instead of redirecting.

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

  • Fix S2 stylesheet loading and warnings under Plack path-based URLs

The HTMLCleaner was stripping S2 stylesheet tags because valid_stylesheet_url didn't recognize /~user/res/N/stylesheet paths. Also adds set_last_modified/meets_conditions to DW::Request::Plack and fixes various uninitialized value warnings in the journal controller.

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

  • Update web runner name

Default to 3 workers and call it Starman! Because it is!

  • Fix shop links in dev container by setting SHOPROOT to /shop

When SHOPROOT was empty string, links like "$SHOPROOT/account" lost their /shop prefix and resolved to just /account, which doesn't route to the shop controllers.

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

  • Fix Auth middleware to always mark auth resolution and add safety docs

Always call set_remote(undef) when no authenticated user is found, so LJ::get_remote() won't re-enter session resolution via Login.pm (which crashes on null owner). Add safety comments to LJ_IS_DEV_SERVER env var and ?as= impersonation block. Fix plack-auth.t mocks to properly isolate test state.

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

  • Update Plack docs, fix CLAUDE.md startup command, remove Build.PL

Rewrite doc/PLACK.md to reflect current implementation: full middleware stack, routing pipeline, test suite, and security notes. Update CLAUDE.md to reference doc/PLACK.md and fix bin/starman command. Remove unused Build.PL.

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

  • Switch devcontainer to Starman on port 80, Apache available on 8081

Starman is now the primary web server in the devcontainer. Apache config is kept on port 8081 but not started by default (run apache2ctl start manually if needed). Added --log option to bin/starman for access and error logs. Removed spammy debug logging from app.psgi.

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

  • Add libgd-dev

Need this to build GD... sometimes? Docker caching memes.

  • Split devcontainer into setup.sh (one-time) and start.sh (every restart)

postCreateCommand runs setup.sh for DB init, schema loading, and static compilation. postStartCommand runs start.sh for mysql, memcached, and Starman on every container start. Added --daemonize flag to bin/starman so the process survives the parent shell exiting.

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

  • Remove macos/brew

This was a brief experiment, but no longer needed now that devcontainer is working!

  • Extraneous, was part of a spurious misfire

  • Revert unnecessary changes to Utils.pm, Auth.pm; remove DBIx::Class dep

Revert LJ::Utils namespace refactor and LJ::Auth irand import — both were interim experiments that aren't needed. Remove unused DBIx::Class from dependencies-cpanm.

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

3 Good Things

Feb. 1st, 2026 06:46 pm
jjhunter: kitten peers playfully at beleaguered peacock from on top of its head (kitten teases peacock)
[personal profile] jjhunter
1.) Yesterday we hosted an playreading brunch with a fun group of friends - may it be the first of many more! This time we did Tom Stoppard's "Arcadia".

I used to host regular playreading potluck dinner parties years and years ago when I lived in a co-op, and losing access to rooms of a size where 8+ people might cheerfully cram themselves on various chairs and couches and floor nooks with cushions was one of the griefs I carried with me from that co-op's breakup. I'm glad to be restarting now.

2.) Today I had the the mindblowing joy of seeing 'Noli Timere' ('be not afraid') at ArtsEmerson.

Calling it an aerial dance doesn't quite do it justice; you can see the local trailer here or read a great WBUR feature about it here. ("In a time defined by uncertainty and distance, this piece isn’t just about resisting the gravity that weighs on us, it’s about choosing to catch each other when we fall, to carry each other through the invisible webs that bind us.")

3.) We have had an entire week+ of snow on the ground, and a foot of it is still here!

This delights me for many reasons, not least that this means another year of the invading fire ants being killed before they can establish themselves. Every winter we get at least ten days in a row of freezing weather is a winter I heave a big sign of relief.
suzume: Official art smiling Yun in front of a drawing of cherry blossoms (Cherry blossoms Yun)
[personal profile] suzume posting in [community profile] halfamoon
Title: Innocent
Fandom: Suikoden III
Character(s): Yun, Yuiri, & Wyatt
Rating: G
Summary: Yun can tell when someone is coming to visit their village.

Innocent Yun )
ineffablecabbage: the words "outer space" (Outer Space)
[personal profile] ineffablecabbage posting in [community profile] halfamoon
 Title: First Lamb to the Slaughter
Day/Prompt: Day 1 / The Innocent
Fandom: 9-1-1
Character/Pairing: Jee-Yun Buckley Han
Rating/Warning(s): Future Fic, Implied/Referenced Child Abuse, Canonical Sexual Assault, Canon Domestic Violence, Sexual Harassment, Canon Sexual Harassment, Teacher/Student Sexual Assault, Racism, Non-Canon Sexual Assault, Maddie Buckley Critical, Howie "Chimney" Han Critical 
Word Count: 8089
 
Summary: Jee-Yun grows up in the shadow of all the ghosts of all the people who love her. It is not a particularly easy way to grow up, no matter how much they might love her. (Mistakes may not repeat, but sometimes they rhyme.) The village of people raising her do help soften the blow a little, though.
 
 
Author's Notes: This is strictly from Jee's POV, and is very critical of her parents (as teenagers tend to be.) None of the sexual assault refers to Jee - it refers to events that have happened in the show or happen to OCs in the story. None of it is graphic. It's there to address a plot point in the show and how the show handles sexual assault from the perspective of Jee - not to be graphic.

On AO3
 

Most Popular Tags

Page generated Feb. 2nd, 2026 02:46 am
Powered by Dreamwidth Studios