Commit graph

22 commits

Author SHA1 Message Date
Philip Peterson
6879b056da Use sendmail only on dev 2026-06-03 23:30:44 -07:00
Philip Peterson
2dd6c7da22 Add email field to booking form + dev mail mocking
- Add required email input (with autocomplete="email") to the booking
  details form in the homepage Preact widget (rpt-booking.js).
  Update EMPTY_FORM, submit payload, confirmedAppointment, and success
  summary to include it. The form now collects: first/last name, email,
  phone, comments.

- Update ScheduleController::storeSlot to extract/pass email in the
  booking_request mail params (and require it for the full-contact path).
  Log failures with details; return a structured error with a user-friendly
  message instead of bare "mail_failed".

- riverside_pt_mail hook now includes the user's email in the notification
  body (when provided).

- Dev improvements for mail:
  - In DEBUG mode (default on localhost), force php_mail interface in
    settings.php so the mailer uses the sendmail_path override.
  - Dockerfile + entrypoint.sh now provide/install a fake-sendmail.sh
    that prints the full email (To, Subject, headers, body from the
    hook) to stderr (visible in `docker compose logs`) and always
    succeeds (exit 0). This prevents "sh: 1: /usr/sbin/sendmail: not
    found" and guarantees booking submissions never return the
    "unable to send confirmation email" error in dev.
  - In non-DEBUG, still uses symfony_mailer + Postmark as before.
  - The fake is also baked into the image for consistency.

- JS error handling now prefers the server-provided 'message' from
  the JSON error response (better UX for real mail failures).

- Update CLAUDE.md with the new email field + dev mail mocking behavior.

- New file: docker/php/fake-sendmail.sh (the mock).

This addresses the recent "mail_failed" issues while keeping production
email via Postmark.
2026-06-03 23:05:06 -07:00
Philip Peterson
187174caa6 fix 2026-06-01 03:21:54 -07:00
Philip Peterson
0d35dda628 Fix palette swatches, login styling, and login redirect
- PaletteController: render proper color swatch cards (box + label) and
  wrap output in Markup::create() so Drupal's XSS filter doesn't strip
  inline style attributes
- riverside_pt.module: scope page_attachments and page_top to
  riverside_pt.* routes only — Tailwind preflight was blowing away
  Drupal's default form styles on the login page
- settings.php: derive trusted_host_patterns from BASE_URL so the host
  and port always agree; prevents localhost:8080 being treated as untrusted
- entrypoint.sh: pass --base-url to drush site:install so Drupal stores
  the correct canonical URL from the start

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 03:00:19 -07:00
Philip Peterson
cd2d59f298 Tweak lifecycle to make more stateless, fix some styling 2026-05-27 21:58:23 -07:00
5ea7e69f5a fix config
All checks were successful
Build and push image / build (push) Successful in 20m45s
2026-05-25 14:40:17 -08:00
9c0ea08d17 Move theme/front page setup outside IS_SETUP gate
All checks were successful
Build and push image / build (push) Successful in 20m35s
These are idempotent drush calls that should apply on every startup,
not just fresh installs — ensures correct state even when the DB was
previously set up by an older container image.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 14:06:45 -08:00
Philip Peterson
4cc847eaa4 Make config:import run unconditionally on every boot
All checks were successful
Build and push image / build (push) Successful in 20m32s
config:import was gated behind IS_SETUP, so new config files added to
the sync directory were never applied on already-configured instances.
Move it outside the if/else so it always runs. Only module enables and
theme setup remain behind the first-time guard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 12:38:44 -07:00
Philip Peterson
63ce2ba2ef wip 2026-05-24 19:23:05 -07:00
Mork Swork
a1f1b5902e Tailwind 2026-05-16 11:45:33 -07:00
Mork Swork
ee265b679d Switch themes 2026-05-16 09:52:21 -07:00
Mork Swork
4649c56a58 Hamburger menu 2026-05-14 21:23:54 -07:00
Mork Swork
f4d7c724cb Tweak top bar 2026-05-14 20:39:30 -07:00
Mork Swork
ed6ff4fbf6 Add front page, nav rebuild, and CI workflow
- Home controller with hero and services sections
- Nav rebuilt on install: Home, Services, About, FAQ, Contact (CTA), Book An Appointment (CTA)
- Entrypoint uses IS_SETUP check so failed installs retry on restart
- Gitea Actions workflow builds and pushes multi-arch image to forge.quinefoundation.com

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 20:05:46 -07:00
Mork Swork
1a5ece3f7d Admin theme 2026-05-12 17:38:52 -07:00
Mork Swork
81c82c3da8 Structure 2026-05-12 17:28:47 -07:00
Philip Peterson
219890fb1f Enable custom module 2026-05-01 05:34:37 -07:00
Philip Peterson
81fded80df Revert "Add node appointment type and others"
This reverts commit 04e2b112d8.
2026-05-01 05:20:36 -07:00
Philip Peterson
04e2b112d8 Add node appointment type and others 2026-05-01 05:04:36 -07:00
Philip Peterson
6918baaa7b Set default themes 2026-05-01 04:42:53 -07:00
Philip Peterson
4ef1864ecd Enable custom modules 2026-05-01 04:18:57 -07:00
Philip Peterson
acd91171da Initial commit 2026-04-20 00:33:56 -04:00