diff --git a/.textlintrc b/.textlintrc
index b5a40c1e..9f699d7c 100644
--- a/.textlintrc
+++ b/.textlintrc
@@ -26,10 +26,12 @@
["(\\s)SSH", "SSH"],
["vs?code", "VS Code"],
["web-?server", "web server"],
+ ["\\baddon\\b", "add-on"],
],
"exclude": [
"back[- ]end(\\w*)",
"command ?line tool(s)?",
+ "ddev-addon[-\\w]*",
"front[- ]end(\\w*)",
"readme(s)?",
"V[ -]?S[ -]?Code",
diff --git a/src/content/blog/coder-ddev-com-announcement.md b/src/content/blog/coder-ddev-com-announcement.md
index cc7a56a2..e1eb4ab6 100644
--- a/src/content/blog/coder-ddev-com-announcement.md
+++ b/src/content/blog/coder-ddev-com-announcement.md
@@ -1,6 +1,8 @@
---
title: "Introducing coder.ddev.com: DDEV in the Cloud"
pubDate: 2026-03-11
+modifiedDate: 2026-05-10
+modifiedComment: "Significant updates to coder behavior, including Drupal contrib issue setup and new authentication requirements."
summary: "coder.ddev.com provides free, experimental cloud-based DDEV workspaces powered by Coder. Start a Drupal contribution environment in under 30 seconds, with full VS Code, Xdebug, and CLI support."
author: Randy Fay
featureImage:
@@ -19,7 +21,7 @@ categories:
This is an experimental service with no guarantees of data retention, uptime, or long-term availability. The future of its maintenance and sustainability is uncertain. Do not store irreplaceable work here without pushing it to Git. Treat it as a convenience, not a platform to depend on.
:::
-Want a quick overview? Watch the 6-minute intro video starting from the very beginning:
+Want a quick overview? Watch the 6-minute intro video starting from the very beginning (note: this video shows an older version of the interface — the current template list includes drupal-contrib instead of user-defined-web):
@@ -39,14 +41,26 @@ The source code for the templates and Docker image is at [github.com/ddev/coder-
### 1. Log In with GitHub
-Go to [coder.ddev.com](https://coder.ddev.com) and click **Login with GitHub**. No separate account needed. `coder.ddev.com` receives read-only access to your email addresses, public profile, and GitHub organization membership — no code access, no write access.
+Access to coder.ddev.com requires a GitHub account and membership in an approved GitHub organization. Sign in using the **Sign in with GitHub** button — no separate Coder account registration is needed. coder.ddev.com receives read-only access to your email addresses, public profile, and GitHub organization membership — no code access, no write access.
+
+**Who has access:**
+
+- Members of the [ddev](https://github.com/ddev) GitHub organization
+- Members of organizations that sponsor DDEV at $100+/month (see the [DDEV sponsors page](https://ddev.com/support-ddev/)) — all members of a qualifying sponsor org can sign in without individual enrollment
+- Individuals approved by the DDEV maintainers
+
+If you are a `ddev` org member or your organization is a $100+/month sponsor, you can sign in immediately — no request needed.
+
+### Requesting Access
+
+If you do not have access through one of the paths above, open an issue in the [coder-ddev-com/access-requests](https://github.com/coder-ddev-com/access-requests) repository. Include your GitHub username and a brief description of how you plan to use the environment. The DDEV maintainers review requests and add approved users to the `coder-ddev-com` GitHub organization — once added, you can sign in immediately.
### 2. Create a Workspace
From the dashboard, click **Create Workspace** and choose a template:
- **drupal-core** — automated Drupal core development environment
-- **user-defined-web** — general-purpose DDEV for any project
+- **drupal-contrib** — Drupal contrib module/theme development environment
- **freeform** — DDEV with Traefik routing integration for stable URLs
Give your workspace a name and click **Create Workspace**. Most workspaces start in under a minute. The drupal-core template (with seed cache) is ready in about 30 seconds.
@@ -62,7 +76,7 @@ Once running, you have several options to use your workspace:
### drupal-core
-The drupal-core template sets up a complete Drupal core contribution environment automatically using [joachim-n/drupal-core-development-project](https://github.com/joachim-n/drupal-core-development-project). Drupal core is cloned, Composer dependencies are installed, and a demo site is installed — all in about 30 seconds when a seed cache is available.
+The drupal-core template sets up a complete Drupal core contribution environment automatically using the [amateescu/ddev-drupal-dev](https://github.com/amateescu/ddev-drupal-dev) DDEV add-on. Drupal core is cloned directly as the project root (no composer project wrapper), Composer dependencies are installed, and a demo site is installed.
Choose your Drupal version when creating the workspace:
@@ -80,6 +94,33 @@ This takes less than 4 minutes, try it out:
+### drupal-contrib
+
+The drupal-contrib template sets up a development environment for any Drupal contrib module or theme using the [ddev-drupal-contrib](https://github.com/ddev/ddev-drupal-contrib) add-on.
+
+Specify the project machine name when creating the workspace (e.g. `token`, `views`, `webform`). Drupal core is installed as a dev dependency, and your module or theme is symlinked into the web root automatically via `ddev symlink-project`.
+
+Choose your Drupal version (10, 11, or 12) and optionally provide an issue number and branch to have the issue fork checked out automatically.
+
+Dev tools available inside the workspace:
+
+- `ddev phpunit` — run PHPUnit tests
+- `ddev phpcs` / `ddev phpcbf` — check/fix Drupal coding standards
+- `ddev phpstan` — static analysis
+- `ddev eslint` / `ddev stylelint` — JavaScript and CSS linting
+
+Setup time is reasonable on first workspace creation and much faster on subsequent starts.
+
+**Key parameters:**
+
+| Parameter | Notes |
+| ---------------- | ------------------------------------------------ |
+| `project_name` | Drupal.org machine name, e.g. `token` (required) |
+| `project_type` | `module` or `theme` |
+| `drupal_version` | `10`, `11`, or `12` |
+| `issue_fork` | Issue number; omit for plain HEAD development |
+| `issue_branch` | Branch name; omit to use the default branch |
+
### freeform
The freeform template adds Traefik routing integration so your DDEV project and services like Mailpit get stable subdomain URLs (no port numbers). After creating a workspace, run `ddev coder-setup` once in your project directory, then `ddev start`. Routing updates automatically on every start.
@@ -88,17 +129,18 @@ The freeform template adds Traefik routing integration so your DDEV project and
One of the most useful features for Drupal contributors is the **Drupal Issue Picker** at [start.coder.ddev.com/drupal-issue](https://start.coder.ddev.com/drupal-issue).
-
+
+
+The picker accepts drupal.org issue URLs for both core and contrib projects and routes automatically to the right template:
-Paste any drupal.org issue URL (for example, `https://www.drupal.org/project/drupal/issues/3568144`) and the picker launches a drupal-core workspace with:
+- **Core issues** (e.g. [Deprecate update.compare functions](https://www.drupal.org/project/drupal/issues/3580705)) → **drupal-core** template, with the correct Drupal version detected and the issue fork branch checked out
+- **Contrib issues** (e.g. [Better PHP Standards](https://www.drupal.org/project/languages_dropdown/issues/3581165)) → **drupal-contrib** template, with the module cloned and the issue fork branch checked out
-- The correct Drupal version (10.x, 11.x, or main) detected from the issue
-- The issue fork branch already checked out
-- Composer dependencies resolved
+The picker also accepts a project URL (e.g. `drupal.org/project/token`) or machine name (e.g. `token`) for plain contrib development without a specific issue — it opens the drupal-contrib template with the project at HEAD.
-This replaces the workflow that DrupalPod (Gitpod-based) provided for contribution days. You can hand someone an issue URL, they paste it into the picker, and within 30 seconds they have a working environment with the issue branch ready.
+This replaces the workflow that DrupalPod (Gitpod-based) provided for contribution days. You can hand someone an issue URL, they paste it into the picker, and within 30 seconds (core) or a few minutes (contrib) they have a working environment with the issue branch ready.
-Demonstrating this from start to finish in about 6 minutes:
+The video below demonstrates the core issue flow (about 6 minutes). Note that it shows the original core-only version of the picker — the current picker handles contrib issues too: