Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
onequery-landing | 9100e1f | Commit Preview URL Branch Preview URL |
Jun 04 2026, 04:21 AM |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 02188e362c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Route the product updates form through an Astro Action while keeping the API endpoint fallback for the prerendered home page. Also includes the staged OpenClaw script typing tweaks and regenerated landing worker types.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9c91ff6bd4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9100e1fd72
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| }; | ||
| const EmailSchema = z.preprocess( | ||
| (value) => (typeof value === "string" ? value.trim() : value), | ||
| z.email({ pattern: z.regexes.html5Email }) |
There was a problem hiding this comment.
Restore the email length cap before sending Slack fields
When an action is called directly with an HTML5-regex-valid but very long email address, this schema now accepts it because the previous max(320) cap from server/schemas.ts was dropped. That value is then embedded in a Slack section.fields entry by createProductUpdatesNotification()/createContactNotification(), so addresses above roughly 3 KB can exceed Slack's field text limit and turn an otherwise handled submission into a webhook rejection; keep the prior 320-character cap on the action schema before building the Slack payload.
Useful? React with 👍 / 👎.
| class="marketing-updates-form" | ||
| method="POST" | ||
| action="/api/product-updates/" | ||
| action={actions.productUpdates} |
There was a problem hiding this comment.
Avoid action-form posts from prerendered pages
On the homepage this component is rendered by src/pages/index.astro, which still exports prerender = true; the previous /api/product-updates/ endpoint worked from a prerendered page, but action={actions.productUpdates} switches the no-JavaScript/browser fallback path to Astro's form-action API. Astro documents that pages must be on-demand rendered for form-action submissions (https://docs.astro.build/en/guides/actions/#call-actions-from-an-html-form-action), so if the client bundle fails to load or JavaScript is disabled the POST cannot be handled as intended; either keep an API endpoint/JS-only action URL or stop prerendering pages containing these forms.
Useful? React with 👍 / 👎.
One-Line Summary
Updates landing lead capture to use Astro actions with local Slack emulation, keeps footer contact native, and preserves crawler-facing sitemap and Markdown routing behavior.
User-Facing Changes
LANDING_SLACK_WEBHOOK_URLis not set; no separateLANDING_SLACK_EMULATORflag is required.We use this only to follow up on your request.before submit, then success or error feedback.Why This Changed
The previous landing lead flow mixed custom API routes, modal-specific browser code, and local-vs-production Slack branching. That made local Slack testing harder to understand and let the footer contact interaction drift from the product updates form. Astro actions give the forms a native HTML
actionfallback while still allowing progressive enhancement for no-reload submissions.How It Changed
src/actions/index.tsactions that accept form submissions.scripts/dev-with-slack.tssobun run devwiresLANDING_SLACK_WEBHOOK_URLto a local Slack emulator unless a real webhook URL is already configured.FooterContactSection.astro, a plain<form action={actions.contact} method="POST">plus a small submit handler for no-reload feedback.LANDING_SLACK_WEBHOOK_URL; local emulation is selected by absence of that webhook, not by another flag.origin/main, normalized threeResult.err(...)branches in data-source query code so type-aware lint passes on the merged branch.Bug Fixes
origin/main, returning narrowedErrobjects directly failed assignability checks; those error branches now rewrap the existing error with the target result type.Performance Notes (Optional)
Extra Context / Decisions (Optional)
worker-configuration.d.tsis generated by Wrangler and is included from the current Cloudflare config.Verification
rtk bun installrtk bun lint --format jsonrtk bun lint --type-aware --type-checkrtk bun formatrtk bun run typecheckfromapps/landingrtk bun run buildfromapps/landingrtk bunx turbo typecheck --jsonrtk bunx turbo test --filter=@onequery/server --jsonhttp://127.0.0.1:4546/#footer-contact:#footer-contact, form controls, submit button, and the follow-up copy each resolved once after restarting the Astro dev server.rtk git push origin fix-bingpassed pre-pushlint-fullwithoxlint . --type-aware --type-checkreporting 0 warnings and 0 errors.Video / Screenshot (Optional)