0f4cb2c2c2
### 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. <img width="3024" height="1718" alt="image" src="https://github.com/user-attachments/assets/a2200677-58af-4740-9257-77f6385ade28" /> <img width="3024" height="1224" alt="image" src="https://github.com/user-attachments/assets/73aa6745-b766-405e-b736-8c0c7591232e" /> ### 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`. <p> <img width="1509" height="323" alt="image" src="https://github.com/user-attachments/assets/d5702761-31f5-4b4d-9fcc-c33d5c7ae6ab" /> </p> ### 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.
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import { defineCloudflareConfig } from '@opennextjs/cloudflare';
|
|
import r2IncrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/r2-incremental-cache';
|
|
import { withRegionalCache } from '@opennextjs/cloudflare/overrides/incremental-cache/regional-cache';
|
|
|
|
// Worker custom-domain hostnames bypass the zone-level Cache Rule for
|
|
// synthetic responses (OpenNext builds responses from R2 reads rather than
|
|
// `fetch()`-ing an origin). Wrapping the R2 incremental cache with the
|
|
// regional cache means cache-hit reads come from CF's per-region Cache API
|
|
// (~10ms) instead of R2 (~100ms), recovering most of the TTFB the migration
|
|
// lost.
|
|
const incrementalCache = withRegionalCache(r2IncrementalCache, {
|
|
mode: 'long-lived',
|
|
});
|
|
|
|
const baseConfig = defineCloudflareConfig({
|
|
incrementalCache,
|
|
});
|
|
|
|
// `defineCloudflareConfig` only takes the `CloudflareOverrides` subset of the
|
|
// config today; `skewProtection` lives directly under `cloudflare.*` and has to
|
|
// be merged in. See packages/cloudflare/src/api/config.ts in opennextjs-cloudflare.
|
|
export default {
|
|
...baseConfig,
|
|
cloudflare: {
|
|
...baseConfig.cloudflare,
|
|
skewProtection: {
|
|
enabled: true,
|
|
// Window large enough to keep prod-version history for skew routing AND
|
|
// hold one slot per open PR preview. `maxVersionAgeDays` prunes the rest.
|
|
maxNumberOfVersions: 50,
|
|
maxVersionAgeDays: 14,
|
|
},
|
|
},
|
|
};
|