Skip to content

[Website] Full-bleed hero/testimonials, nav restructure, OpenNext deploy config#21794

Merged
mabdullahabaid merged 6 commits into
mainfrom
website-fixes
Jun 18, 2026
Merged

[Website] Full-bleed hero/testimonials, nav restructure, OpenNext deploy config#21794
mabdullahabaid merged 6 commits into
mainfrom
website-fixes

Conversation

@mabdullahabaid

@mabdullahabaid mabdullahabaid commented Jun 18, 2026

Copy link
Copy Markdown
Member

Full-bleed backgrounds on wide screens

Decorative section backgrounds were capped at the 1512px content width, leaving large empty gutters on ultra-wide viewports.

  • Added an opt-in fullBleedBackground prop to SectionShell that lifts the background layer off the content-width cap (default unchanged, so every other section is untouched).
  • Applied it to HomeHero (bridge halftone field) and both testimonials sections.
  • Capped the NotchedCardShape notch at its width at the content cap, so the white/dark card can span the full viewport while the notch stays fixed and centered. The footer and any other capped card are unaffected.
image image

Navigation restructure

  • Removed Product from the menu and footer nav, and promoted Why out of the Resources dropdown to a top-level item in Product's place. (The Product page itself is unchanged).
  • Resources dropdown polish: tightened the preview frame height now that the list is shorter; restored the cleaner/brighter User Guide and Developers preview assets from twenty-website; gave User Guide a center + 2× image scale so its halftone fills the frame like Developers, and raised NextImage sizes to keep the fine halftone crisp through that magnification.
  • Restored the current-page highlight in the Resources dropdown (active icon/label in highlight blue + marker bar), matching the old NavDropdown.

image

OpenNext / Cloudflare deployment config

Ported the Cloudflare Workers deployment setup from twenty-website so the same CI/deploy pipeline works against the redone package:

  • open-next.config.ts (R2 incremental cache + regional cache + skew protection), wrangler.jsonc (dev/prod envs — worker names, routes, R2 buckets kept identical for a seamless cutover), initOpenNextCloudflareForDev() in next.config.ts, the preview/deploy:*/cf-typegen scripts, the @opennextjs/cloudflare + wrangler devDependencies, a .dev.vars.example template, and the relevant .gitignore entries.

…full-width

Add an opt-in `fullBleedBackground` prop to SectionShell that lifts the
decorative background layer off the content-width cap so it spans the full
section width. The solid section surface and all content stay capped as
before, and the default keeps every other section unchanged.

Apply it to HomeHero (the bridge halftone field) and both testimonials
sections. For the notched card, cap the notch (Plateau) at its width at the
content cap: past that — a full-bleed card — the white/dark flats absorb the
extra so the surface spans the viewport while the notch stays fixed and
centred. The footer and any capped card are unaffected, since their
proportional notch never reaches the cap.
…ct, refine Resources dropdown

Remove Product from the menu and footer navigation, and lift Why out of the
Resources dropdown to the top-level menu in Product's place. (The Product
page itself is unchanged and stays in the SEO sitemap.)

Polish the Resources dropdown:
- Drop the preview frame's min-height (220 -> 160) so the panel no longer
  overhangs the now-shorter four-item list.
- Restore the cleaner, brighter User Guide and Developers preview assets from
  twenty-website (the redone re-exports were dimmer and busier).
- Give User Guide a center + 2x image scale so its narrow halftone field
  fills the frame like Developers, and raise NextImage sizes to 720px so the
  fine halftone stays crisp through that magnification instead of dimming.

Translation catalogs are intentionally not regenerated here; CI owns that.
Bring the Cloudflare Workers / OpenNext setup over from twenty-website so the
same CI/deploy pipeline works against the redone package:

- open-next.config.ts: R2 incremental cache wrapped in the regional cache,
  plus skew protection.
- wrangler.jsonc: worker config with the dev/prod environments. Worker names,
  routes (twenty.com), R2 buckets, and self-reference services are kept
  identical to twenty-website so deploying the redone replaces the same worker
  for a seamless cutover.
- next.config.ts: initOpenNextCloudflareForDev() so `next dev` mirrors the
  deployed worker's bindings.
- package.json: preview / deploy:dev / deploy:prod / cf-typegen scripts and the
  @opennextjs/cloudflare + wrangler devDependencies.
- .dev.vars.example template; ignore .open-next/, .wrangler/, .dev.vars, and
  the generated cloudflare-env.d.ts.

The redone is Next 16 + Turbopack (the old site is Next 15); the OpenNext build
against Turbopack output should be validated with a preview deploy.
…u dropdown

The Resources dropdown lost the active-page treatment the old site had. Mark a
dropdown link active when the unlocalized pathname matches its href or a
sub-page of it (external docs links never qualify), and style the active icon
and label in the highlight blue with the small marker bar before the label —
the same forward-referenced `${DropdownLink}[data-active] &` pattern the old
NavDropdown used.
…hell

Remove the inline and CSS comments from MenuDropdown, NotchedCardShape, and
SectionShell, leaving the code and directives untouched.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 17 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/twenty-website-redone/next.config.ts">

<violation number="1" location="packages/twenty-website-redone/next.config.ts:55">
P2: `initOpenNextCloudflareForDev()` called unconditionally will hang `next typegen` and leave open handles in Jest tests. The Cloudflare dev context binds active Node process handles (R2 incremental cache, env wrangler context) that prevent clean process exit in non-dev commands.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic


// Binds the Cloudflare dev context (R2 incremental cache, env vars) into
// `next dev` so local runs mirror the deployed OpenNext worker.
initOpenNextCloudflareForDev();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: initOpenNextCloudflareForDev() called unconditionally will hang next typegen and leave open handles in Jest tests. The Cloudflare dev context binds active Node process handles (R2 incremental cache, env wrangler context) that prevent clean process exit in non-dev commands.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/twenty-website-redone/next.config.ts, line 55:

<comment>`initOpenNextCloudflareForDev()` called unconditionally will hang `next typegen` and leave open handles in Jest tests. The Cloudflare dev context binds active Node process handles (R2 incremental cache, env wrangler context) that prevent clean process exit in non-dev commands.</comment>

<file context>
@@ -48,3 +49,7 @@ const nextConfig: LinariaConfig = {
+
+// Binds the Cloudflare dev context (R2 incremental cache, env vars) into
+// `next dev` so local runs mirror the deployed OpenNext worker.
+initOpenNextCloudflareForDev();
</file context>
Suggested change
initOpenNextCloudflareForDev();
if (process.env.NODE_ENV === 'development') initOpenNextCloudflareForDev();

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The premise that the call is "unconditional" and therefore binds live handles in every command is incorrect. initOpenNextCloudflareForDev() is written to be called unconditionally (that's the official OpenNext pattern), but it self-guards before doing anything.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it — thanks for the correction.

The lint target chained check-translations.mjs, which fails whenever the
committed Lingui catalogs lag the source — but catalogs are intentionally not
regenerated in PRs (CI owns them), so this blocked every PR that touched a
msg/Trans string. Drop the step from the lint command and remove the now-dead
script (it had no other reference). Lint is now check-conventions, oxlint, and
oxfmt --check.
@twenty-ci-bot-public

twenty-ci-bot-public Bot commented Jun 18, 2026

Copy link
Copy Markdown

Visual Regression Report (twenty-front)

  • 8 changed
  • 661 unchanged
Changed stories
Story Diff %
modules-settings-accounts-blocklist-settingsaccountsblocklistinput--default 1%
modules-workflow-actions-form-workfloweditactionformfiller--default 1%
modules-commandmenu-commandmenu--no-results-search-fallback 1%
modules-commandmenu-commandmenu--limited-permissions 0%
modules-commandmenu-commandmenu--default-without-search 0%
modules-commandmenu-commandmenu--sub-page-navigation 0%
modules-commandmenu-commandmenu--matching-navigate-shortcuts 0%
modules-commandmenu-commandmenu--matching-navigate 0%

@twenty-ci-bot-public

Copy link
Copy Markdown

🔍 Automated Pre-Review

No issues detected - This PR is ready for human review.


View details

Automated pre-review — human approval still required.

@mabdullahabaid mabdullahabaid merged commit 0f4cb2c into main Jun 18, 2026
132 checks passed
@mabdullahabaid mabdullahabaid deleted the website-fixes branch June 18, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants