Thank-you page rebuild, plus the missing job task slugs - #266
Merged
Merged
Conversation
The page shipped as a bare left-aligned Section on the default background, while every form that leads to it opens on the dark violet band. Arriving there read as a drop onto an unstyled page rather than the last step of one flow. Rebuilt on the canonical band with the faded grid asset, and lifted the panel out of its lower edge, which is the idiom the Book a Demo form already uses. Three real defects went with it: - The primary CTA pointed at /clean-images, which 404s. The route is /cleanstart-images. The deal-registration secondary pointed at /compare, also a 404, and contact pointed at /knowledge-hub, which redirects into a single article rather than a listing. - The secondary CTA was invisible. It used .cs-link-cta, which is white with a #33BAEC hover because it is built for the dark bands; on the white card that is white on white, and the hover measures 2.2:1. Added a light-surface variant on #3960F9, the blue already used for focus rings. - The copy promised a response 'usually within one business day', reintroducing exactly what 9f0defc removed from every form and confirmation email a day earlier, on the grounds that it reads as a commitment the team has not agreed to. Also dropped the defining-by-negation tic the copy had picked up in four places ('not an autoresponder sequence', 'rather than a shared inbox nobody owns'), and raised the band's top padding floor so the eyebrow pill clears the overlaid header on narrow viewports.
The page opened with a green tick pill reading 'Demo requested'. Nothing else on the site renders a success badge, and the eyebrow it was built from is a metadata convention rather than a visual one: pages pass `eyebrow` to buildPageMetadata so og.ts can print a category onto the share card. On the page it read as a generic form-submitted toast, and it restated what the headline underneath it already says. Removed the pill and the now-dead `eyebrow` field, which duplicated `metaTitle` verbatim in all four entries. The headline leads instead.
The 'what happens next' block was reassurance rather than information. It told the visitor they would hear from 'a named person who has read your message, not a sequence', which is corporate-speak wrapped around the same defining-by-negation tic the previous pass was supposed to remove, and it closed with 'say so in your reply' when the visitor has just submitted a form and has no thread to reply to. Rewritten from the confirmation emails these forms actually send, so the page and the inbox agree. Each block now names the subject line the visitor is about to receive and what to do with it. The careers case is the reason this had to be per-form rather than generic: that confirmation is sent from an unmonitored address and tells the applicant not to reply, so pointing them at a reply would have contradicted it. It points at the contact form instead.
Three things the copy asserted that it could not back. It quoted the confirmation email's subject line so the visitor could find it. That duplicated a string owned by apps/cms into apps/web, and it had already drifted: the page said 'We have received your message' where the email sends "We've received your message". One place to keep true is now zero, since the page just says to check the inbox. Deal registration claimed 'your prospect is not contacted until you say so'. Nothing in the deal-registration flow or its email says that. It is a commitment about how the partner process works, invented on a public page. The careers page sent applicants to the contact form when they could not reply to the unmonitored confirmation. Nothing routes candidate questions there, and that form goes to a sales inbox. Also trimmed the demo body to what its email actually says. Every remaining sentence now traces to a line in the email the same form sends.
Five tasks were added to payload.config.ts without a matching migration, so `enum_payload_jobs_task_slug` never learned them. Every attempt to queue one failed the INSERT into payload_jobs with invalid input value for enum enum_payload_jobs_task_slug: "refreshCrux" Payload's scheduleQueueable catches that and marks the task `errored`, while defaultAfterSchedule still advances lastScheduledRun in the job-stats global. So the scheduler reported healthy timestamps for tasks that had never run once, and analyticsCache simply stopped updating for those keys with nothing anywhere to explain it. Affected, none of which has ever executed in production: purgeConsentLog daily 04:00 GDPR consent-log 24-month retention purgeDealRegistrations daily 03:30 GDPR deal-registration PII 365-day purge retryDealSync every 10m deal-registration HubSpot sync retry refreshContentInsights daily 06:30 content-insights snapshot rebuild refreshCrux daily 06:45 Core Web Vitals origin cache Two are retention jobs, so this is a compliance gap rather than only a stale dashboard. The task handlers themselves were never broken: refreshCrux was verified end to end against production — credentials resolve, the CrUX API returns both form factors, and the analyticsCache write succeeds. ADD VALUE IF NOT EXISTS keeps the migration idempotent and lets it no-op on a database built from a later baseline. Postgres cannot drop an enum value, so `down` is deliberately a no-op.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five commits.
apps/web — thank-you pages (4 commits)
/clean-images(404, the route is/cleanstart-images), the secondary CTA was invisible (.cs-link-ctais white with a #33BAEC hover, built for dark bands, so on a white card it rendered white on white), and the copy promised a reply 'within one business day', reintroducing exactly what 9f0defc removed from every form and email the day before.eyebrowis a metadata convention consumed by og.ts, not a visual one.apps/cms — job task slugs (1 commit, from another session)
Adds five labels to
enum_payload_jobs_task_slugthat were registered in config without a migration, so queuing them failed and the scheduler still looked healthy. Two are GDPR retention jobs. Additive and idempotent (ADD VALUE IF NOT EXISTS), no data change.Verified: lint, typecheck and build all pass on apps/web; all four thank-you routes prerender.