Register resize listener once with empty deps; track left via ref so
the debounced callback always reads the current offset without
re-registering on every click.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- rpt-testimonials: pixel-offset carousel with DOM-measured max scroll,
cards overflow the 1200px safe area to the right; red debug border on container
- calendar: circle-per-day design replacing event bars; teal outline for
available days, filled for selected; dateClick replaces moreLinkClick
- settings.php: normalize BASE_URL before parse_url to fix trusted host
error when scheme is missing; always include localhost fallback patterns
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
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>
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>
- 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>