Repository navigation
Conversation
Why: the landing page described the product (82 text nodes, zero product imagery) instead of demonstrating it. The hero CTA 立即开始 led straight into the invite-code wall, open-source/self-host positioning was absent from the first screen, and the page presented config defaults (a 20/day send limit) as key metrics alongside fabricated testimonials — trust risks for an open-source project. Constraints / tradeoffs: - Hero becomes a two-column composition: copy (OSS pills 开源/自托管/ Cloudflare 边缘, serif headline with the rotating word now in brand orange, honest CTAs 申请邀请 + 自托管部署 → hosted docs) beside an auto-playing inbox demo card (mail arrives → code chip extracts → copy state), replacing the abstract 634px orb. - The stats marquee (config defaults) is replaced by an extraction playground: a textarea where pasted text is processed by the REAL buildMessageExtraction from @wemail/shared client-side — the same pure function the Worker runs. Verified live: re-extraction on input, Chinese codes, price/date rejection. - Demo steps are JS-timed with a reducedMotion prop that skips to the final frame; a blanket prefers-reduced-motion CSS guard now covers every landing animation (previously 1 guard in 2430 lines). - Metrics now show verifiable facts (500+ tests, 5-min self-host, 300+ edge locations, 100% open source); testimonials relabeled 场景示例 with workflow scenarios, no invented personas. - Hero headline scales from 10rem editorial display to a column-fitting clamp so copy + demo + playground land above the fold. Verification: - Full matrix: lint 0, typecheck 0, 532 tests (30+169+333), Playwright E2E at baseline parity (landing smoke green). - Runtime browser verification at 1440 and 390: two-column layout renders, playground live-extracts typed input (991177 extracted, 39.90 rejected), no horizontal overflow, demo steps advance, orb and marquee confirmed removed. - Landing test updated to the new CTA contract and extended with playground/demo-region assertions. Risks: hero visual identity shifts from centered editorial to split layout; the serif display type and grid identity are retained. Rejected alternatives: keeping the marquee with different numbers (config values read as limits, not achievements); linking the secondary CTA to the in-app /docs placeholder (it is a stub — hosted docs used instead).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
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.
Inbound mail could be stored before notification delivery finished, leaving notifications unrecoverable after a Worker interruption. Mail metadata and notification intents now commit together in D1; bounded leased tasks recover through minute-level scheduling, preserve stable event IDs, retry transient failures, and clean up retained payloads with their source mail.
Webhook and Telegram settings expose task status and replay, system settings show administrator aggregates, and notification rules support explicit timezones and explainable dry-runs. Legacy UTC rules and generic webhook replay remain compatible. Chat-platform acknowledgements, canonical replay payloads, modal cleanup, and clipboard feedback lifecycle are also corrected. The homepage demonstrates extraction and avoids unmeasured deployment-time claims.
An isolated business E2E runner connects production routes, inbound processing, local D1/R2, and the browser without API mocks. External providers use controlled adapters; real provider validation remains a staging release gate.
Validation:
Deployment: apply D1 migrations 0024–0026. Keep both the minute notification-recovery cron and the hourly mail-retention cron. The changes are additive; version remains 0.4.0 until a release is cut.