Commit graph

23 commits

Author SHA1 Message Date
Philip Peterson
1e3ba132a4 Suppress duplicate key errors on semaphore table during rebuilds
- In _riverside_pt_rebuild(): proactively TRUNCATE the semaphore table
  at the very start of every rebuild. This eliminates the common
  'duplicate key value violates unique constraint "semaphore____pkey"'
  errors for 'state:Drupal\Core\Cache\CacheCollector' and 'cron' that
  appear in postgres logs.

- In entrypoint.sh: add TRUNCATE semaphore at strategic points
  (right after site:install, before module enables, before/after
  riverside:rebuild, before final drush cr). Wrapped with || true
  so they never break the startup script.

- Added a note in CLAUDE.md under the rebuild section explaining
  the errors and the quick manual fix.

These are harmless (Drupal's DbLockBackend usually recovers) but
very noisy in the container logs during the default full rebuild
path.
2026-06-04 00:06:27 -07:00
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