10 Commits
Author SHA1 Message Date
reaperandClaude Sonnet 5 29158d32ba Fix Drupal 403 (missing core) and add opt-in file deletion on project delete
Same class of gap as the earlier WordPress fix: `ddev config
--project-type=drupal*` only scaffolds DDEV's settings.php bridge, not
Drupal core itself, so a freshly created Drupal project 404/403'd with
nothing for the webserver to serve. The wizard's Drupal path now chains
configure -> start -> composer create-project drupal/recommended-project
-> composer require drush/drush -> drush site:install, with site
name/admin fields shown only for that project type. Docroot defaults to
`web` when Drupal is selected, matching what recommended-project's
installer-paths expect.

Also: Delete previously always left the project folder on disk with no
way to remove it from the app, which surprised a user expecting it gone.
Replaced the window.confirm with a proper modal that has an opt-in
"also delete project files from disk" checkbox, defaulting to the
previous (safe) behavior.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 20:38:11 -05:00
reaperandClaude Sonnet 5 9e2b0d00b9 Bump version to 1.0.1
Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 20:13:02 -05:00
reaperandClaude Sonnet 5 0fc1a10a18 Remove stray npm lockfile
This project uses pnpm (pnpm-lock.yaml, pnpm-workspace.yaml) — the
package-lock.json was an accidental npm-install artifact. Ignore it
going forward so it doesn't get re-added by mistake.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 20:07:36 -05:00
reaperandClaude Sonnet 5 68a5f80c31 Power off all DDEV projects on app quit
Sites were previously left running in the background after closing the
app. before-quit now defers quitting until `ddev poweroff` finishes (or
times out), stopping every running project's containers in one shot.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 19:58:00 -05:00
reaperandClaude Sonnet 5 8d52a23c75 Pre-pull DDEV's default Docker images in the background on launch
A first-ever ddev start pulls several GB across the webserver, db,
router, and ssh-agent images, which reads as the app hanging rather
than as an expected download. Warms the cache automatically once per
DDEV version (re-warms after a DDEV upgrade, since image tags are
versioned) using `ddev version --json-output` to discover the exact
default image tags — stays correct without hardcoding image names.
Runs fire-and-forget right after window creation so it never blocks
app startup or usage, and no-ops quietly if ddev/docker aren't
available yet.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:53:18 -05:00
reaperandClaude Sonnet 5 c2b95d057f Close create wizard modal as soon as ddev config succeeds
handleSubmit awaited the entire post-create chain (start, then for
WordPress: download core + install) before ever calling onClose(),
so the modal overlay sat there for the whole multi-step process with
no way to see what was actually happening — the terminal panel that
already tracks this operation's live output was hidden behind it.
Close right after the quick config step succeeds and let post-create
continue as a tracked background operation; failures still surface
via the existing toast/terminal-panel error handling regardless of
modal state.

Also extracts the project-name validation helpers out of
CreateProjectModal.tsx into their own module — mixing component and
non-component exports in one file breaks React Fast Refresh.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:53:10 -05:00
reaperandClaude Sonnet 5 5beb70f1e2 Fix streamed ddev commands hanging forever on interactive prompts
Node's spawn() leaves a child's stdin as an open-but-silent pipe by
default. A GUI-spawned ddev process has no terminal to answer a
prompt (e.g. the first-run telemetry opt-in), and a blocking read on
an open pipe with no EOF just hangs indefinitely instead of failing
or defaulting — reproduced by a "Start" operation that never
progressed past "Permission to beam up?" with no way to recover short
of force-quitting the app. Closing stdin gives ddev an immediate EOF,
which it treats as "use the default" rather than blocking.

Also strips ANSI escape codes from stdout/stderr before forwarding to
the renderer — ddev colorizes output unconditionally regardless of
TTY-ness, so the terminal panel and log viewer were rendering literal
escape sequences as visible text.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:52:52 -05:00
reaperandClaude Sonnet 5 b5085c1e8a Validate and slugify project names in the create wizard
DDEV project names must be valid hostname labels. The wizard
auto-filled the name from the picked folder's basename verbatim, so a
folder like "Aurora Admin" produced a name with a space that DDEV's
`ddev config` rejected with an opaque CLI error the UI never
surfaced. Slugify the auto-filled name and block manual entry of
invalid names before they ever reach the ddev CLI.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:30:09 -05:00
reaperandClaude Sonnet 5 86be76132d Add author and homepage metadata for Linux packaging
electron-builder's .deb target (fpm) refuses to build without an
author email and project homepage in package.json.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:30:02 -05:00
reaperandClaude Sonnet 5 f68261994e Ignore macOS AppleDouble (._*) resource-fork files
Cross-platform copy left dozens of these tracked as untracked noise;
.gitignore already covered .DS_Store but not its ._* siblings.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-08 05:29:56 -05:00