Repository navigation
Conversation
The template test send lists the sandbox sender last, with a Sandbox tag and the members-only note, and preselects it when the project has no verified own sender. With the workflows-sandbox-sender flag on, the recipient field suggests verified teammates, signed-in user first, and warns about addresses outside them. A sandbox test drops the template's custom From and Reply-To, which the sandbox sender ignores. Refs Silthus/personal#202 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Members load when the modal opens with the sandbox sender flag on, or when the flag turns on while the modal is open. Other feature flag updates no longer reload the member list. Refs Silthus/personal#202 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… domain The test send modal is now the first place that shows the note, so it defines it. The unverified member fixture uses example.com. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 28, 2026
Silthus
added a commit
that referenced
this pull request
Oct 28, 2026
Silthus
added a commit
that referenced
this pull request
Oct 28, 2026
Silthus
added a commit
that referenced
this pull request
Oct 28, 2026
This branch has not been 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.
Problem
Stack
workflows-sandbox-product/channels-row(feat(workflows): show the managed sandbox sender in channels #602). Lands after feat(workflows): show the managed sandbox sender in channels #602 and every PR below it.SANDBOX_EMAIL_SENDER_NOTE, which used to come from the email step picker, now above it. The unverified-member test fixture usesexample.com.1c08de0b9b4: frontend typecheck has no errors in the stack's files (the remaining errors also occur on master), oxlint and oxfmt clean, touched Jest suites 21 passed. Review: GPT-6.1 Sol through a delegated review of the restack (each PR's diff, its conflict resolutions, the slice seams and the save gate), no findings.1c08de0b9b4, 2026-10-28: live run and UI walk below. Proof gate: fails only on the fork-onlycigap (exit 3); every other check passes.Impact
Pays into Workflows activation through the sandbox funnel step: a team without a verified domain can send itself a template test before it sets up its own sender.
Merge Danger
Note
🔵 Merge risk: low · two-way door (merge-risk rubric)
workflows-sandbox-sender; with the flag off the modal lists the same senders and prefills the recipient as on master.Changes
workflows-sandbox-senderon, "From" lists the sandbox sender after the verified own senders, with a "Sandbox" tag and the note "Delivers only to verified members of your organization." when it is selected.Production lines (tests, stories and inline kea typegen excluded): 263, from
git diff --numstatagainst #602.How did you test this code?
Live run on the slice tip
1c08de0b9b4on a PostHog preview. Stubs: a local SES endpoint that records each call, andexample.comseeded as a valid MX domain.Lane gate on the head:
pnpm --filter=@posthog/frontend typescript:check, on a Fleet box): no errors.TemplateLibrarysuites, 71 passed.hogli ci:preflight --strict: 0 failures.Test seams:
messageTemplateTestSendLogic(kea logic with mocked integrations, members and invocation APIs): which senders the modal lists and preselects, flag on and off, the recipient suggestions and warnings, and the request a sandbox test sends.SendTestEmailModal(rendered with the real logic): the unverified-self prompt, the member loading state, and picking or typing a recipient through the field, which only the DOM shows.Test rationale:
messageTemplateTestSendLogic.test.ts, newsandbox senderblock: preselection, ordering, flag-off drop of a stale selection, member suggestions when the flag lands on an open modal, the stripped From and Reply-To, the outside-address warning (case-insensitive, unverified and unknown members excluded), and the hold while members load. Plus one case for the empty recipient with the flag on. Each failed before the change. The nearest existing test, "defaults the sender to the first verified email integration", still guards the flag-off list.SendTestEmailModal.test.tsx: the unverified-self prompt beats the outside-address warning; the field shows a skeleton while members load and the empty hint after; a picked suggestion and a typed address (Enter) both reach the send request. The last case fails when the field'sonChangeis disconnected from the logic. No rendered test covered this modal before.Proof (recorded with
fleet proofon the head):UI walk on a seeded local preview, flag on, one verified own sender, the sandbox sender, two verified members:
Live run on the same preview: a test from the sandbox sender to a suggested member sent
from: {"integrationId": <sandbox>}andreplyTo: "", without the template's custom From. The worker skipped the send (no delivery route yet), and the API still answeredsuccess; reporting that skip is TS1.The head adds only a rendered test, so both reuse the evidence from
a0bef769cf4.Prod shape: gap, accepted until read-only production access arrives. The change is frontend-only behind the flag.
CI: gap, fork CI cannot run (see above).
Reviews (GPT-6.1 Sol, high):
a0bef769cf4, two findings:docs/internal/workflows-email-sending-tiers.md, and the workflow email step already offers the same sender under the same flag.b37800cb0c6.b37800cb0c6: no findings.a0bef769cf4.Release status
Docs update
None.
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Claude Opus 5.5 (porting); review by GPT-6.1 Sol
f1e44aa7116), keeping only the sandbox sender and suggestion parts. Left out: skip reporting (TS1), sandbox provisioning from the modal and its retry banner (Channels owns provisioning), and the worker changes (nodejs/, its own lane).tdd,writing-tests,pr-description.Decisions
example.cominstead of a real domain🤖 Generated with Claude Code