Skip to content

feat(workflows): make the first-run template yours before enabling it - #332

Closed
Silthus wants to merge 1 commit into
feat/workflows-first-run-quiet-welcome-modalfrom
feat/workflows-first-run-make-it-yours
Closed

Silthus wants to merge 1 commit into
feat/workflows-first-run-quiet-welcome-modalfrom
feat/workflows-first-run-make-it-yours

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.

First-run users need to customize and test their email before enabling its workflow.

Depends on #111923. GitHub shows the cumulative diff against master. Incremental range: 1d678a8a1352..de4145d200d7.

Warning

Merge risk: medium. The default-off first-run flag gates creation and test sends. Core uses verified own-domain senders and the existing single-step invocation endpoint.

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

Changes

Kind Files Lines
Production 18 +1254 −113
Tests 5 +580 −3
Generated 1 +3 −0
Total 24 +1837 −116
  • Verified own-domain senders resolve from the existing integrations list without sandbox dependencies.
  • First-run creation opens a customization step before enabling the workflow.
  • Authors can edit and test the email before continuing to the canvas.

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 existing four test-send decline cases remain in the shared helper suite; the duplicate old suite importing the removed export was deleted. Full TypeScript caught the stale import before correction and passed afterward. The generated invocation client returns void because its response uses a fallback schema; the one typed test-send call uses the rule documented exception to keep HogflowTestResult behavior.

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: The existing sender logic test catches sandbox-only action connections on pinned master. Existing customization tests cover sender assignment, baseline test sends, creation and flag-off edits.

Historical proof on a8c22c7, before modernization on 2026-10-07

Test rationale: firstRunMakeItYoursLogic.test.ts drives the logic with the API mocked at the HTTP layer. Each case names a regression no existing test catches: emails out of flow order or with wrong timing; an edit lost when switching emails; a create payload missing an edited email, the sender on a step, the matched trigger event, or the status per switch; a test invocation that sends the wrong email or recipient; a hidden skip reason; a sender-less state that lets a create go active; a rejected create that still navigates; a viewer who can create; a switch, test send or create that runs while the templater still holds an unexported canvas edit. firstRunGalleryLogic.test.ts now asserts a pick routes to ?template= instead of the blank editor. findTestSendSkipReason.test.ts moved with its helper, unchanged.

  • Red before green for each case, then the local gate on the final tree: typecheck, fix, the first-run, Broadcasts and hogflows Jest suites, and the pre-push preflight.
  • Stories: WorkflowsFirstRunMakeItYours.stories.tsx, one per state above plus a narrow one, with play functions for the skipped send and the rejected create. The screenshots above come from them, rendered headless with the Unlayer editor loaded from its CDN.
  • A scripted browser check typed into email 1's subject, switched to email 2, and back: the edit stayed, the "Edited" tag showed, and the canvas showed each email's own body.
  • Not run: a local stack, so the real test send and an active create against the backend are unverified in this PR.

Historical references: link 1, link 2, link 3, link 4, link 5, link 6, link 7, link 8, link 9, link 10, link 11, link 12, link 13, link 14, link 15.

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. The first run is behind a flag.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Agent: Original authorship is recorded in the PR history; 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-make-it-yours branch from 6be2622 to 8533102 Compare October 7, 2026 11:58
@Silthus
Silthus force-pushed the feat/workflows-first-run-make-it-yours branch from 8533102 to de4145d 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