Skip to content

feat(workflows): make the quick start follow the first run - #333

Closed
Silthus wants to merge 1 commit into
feat/workflows-first-run-make-it-yoursfrom
feat/workflows-first-run-quick-start
Closed

Silthus wants to merge 1 commit into
feat/workflows-first-run-make-it-yoursfrom
feat/workflows-first-run-quick-start

Conversation

@Silthus

@Silthus Silthus commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Problem

Feature flags. workflows-first-run gates the first-run experience. Shared template/schema fixes remain unconditional; sandbox and reach integrations are separate follow-ups.

Quick start tasks need to follow the first-run creation, test-send and own-domain journey.

Depends on #112053. GitHub shows the cumulative diff against master. Incremental range: de4145d200d7..ff09a4a43a54.

Warning

Merge risk: medium. The shared quick-start registry serves every product. Flag-off coverage preserves the existing Workflows task list.

Fork handoff for source #112068. Modernized head ff09a4a43a54d19779b5f2d35762bfdc1fd4b14e. This draft prepares review and recreation in the upstream repository.

Changes

Kind Files Lines
Production 9 +130 −21
Tests 4 +173 −5
Generated 2 +8 −0
Total 15 +311 −26
  • First-run quick start tracks workflow creation, delivered test email and own-domain setup.
  • Already verified senders complete the own-domain task.

Historical screenshot from the original head. It does not verify the modernized head.

|

|

How did you test this code?

Final freshness proof: the nine core layers descend from b75567aca6cce9f0499e882463fc7e71d65a064c. The template API suite passed 31 cases; frontend first-run, sender, welcome, setup-task and test-send suites passed 110 cases across 16 suites. Full frontend TypeScript and all nine strict increment gates passed with no new Semgrep findings. API types were regenerated from the current backend source in the owning layers; the final full OpenAPI run produced zero drift. The default-off workflows-first-run gate remains, and sandbox/reach follow-ups are excluded. Historical screenshots and reviews retain their recorded scope. Fresh upstream CI, a new browser render and a fresh Claude review remain unchecked.

The independent cumulative frontend run passed 106 tests across 15 existing suites. Backend metadata/API suites passed 31 tests. OpenAPI regeneration completed successfully. Final frontend typecheck and strict cumulative preflight passed with zero failures. Storybook has not produced a usable rendered screenshot on the new head. Historical images and proof remain preserved below.

Test rationale: Existing quick-start, sender and verification tests cover task lists and completion. The flag-off verification case catches an unintended onboarding-task write.

Historical proof on 0bf72df, before modernization on 2026-10-07

Test seams: productSetupLogic (the task list), firstRunMakeItYoursLogic (test send and create), emailSetupModalLogic (verification), ownSenderQuickStartLogic (an already verified sender). The API is mocked at the HTTP layer, and completion is asserted on the onboarding_tasks PATCH the frontend sends.

Test rationale:

  • productSetupLogic.test.ts: one it.each with the flag on and off. It catches the quick start showing the old DNS-first list under the flag, or a locked "Turn on your first workflow".
  • firstRunMakeItYoursLogic.test.ts: extends the existing send, skip and create cases. It catches a test send or an enabled create that leaves its task open, and a skipped send or a draft that completes one.
  • emailSetupModalLogic.test.ts: one it.each over success and pending. It catches a verified own sender that leaves "Send from your own domain" open.
  • ownSenderQuickStartLogic.test.ts: one it.each over a verified, an unverified and a sandbox sender, and the flag off. It catches a pre-verified own sender that never completes the task, or a sandbox sender that does.
Red on the tree before the change, green after

Red (new tests, ids generated, behavior not yet built):

● emailSetupModalLogic › completes the own domain quick start task only when verification returns success
● productSetupLogic › lists the Workflows quick start tasks with the first run flag on: true
● firstRunMakeItYoursLogic › creates a active workflow with every edited email, the sender and the matched event
● firstRunMakeItYoursLogic › sends the open email as edited to the signed-in user from the first-run sender
Tests:       4 failed, 22 passed, 26 total

The review fix went red first too: all four ownSenderQuickStartLogic rows failed, because the stub logic loaded no senders.

Green on the final tree: the four suites above plus WorkflowsFirstRunTab.test.tsx and firstRunSenderLogic.test.ts, 38 passed, none skipped.

Local gate on the final tree: hogli test on the touched suites, pnpm --filter=@posthog/frontend typescript:check, pnpm --filter=@posthog/frontend lint, oxfmt --check on the touched files, ruff check and ruff format --check on setup_tasks.py, hogli build:openapi, and the pre-push hogli ci:preflight --strict.

Not checked: the running app. The screenshots come from a scratch Storybook story of ProductSetupPopover, kept out of the commit. Fork CI runs need approval.

Historical references: link 1, link 2, link 3, link 4, link 5.

Release status

Fork handoff only. This task does not activate rollout flags. Upstream CI and the unavailable Opus review remain handoff gaps.

  • This change is behind a feature flag and is not available to users

The first-run journey uses the existing default-off workflows-first-run flag. Core uses verified own-domain senders and the baseline single-step test-send endpoint. Core has no sandbox, testing-v2 or email-reach dependency. No flag rollout is part of this modernization.

Docs update

None.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Agent: Claude Code, Claude Opus 5.5 (claude-opus-5-5); Codex, GPT-6.1 Sol for the 2026-10-07 modernization.

Skills: modernize-pr, pr, writing-pr-descriptions, writing-voice, unslop, merge-risk, running-ci-preflight, and tdd for behavior adaptations.

This freshness replay preserves each published snapshot increment on pinned upstream b75567aca6cce9f0499e882463fc7e71d65a064c. Historical reviews remain scoped to their original heads. The parent-coordinated Claude Opus 5.5 review attempt hit an API rate limit; the modernization review remains incomplete. No real SES delivery, DNS changes or flag rollout occurred.

Final freshness replay: T3 Code, Codex, GPT-6.1 Sol (gpt-6.1-sol). Skills: pr, writing-pr-descriptions, writing-voice, unslop, stacking-prs, running-ci-preflight. Fork drafts remain unready; no preview label or rollout flag was activated.

@Silthus Silthus self-assigned this Oct 7, 2026
@Silthus
Silthus added this pull request to stack #340 October 7, 2026 10:38
@Silthus Silthus added the feature-flagged PR or stack includes flagged behavior; individual increments may be unconditional label Oct 7, 2026
@Silthus
Silthus force-pushed the feat/workflows-first-run-quick-start branch from fd500d9 to deff67c Compare October 7, 2026 11:59
@Silthus
Silthus force-pushed the feat/workflows-first-run-quick-start branch from deff67c to ff09a4a Compare October 7, 2026 12:07
@Silthus Silthus closed this Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature-flagged PR or stack includes flagged behavior; individual increments may be unconditional

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant