Feb. 8th, 2026

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 1d45aae01c9a5a6f56772cbd670115a16ad71c7c https://github.com/dreamwidth/dreamwidth/commit/1d45aae01c9a5a6f56772cbd670115a16ad71c7c Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: R .github/workflows/shop-build.yml R .github/workflows/shop-deploy.yml M .github/workflows/web22-deploy.yml R etc/docker/shop/Dockerfile R etc/docker/shop/config/.dir_scope R etc/docker/shop/config/dreamwidth-dev.conf R etc/docker/shop/config/dreamwidth-prod.conf R etc/docker/shop/config/etc/apache2/apache2.conf R etc/docker/shop/config/etc/apache2/conf-available/charset.conf R etc/docker/shop/config/etc/apache2/conf-available/localized-error-pages.conf R etc/docker/shop/config/etc/apache2/conf-available/other-vhosts-access-log.conf R etc/docker/shop/config/etc/apache2/conf-available/security.conf R etc/docker/shop/config/etc/apache2/conf-available/serve-cgi-bin.conf R etc/docker/shop/config/etc/apache2/conf-enabled/security.conf R etc/docker/shop/config/etc/apache2/envvars R etc/docker/shop/config/etc/apache2/magic R etc/docker/shop/config/etc/apache2/mods-available/access_compat.load R etc/docker/shop/config/etc/apache2/mods-available/actions.conf R etc/docker/shop/config/etc/apache2/mods-available/actions.load R etc/docker/shop/config/etc/apache2/mods-available/alias.conf R etc/docker/shop/config/etc/apache2/mods-available/alias.load R etc/docker/shop/config/etc/apache2/mods-available/allowmethods.load R etc/docker/shop/config/etc/apache2/mods-available/apreq2.load R etc/docker/shop/config/etc/apache2/mods-available/asis.load R etc/docker/shop/config/etc/apache2/mods-available/auth_basic.load R etc/docker/shop/config/etc/apache2/mods-available/auth_digest.load R etc/docker/shop/config/etc/apache2/mods-available/auth_form.load R etc/docker/shop/config/etc/apache2/mods-available/authn_anon.load R etc/docker/shop/config/etc/apache2/mods-available/authn_core.load R etc/docker/shop/config/etc/apache2/mods-available/authn_dbd.load R etc/docker/shop/config/etc/apache2/mods-available/authn_dbm.load R etc/docker/shop/config/etc/apache2/mods-available/authn_file.load R etc/docker/shop/config/etc/apache2/mods-available/authn_socache.load R etc/docker/shop/config/etc/apache2/mods-available/authnz_fcgi.load R etc/docker/shop/config/etc/apache2/mods-available/authnz_ldap.load R etc/docker/shop/config/etc/apache2/mods-available/authz_core.load R etc/docker/shop/config/etc/apache2/mods-available/authz_dbd.load R etc/docker/shop/config/etc/apache2/mods-available/authz_dbm.load R etc/docker/shop/config/etc/apache2/mods-available/authz_groupfile.load R etc/docker/shop/config/etc/apache2/mods-available/authz_host.load R etc/docker/shop/config/etc/apache2/mods-available/authz_owner.load R etc/docker/shop/config/etc/apache2/mods-available/authz_user.load R etc/docker/shop/config/etc/apache2/mods-available/autoindex.conf R etc/docker/shop/config/etc/apache2/mods-available/autoindex.load R etc/docker/shop/config/etc/apache2/mods-available/buffer.load R etc/docker/shop/config/etc/apache2/mods-available/cache.load R etc/docker/shop/config/etc/apache2/mods-available/cache_disk.conf R etc/docker/shop/config/etc/apache2/mods-available/cache_disk.load R etc/docker/shop/config/etc/apache2/mods-available/cache_socache.load R etc/docker/shop/config/etc/apache2/mods-available/cern_meta.load R etc/docker/shop/config/etc/apache2/mods-available/cgi.load R etc/docker/shop/config/etc/apache2/mods-available/cgid.conf R etc/docker/shop/config/etc/apache2/mods-available/cgid.load R etc/docker/shop/config/etc/apache2/mods-available/charset_lite.load R etc/docker/shop/config/etc/apache2/mods-available/data.load R etc/docker/shop/config/etc/apache2/mods-available/dav.load R etc/docker/shop/config/etc/apache2/mods-available/dav_fs.conf R etc/docker/shop/config/etc/apache2/mods-available/dav_fs.load R etc/docker/shop/config/etc/apache2/mods-available/dav_lock.load R etc/docker/shop/config/etc/apache2/mods-available/dbd.load R etc/docker/shop/config/etc/apache2/mods-available/deflate.conf R etc/docker/shop/config/etc/apache2/mods-available/deflate.load R etc/docker/shop/config/etc/apache2/mods-available/dialup.load R etc/docker/shop/config/etc/apache2/mods-available/dir.conf R etc/docker/shop/config/etc/apache2/mods-available/dir.load R etc/docker/shop/config/etc/apache2/mods-available/dump_io.load R etc/docker/shop/config/etc/apache2/mods-available/echo.load R etc/docker/shop/config/etc/apache2/mods-available/env.load R etc/docker/shop/config/etc/apache2/mods-available/expires.load R etc/docker/shop/config/etc/apache2/mods-available/ext_filter.load R etc/docker/shop/config/etc/apache2/mods-available/file_cache.load R etc/docker/shop/config/etc/apache2/mods-available/filter.load R etc/docker/shop/config/etc/apache2/mods-available/headers.load R etc/docker/shop/config/etc/apache2/mods-available/heartbeat.load R etc/docker/shop/config/etc/apache2/mods-available/heartmonitor.load R etc/docker/shop/config/etc/apache2/mods-available/http2.load R etc/docker/shop/config/etc/apache2/mods-available/ident.load R etc/docker/shop/config/etc/apache2/mods-available/imagemap.load R etc/docker/shop/config/etc/apache2/mods-available/include.load R etc/docker/shop/config/etc/apache2/mods-available/info.conf R etc/docker/shop/config/etc/apache2/mods-available/info.load R etc/docker/shop/config/etc/apache2/mods-available/lbmethod_bybusyness.load R etc/docker/shop/config/etc/apache2/mods-available/lbmethod_byrequests.load R etc/docker/shop/config/etc/apache2/mods-available/lbmethod_bytraffic.load R etc/docker/shop/config/etc/apache2/mods-available/lbmethod_heartbeat.load R etc/docker/shop/config/etc/apache2/mods-available/ldap.conf R etc/docker/shop/config/etc/apache2/mods-available/ldap.load R etc/docker/shop/config/etc/apache2/mods-available/log_debug.load R etc/docker/shop/config/etc/apache2/mods-available/log_forensic.load R etc/docker/shop/config/etc/apache2/mods-available/lua.load R etc/docker/shop/config/etc/apache2/mods-available/macro.load R etc/docker/shop/config/etc/apache2/mods-available/mime.conf R etc/docker/shop/config/etc/apache2/mods-available/mime.load R etc/docker/shop/config/etc/apache2/mods-available/mime_magic.conf R etc/docker/shop/config/etc/apache2/mods-available/mime_magic.load R etc/docker/shop/config/etc/apache2/mods-available/mpm_event.conf R etc/docker/shop/config/etc/apache2/mods-available/mpm_event.load R etc/docker/shop/config/etc/apache2/mods-available/mpm_prefork.conf R etc/docker/shop/config/etc/apache2/mods-available/mpm_prefork.load R etc/docker/shop/config/etc/apache2/mods-available/mpm_worker.conf R etc/docker/shop/config/etc/apache2/mods-available/mpm_worker.load R etc/docker/shop/config/etc/apache2/mods-available/negotiation.conf R etc/docker/shop/config/etc/apache2/mods-available/negotiation.load R etc/docker/shop/config/etc/apache2/mods-available/perl.load R etc/docker/shop/config/etc/apache2/mods-available/proxy.conf R etc/docker/shop/config/etc/apache2/mods-available/proxy.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_ajp.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_balancer.conf R etc/docker/shop/config/etc/apache2/mods-available/proxy_balancer.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_connect.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_express.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_fcgi.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_fdpass.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_ftp.conf R etc/docker/shop/config/etc/apache2/mods-available/proxy_ftp.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_hcheck.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_html.conf R etc/docker/shop/config/etc/apache2/mods-available/proxy_html.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_http.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_http2.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_scgi.load R etc/docker/shop/config/etc/apache2/mods-available/proxy_wstunnel.load R etc/docker/shop/config/etc/apache2/mods-available/ratelimit.load R etc/docker/shop/config/etc/apache2/mods-available/reflector.load R etc/docker/shop/config/etc/apache2/mods-available/remoteip.load R etc/docker/shop/config/etc/apache2/mods-available/reqtimeout.conf R etc/docker/shop/config/etc/apache2/mods-available/reqtimeout.load R etc/docker/shop/config/etc/apache2/mods-available/request.load R etc/docker/shop/config/etc/apache2/mods-available/rewrite.load R etc/docker/shop/config/etc/apache2/mods-available/sed.load R etc/docker/shop/config/etc/apache2/mods-available/session.load R etc/docker/shop/config/etc/apache2/mods-available/session_cookie.load R etc/docker/shop/config/etc/apache2/mods-available/session_crypto.load R etc/docker/shop/config/etc/apache2/mods-available/session_dbd.load R etc/docker/shop/config/etc/apache2/mods-available/setenvif.conf R etc/docker/shop/config/etc/apache2/mods-available/setenvif.load R etc/docker/shop/config/etc/apache2/mods-available/slotmem_plain.load R etc/docker/shop/config/etc/apache2/mods-available/slotmem_shm.load R etc/docker/shop/config/etc/apache2/mods-available/socache_dbm.load R etc/docker/shop/config/etc/apache2/mods-available/socache_memcache.load R etc/docker/shop/config/etc/apache2/mods-available/socache_shmcb.load R etc/docker/shop/config/etc/apache2/mods-available/speling.load R etc/docker/shop/config/etc/apache2/mods-available/ssl.conf R etc/docker/shop/config/etc/apache2/mods-available/ssl.load R etc/docker/shop/config/etc/apache2/mods-available/status.conf R etc/docker/shop/config/etc/apache2/mods-available/status.load R etc/docker/shop/config/etc/apache2/mods-available/substitute.load R etc/docker/shop/config/etc/apache2/mods-available/suexec.load R etc/docker/shop/config/etc/apache2/mods-available/unique_id.load R etc/docker/shop/config/etc/apache2/mods-available/userdir.conf R etc/docker/shop/config/etc/apache2/mods-available/userdir.load R etc/docker/shop/config/etc/apache2/mods-available/usertrack.load R etc/docker/shop/config/etc/apache2/mods-available/vhost_alias.load R etc/docker/shop/config/etc/apache2/mods-available/xml2enc.load R etc/docker/shop/config/etc/apache2/mods-enabled/access_compat.load R etc/docker/shop/config/etc/apache2/mods-enabled/alias.conf R etc/docker/shop/config/etc/apache2/mods-enabled/alias.load R etc/docker/shop/config/etc/apache2/mods-enabled/apreq2.load R etc/docker/shop/config/etc/apache2/mods-enabled/auth_basic.load R etc/docker/shop/config/etc/apache2/mods-enabled/authn_core.load R etc/docker/shop/config/etc/apache2/mods-enabled/authn_file.load R etc/docker/shop/config/etc/apache2/mods-enabled/authz_core.load R etc/docker/shop/config/etc/apache2/mods-enabled/authz_host.load R etc/docker/shop/config/etc/apache2/mods-enabled/authz_user.load R etc/docker/shop/config/etc/apache2/mods-enabled/autoindex.conf R etc/docker/shop/config/etc/apache2/mods-enabled/autoindex.load R etc/docker/shop/config/etc/apache2/mods-enabled/deflate.conf R etc/docker/shop/config/etc/apache2/mods-enabled/deflate.load R etc/docker/shop/config/etc/apache2/mods-enabled/dir.conf R etc/docker/shop/config/etc/apache2/mods-enabled/dir.load R etc/docker/shop/config/etc/apache2/mods-enabled/env.load R etc/docker/shop/config/etc/apache2/mods-enabled/filter.load R etc/docker/shop/config/etc/apache2/mods-enabled/mime.conf R etc/docker/shop/config/etc/apache2/mods-enabled/mime.load R etc/docker/shop/config/etc/apache2/mods-enabled/mpm_prefork.conf R etc/docker/shop/config/etc/apache2/mods-enabled/mpm_prefork.load R etc/docker/shop/config/etc/apache2/mods-enabled/negotiation.conf R etc/docker/shop/config/etc/apache2/mods-enabled/negotiation.load R etc/docker/shop/config/etc/apache2/mods-enabled/perl.load R etc/docker/shop/config/etc/apache2/mods-enabled/reqtimeout.conf R etc/docker/shop/config/etc/apache2/mods-enabled/reqtimeout.load R etc/docker/shop/config/etc/apache2/mods-enabled/setenvif.conf R etc/docker/shop/config/etc/apache2/mods-enabled/setenvif.load R etc/docker/shop/config/etc/apache2/mods-enabled/status.conf R etc/docker/shop/config/etc/apache2/mods-enabled/status.load R etc/docker/shop/config/etc/apache2/ports.conf R etc/docker/shop/config/etc/apache2/sites-available/000-default.conf R etc/docker/shop/config/etc/apache2/sites-available/default-ssl.conf R etc/docker/shop/config/etc/varnish/dreamwidth.vcl R etc/docker/shop/scripts/setup.sh R etc/docker/shop/scripts/startup-dev.sh R etc/docker/shop/scripts/startup-prod.sh

Log Message:


Consolidate shop image into web22 — they're identical

The shop and web22 Docker images were byte-for-byte identical (same base, same configs, same startup scripts). Remove the separate shop build/deploy workflows and Dockerfile, and add web-shop as a deploy target in web22-deploy.yml instead.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: c6233b86ee47b0048612b74219d0424511ba8fd8 https://github.com/dreamwidth/dreamwidth/commit/c6233b86ee47b0048612b74219d0424511ba8fd8 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: M cgi-bin/Plack/Middleware/DW/SubdomainFunction.pm

Log Message:


Handle __setdomsess in Plack SubdomainFunction middleware

Apache handles /setdomsess on subdomains (shop, journals) in its translation handler to set domain session cookies and redirect. The Plack middleware was missing this, causing 404s on shop.dreamwidth.org when the login flow bounced through /setdomsess.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: d8f13b74cf96b5c3e1fe4d10f27131360967f4db https://github.com/dreamwidth/dreamwidth/commit/d8f13b74cf96b5c3e1fe4d10f27131360967f4db Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: R .github/workflows/tasks/worker-send-email-ses-service.json M .github/workflows/worker-deploy.yml M .github/workflows/worker22-deploy.yml M config/workers.json

Log Message:


Remove dead send-email-ses worker — replaced by dw-send-email

The send-email-ses worker script no longer exists in the repo; it was superseded by dw-send-email (DW::TaskQueue/SQS). Remove the orphaned ECS task definition, deploy workflow entries, and workers.json config.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: e90510483267365e138d4ecd15b0fe0caa4e8ece https://github.com/dreamwidth/dreamwidth/commit/e90510483267365e138d4ecd15b0fe0caa4e8ece Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: R etc/kubernetes/datadog/README.md R etc/kubernetes/datadog/datadog-agent-rbac.yaml R etc/kubernetes/datadog/datadog-cluster-agent-rbac.yaml R etc/kubernetes/datadog/datadog-cluster-agent-service.yaml R etc/kubernetes/datadog/datadog-cluster-agent.yaml R etc/kubernetes/datadog/datadog-custom-metrics-server.yaml R etc/kubernetes/datadog/datadog-secret.yaml R etc/kubernetes/datadog/datadog.yaml R etc/kubernetes/datadog/rbac-hpa.yaml R etc/kubernetes/web/secrets/config-local.pl R etc/kubernetes/web/secrets/config-private.pl R etc/kubernetes/web/secrets/config.pl R etc/kubernetes/web/secrets/log4perl.conf R etc/kubernetes/web/update-secrets.sh R etc/kubernetes/web/web-ingress.yaml R etc/kubernetes/web/web-service.yaml R etc/kubernetes/web/web.yaml R etc/kubernetes/workers/generated/birthday-notify.yaml R etc/kubernetes/workers/generated/change-poster-id.yaml R etc/kubernetes/workers/generated/codebuild-notifier.yaml R etc/kubernetes/workers/generated/directory-meta.yaml R etc/kubernetes/workers/generated/distribute-invites.yaml R etc/kubernetes/workers/generated/dw-esn-cluster-subs.yaml R etc/kubernetes/workers/generated/dw-esn-filter-subs.yaml R etc/kubernetes/workers/generated/dw-esn-fired-event.yaml R etc/kubernetes/workers/generated/dw-esn-process-sub.yaml R etc/kubernetes/workers/generated/dw-send-email.yaml R etc/kubernetes/workers/generated/embeds.yaml R etc/kubernetes/workers/generated/esn-cluster-subs.yaml R etc/kubernetes/workers/generated/esn-filter-subs.yaml R etc/kubernetes/workers/generated/esn-fired-event.yaml R etc/kubernetes/workers/generated/esn-process-sub.yaml R etc/kubernetes/workers/generated/metrics-emitter.yaml R etc/kubernetes/workers/generated/resolve-extacct.yaml R etc/kubernetes/workers/generated/spellcheck-gm.yaml R etc/kubernetes/workers/generated/sphinx-copier.yaml R etc/kubernetes/workers/generated/sphinx-search-gm.yaml R etc/kubernetes/workers/generated/synsuck.yaml R etc/kubernetes/workers/hpa-cpu.yaml.template R etc/kubernetes/workers/hpa-sqs.yaml.template R etc/kubernetes/workers/regen-workers.pl R etc/kubernetes/workers/worker.yaml.template

Log Message:


Remove unused Kubernetes manifests — deployment moved to ECS

These configs (web, workers, Datadog) are left over from a previous Kubernetes deployment. All production infrastructure now runs on AWS ECS and nothing in the codebase references these files.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: eab03fce7e7953b512009ad9646522f1183f618d https://github.com/dreamwidth/dreamwidth/commit/eab03fce7e7953b512009ad9646522f1183f618d Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: A .github/workflows/ci.yml

Log Message:


Add CI workflow for tidy and compile checks

Runs t/02-tidy.t (code formatting) and t/00-compile.t (module compilation) on PRs and pushes to main, using the existing devcontainer image which has all dependencies pre-installed.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: ef93698f49b622ae9026cee6c45b50231347da06 https://github.com/dreamwidth/dreamwidth/commit/ef93698f49b622ae9026cee6c45b50231347da06 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: M .github/workflows/ci.yml

Log Message:


Add mod_perl lib path to PERL5LIB in CI workflow

Apache2::Const and other mod_perl Perl modules are installed to a non-standard path that only Apache adds to [personal profile] inc. Dynamically find the path via dpkg so compile tests pass for all modules.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: ace801e57d9f8b5cb4fe833aacca10c6eae6a2ab https://github.com/dreamwidth/dreamwidth/commit/ace801e57d9f8b5cb4fe833aacca10c6eae6a2ab Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: M .github/workflows/ci.yml M cgi-bin/DW/Request/Apache2.pm

Log Message:


Fix Apache2::Const load-order issue in compile tests

When modules like LJ::URI load Apache2::Const with :common first, a subsequent use Apache2::Const -compile => qw/ :common :http / is a no-op because Perl skips the import for already-loaded modules. This leaves the :http constants uncompiled, failing as barewords under strict subs.

Use an explicit BEGIN { Apache2::Const->compile(...) } which works regardless of prior load state. Also revert the unnecessary PERL5LIB workaround from the CI workflow.

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

Branch: refs/heads/main Home: https://github.com/dreamwidth/dreamwidth Commit: 3fe0010b62799cf29905cde092e25b78b8b6c834 https://github.com/dreamwidth/dreamwidth/commit/3fe0010b62799cf29905cde092e25b78b8b6c834 Author: Mark Smith mark@dreamwidth.org Date: 2026-02-08 (Sun, 08 Feb 2026)

Changed paths: M .github/workflows/tasks/web-canary-service.json M .github/workflows/tasks/web-shop-service.json M .github/workflows/tasks/web-stable-service.json M .github/workflows/tasks/web-unauthenticated-service.json A terraform/import.sh M terraform/providers.tf M terraform/web.tf

Log Message:


Give each web service its own CloudWatch log group

Web services previously shared /dreamwidth/web, making it hard to view logs for a specific service. Each now gets /dreamwidth/web/{key} matching how workers already have /dreamwidth/worker/{name}.

  • Add per-web log groups in terraform (keep legacy group for old logs)
  • Update task definition JSONs to use per-service log groups
  • Add S3 backend config for terraform state
  • Add terraform import script for bootstrapping state

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

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

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

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

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

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

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

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

Profile

Dreamwidth Changelog

February 2026

S M T W T F S
12 3 4 5 67
891011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 04:22 pm
Powered by Dreamwidth Studios