24 days ago
✨ Redesign transactional mail and cover every account event
All mail now shares one monochrome layout (gray ground, hairline card,
wordmark with the single emerald dot) built from inline-styled helpers in
MailerHelper: eyebrow, heading, black or hairline button, one gray panel,
mono block, status rows. Warnings are plain text with a bold lead-in, never
a coloured box. Subjects drop their emoji.
New mails, each hooked at the model or service so every entry point fires:
developer-mode extension install steps
directories, one row per directory with submit link and mode
activate_plan!, grant_plan!, cancel_plan! and the Stripe webhook
The unused batch_complete mail is removed. Previews for every variant live
under test/mailers/previews with in-memory sample records, so /rails/mailers
renders on an empty database. Adds mailer and hook tests, and a launch.json
attach config for the dev server on :3109.
💄 Share one page header across public pages, replacing breadcrumbswordmark with the single emerald dot) built from inline-styled helpers in
MailerHelper: eyebrow, heading, black or hairline button, one gray panel,
mono block, status rows. Warnings are plain text with a bold lead-in, never
a coloured box. Subjects drop their emoji.
New mails, each hooked at the model or service so every entry point fires:
- UserMailer#welcome on account creation, listing owned packages and the
developer-mode extension install steps
- ProjectMailer#created when an owned package is added (waitlist drafts skip)
- DirectorySubmissionMailer#submissions_created when a maker queues
directories, one row per directory with submit link and mode
- WaitlistMailer#confirmation on a new waitlist signup
- BillingMailer plan_activated / payment_failed / plan_cancelled from
activate_plan!, grant_plan!, cancel_plan! and the Stripe webhook
The unused batch_complete mail is removed. Previews for every variant live
under test/mailers/previews with in-memory sample records, so /rails/mailers
renders on an empty database. Adds mailer and hook tests, and a launch.json
attach config for the dev server on :3109.
Every public page (directories, guides, use cases, pricing, about, help,
legal, extension, WebMCP) now opens with the same `shared/page_header`
partial inside a `.page` frame, so the content edge and heading rhythm
stop jumping between sections. The eyebrow links back to the section
index with a dotted underline instead of a breadcrumb trail.
Also: hand-drawn plan avatars on the pricing tiers, a grayscale footer
logo that colours on hover, a base rule so every enabled button shows a
pointer cursor, and the seed admin address moved to support@launchto.win.
legal, extension, WebMCP) now opens with the same `shared/page_header`
partial inside a `.page` frame, so the content edge and heading rhythm
stop jumping between sections. The eyebrow links back to the section
index with a dotted underline instead of a breadcrumb trail.
Also: hand-drawn plan avatars on the pricing tiers, a grayscale footer
logo that colours on hover, a base rule so every enabled button shows a
pointer cursor, and the seed admin address moved to support@launchto.win.