Skip to content

Offer $10 in signup credits for the Product Hunt launch - #220

Merged
devhims merged 8 commits into
mainfrom
feat/launch-signup-credits
Oct 21, 2026
Merged

devhims merged 8 commits into
mainfrom
feat/launch-signup-credits

Conversation

@devhims

@devhims devhims commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Problem / Motivation

New visitors cannot judge the value of 1,000 free credits. During launch week, new signups receive $10 worth of credits instead. The offer will be ended manually in a follow-up PR.

What changed

The signup trigger grants 5,000 credits once. The existing Starter configuration is also 5,000, so plan information and welcome emails describe the current offer. Existing balances are untouched. Returning accounts keep their saved balance without another grant. Refund resets remain 1,000.

flowchart LR
  Before["Before: new signup"] --> Standard["1,000 credits once"]
  After["After: new signup"] --> Launch["5,000 credits once"]
  Existing["Existing or returning account"] --> Retained["Keep current balance"]
Loading

Only the new-signup allowance changes; existing balances are retained.

The hero highlights the $10 offer beside a gently animated gift. The desktop navbar uses the official Product Hunt embed; mobile navigation has a launch link. The newly merged onboarding flow is preserved, with the launch message shown afterward. There are no account-specific grant lookups, date checks, or scheduled resets.

Tests

Platform and web builds, web unit tests, targeted platform unit tests, credit/payment/deletion integration tests, and onboarding browser tests pass. Agent metering checks cover the higher starting balance. Test fixture changes reflect the new signup grant.

Deployment notes

Apply migration 0028 before publishing the offer. End it with a new migration restoring 1,000, reset the Starter configuration, and restore the saved copy. No production deployment or migration was performed here.

@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
video2ctx-web Ready Ready Preview Oct 21, 2026 4:58am UTC

devhims commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

Review of 215d52e

Verdict: APPROVE. No material correctness or security findings in the reviewed signup grant, deleted-account carryover, recorded-allowance displays, welcome delivery, and launch-offer changes. All latest-head CI checks are green.

The migration retains the existing atomic carryover claim logic and changes only fresh-account grant/offer metadata. Existing balances/grants remain unchanged; returning accounts receive their retained balance without another welcome grant. Account display uses recorded allowance rather than current spendable balance. The latest CSS-only animation is gated on prefers-reduced-motion: no-preference; link behavior is unchanged.

Independent verification:

  • Platform suite at 056200d: 2,116 passed / 59 skipped, plus platform TypeScript passed. Later commits change only frontend offer styling/navigation and related documentation; platform code is identical.
  • Real Workers billing/credit integration: 61 passed on the identical backend at dfe35cf; deletion/account-removal integration: 72 passed at 056200d.
  • Independent SQLite migration checks passed for preserving old ledgers/balances, fresh 5,000 grant, normalized returning-email carryover, preventing a renamed-successor replay, repeated deletion/recreation, and FK integrity.
  • Web unit suite: 118 passed, most recently rerun at 66cfdfa. Latest 215d52e changes only CSS; not counted as another fresh test run.
  • Latest-head CI run is green, including platform integration, both dashboard E2E groups, auth E2E, Web, docs and skill checks.

Operational conditions: apply migration 0027 before publishing the web offer. The advertised October 21–28 offer has no automatic expiry; ending it requires the documented follow-up migration/copy change. Existing launch grants should remain intact. When integrating PR221, retain this PR's recorded-grant welcome messaging through the component rename.

Limits: rendered local responsive/animation checks were blocked because Chromium could not launch in the execution environment; CSS/markup were source-reviewed and browser CI evidence is separate. The external Product Hunt image's availability/product ID was not independently verified. No production signup, email, migration, deployment, code implementation or push was performed.

devhims commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

Re-review of 869c4ef

Verdict: APPROVE, with two nonblocking P3 observations. No material introduced credit-accounting or security defect found. This supersedes the earlier review against 215d52e: the current design intentionally uses the configured current offer rather than per-account grant lookups.

Verified: migration 0028 grants 5,000 only to fresh accounts, preserves existing balances and the atomic deleted-account carryover claim, and does not regrant to returning accounts. Both live-account and deleted-account refund paths explicitly retain the 1,000-credit reset. The merged onboarding flow and focus fix remain intact.

P3 — Returning-account welcome copy still overstates the gift

web/app/dashboard/Welcome.tsx:29 says “We've added 5,000 free credits”; the welcome email uses the same configured amount via notification-delivery.ts:61. A normal deleted-account re-signup creates a new user row and receives this welcome, while the trigger restores only its remaining balance (e.g. 96) without another grant. This can confuse returning users but does not duplicate or lose credits. Main already had the analogous unconditional 1,000-credit claim, so this is a pre-existing messaging limitation amplified by the launch wording, not a new accounting regression. A generic welcome could avoid the false transaction confirmation without changing the chosen current-offer display policy.

P3 — Correct the migration reference

reference/engineering/CREDIT_ACCOUNTING.md:189 still calls the launch migration 0027; it is now 0028. The main launch section correctly names 0028.

Independent checks at this head

  • Platform suite: 2,126 passed / 59 skipped.
  • Web unit suite: 120 passed.
  • Real Workers billing, credits and deletion integration: 133 passed.
  • Independent SQLite checks through all 28 migrations passed: legacy balance untouched; fresh 5,000; normalized returning email retains remaining balance as adjustment, not grant; renamed-successor duplicate transfer prevented; FK integrity.
  • Refund integration checks preserve the 1,000 reset despite 5,000 signup configuration, including replay after spending.
  • Platform TypeScript, generated docs and diff whitespace checks passed; tracked tree clean.
  • All applicable latest-head CI checks are green; Mintlify intentionally skipped.

Apply migration 0028 before publishing the offer. The offer still ends manually via a later migration, configuration and copy change. No production signup/deletion, email, refund, migration or deployment was performed for this review. Rendered styling remains source-reviewed rather than independently browser-verified; no implementation or push performed.

@devhims
devhims merged commit 2db4741 into main Oct 21, 2026
10 checks passed
@devhims
devhims deleted the feat/launch-signup-credits branch October 21, 2026 05:01

This branch was successfully deployed

1 active deployment
Preview — 0015daa0 Deployed Oct 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant