migrate-to-vinext

3周前发布 8 0 0 0

cloudflare/vinext#migrate-to-vinext

Skill 安装

多 Agent 安装
npx skills add https://github.com/cloudflare/vinext --skill migrate-to-vinext

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

cloudflare/vinext#migrate-to-vinext

Skill 更新日志

版本列表
vinext@1.0.0-beta.13 最新
### Features - support direct `vite dev` and `vite build` commands with vinext's development, prerendering, and Cloudflare deployment lifecycle (#3381) - **Cloudflare:** support cf Build Output deployments (#3230) ### Bug Fixes #### Cache - admit metadata routes to the CDN cache on their own Cache-Control (#3449) - replay "use cache" params under the original cache key (#3430) - keep "use cache" pages with props prerenderable (#3421) #### Misc - **OG:** support @vercel/og 1.0.3 on Node and Workers (#3409) - align Pages Router navigation with Next.js for URL objects, repeated slashes, dynamic routes, and browser history in development and production (#3354, #3367, #3368) - **Build:** keep browser client out of multi-stage server outputs (#3440) ### Performance - **Build:** look up action owner modules once per build pass (#3415) ### Contributors - @james-elicx - @mhsnook - @shortstuffsushi
create-vinext-app@1.0.0-beta.4
### Features - **Cloudflare:** support cf Build Output deployments (#3230) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.11
### Features - support direct `vite dev` and `vite build` commands with vinext's development, prerendering, and Cloudflare deployment lifecycle (#3381) - **Cloudflare:** support cf Build Output deployments (#3230) ### Bug Fixes - **Cloudflare:** accept response store account and observability options (#3499) - **Cache:** replay "use cache" params under the original cache key (#3430) ### Contributors - @james-elicx
vinext@1.0.0-beta.12
### Bug Fixes - **Constants:** guard Node feature detection in browser imports (#3394) - **Navigation:** clear pending links on server action redirects (#3393) - **Head:** serialize adjacent head tags without whitespace nodes (#3391) - **Cache:** protect cache function references (#3385) - detect Wrangler with Bun on Windows (#3364) - **Cache:** isolate divergent App Router route identities (#3357) - **Metadata:** enforce static params for image routes (#3358) - **Dev:** initialize App instrumentation in the RSC runner (#3363) - **Dev:** pre-optimize Pages hydration runtime (#3356) - **Pages:** preserve production CSS graph order (#3314) - **Pages:** include resolved CSS aliases in dev manifest (#3355) - **App Router:** send anonymous crossOrigin on dynamic preloads and bootstrap hints (#3327) ### Performance - **Render:** batch Flight chunks and optimize render hot paths (#3402) - **Render:** batch inline RSC chunks (#3397) ### Contributors - @camc314 - @james-elicx - @lyzno1 - @matthewp - @snhsish - @yaner-here
@vinext/cloudflare@1.0.0-beta.10
### Features - **Response Store:** expose metadata location hints (#3383) ### Bug Fixes - **Cache:** protect cache function references (#3385) ### Performance - **Cloudflare:** reuse response-stage invocations (#3388) - **Cache:** overlap Response Store soft-tag lookup (#3373) ### Contributors - @james-elicx
@cloudflare/workers-response-store@0.1.0-beta.2
### Features - **Response Store:** expose metadata location hints (#3383) ### Bug Fixes - **Response Store:** retain unaccepted edge purges (#3366) - **Response Store:** avoid redundant broad purge (#3360) ### Performance #### Response Store - project refresh candidates (#3389) - index tombstone sequences (#3387) - index path-prefix selection (#3386) - bound manual refresh concurrency (#3371) - scope purge work to snapshot (#3372) - skip first-write edge purges (#3374) - bound tombstone cleanup work (#3384) - index cache tag lookups (#3359) ### Contributors - @james-elicx
vinext@1.0.0-beta.11
### Features - **Tracing:** emit built-in request, rendering, fetch, metadata, and response spans across the App and Pages Routers (#3296) - **Tracing:** add Next.js-compatible OpenTelemetry instrumentation with Sentry and Cloudflare Workers tracing support (#3261) - **Response Store:** support for sharded durable objects (#3301) ### Bug Fixes - **Config:** prioritize explicit aliases over tsconfig paths (#3347) - **Cache:** bypass shared lookup for force-dynamic routes (#3346) - **Build:** defer user imports until request initialization (#3345) - **Cloudflare:** prewarm KV through deployed Workers (#3324) - **Dev:** optimize Chakra UI barrel imports (#3317) - **Check:** ignore build output from other toolchains (#3231) - **Build:** preserve bundled Nitro service exports (#3312) - **Server:** align user agent parsing with Next.js (#3202) - **Pages:** serve dynamic Pages Router routes under the Nitro preset (#3197) (#3204) - **Cache:** expose response store entrypoints in dev (#3306) ### Contributors - @AhmedElBanna80 - @hyoban - @james-elicx - @JamesbbBriz
@vinext/cloudflare@1.0.0-beta.9
### Features - **Response Store:** read response metadata from R2 (#3339) - **Tracing:** add Next.js-compatible OpenTelemetry instrumentation with Sentry and Cloudflare Workers tracing support (#3261) - **Cloudflare:** allow version uploads without promotion (#3337) - **Response Store:** support for sharded durable objects (#3301) ### Bug Fixes - **Cache:** bypass shared lookup for force-dynamic routes (#3346) - **Cloudflare:** prewarm KV through deployed Workers (#3324) - **Response Store:** stabilize cached variant selection (#3308) ### Contributors - @james-elicx
@cloudflare/workers-response-store@0.1.0-beta.1
### Features - **Response Store:** read response metadata from R2 (#3339) - **Response Store:** support for sharded durable objects (#3301) ### Bug Fixes - **Response Store:** index orphan cleanup lookups (#3303) ### Performance - **Response Store:** coalesce binding metadata misses (#3304) ### Contributors - @james-elicx
vinext@1.0.0-beta.10
This release includes a new caching library for apps targeting Cloudflare Workers, called Workers Response Store. It is designed to fill the gaps that our other Cloudflare cache adapters struggled with; efficient cache warming, durable backing stores, stable ISR and revalidation, and better internal control of the cache. To find out more, check out our [caching docs](https://github.com/cloudflare/vinext/blob/main/docs/caching.md). Going forward, the Workers Response Store will be our recommended choice for caching due to the flexibility it provides, and over the coming weeks it shall be stabilised following community feedback. ### Features #### Build - support independently deployed worker stages (#3155) - select adapter-owned worker stages (#3150) - define adapter-owned worker stages (#3142) #### Cache - stream response-store cache misses (#3200) - seed RSC during response-store warmup (#3196) - add Workers Response Store POC (#3192) #### Misc - **Cloudflare:** scaffold Response Store Wrangler config (#3249) ### Bug Fixes #### Cloudflare - declare response store durable object export (#3262) - restore bounded probe scheduling (#3171) - reduce staged CDN probe work (#3168) #### Misc - **CSS:** preserve url assets with deployment IDs (#3263) - **Init:** simplify dependent cache prompts (#3255) - **Isr:** ignore interception context on HTML renders (#2915) - **App Router:** dedupe next/dynamic module preloads (#3186) - **Cache:** preserve staged cache invalidation parity (#3158) - **Build:** preserve staged prerender routing (#3151) - **Cache:** resolve CDN admission from matched route kind (#3160) ### Contributors - @james-elicx - @JamesbbBriz - @keeltrace
create-vinext-app@1.0.0-beta.3
### Features - **Cloudflare:** scaffold Response Store Wrangler config (#3249) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.8
### Features #### Cache - support self-contained response store (#3246) - lazily resolve response store tag expirations (#3203) - stream response-store cache misses (#3200) - seed RSC during response-store warmup (#3196) - add Workers Response Store POC (#3192) #### Cloudflare - scaffold Response Store Wrangler config (#3249) - isolate cached response entrypoint (#3152) - summarize CDN warmup by route (#3163) ### Bug Fixes #### Cloudflare - declare response store durable object export (#3262) - restore bounded probe scheduling (#3171) - reduce staged CDN probe work (#3168) - prewarm routed response stages (#3153) - wait for per-route version propagation (#3164) #### Misc - **Cache:** align response store HTML identity (#3209) - **Cache:** preserve staged cache invalidation parity (#3158) - **Build:** preserve staged prerender routing (#3151) ### Performance - **Cache:** reduce response store Durable Object load (#3213) - **Cloudflare:** cut KV data cache round trips from 3 to 2 per tagged hit (#3187) ### Contributors - @james-elicx - @LubomirGeorgiev
@cloudflare/workers-response-store@0.1.0-beta.0
### Features #### Cache - support self-contained response store (#3246) - lazily resolve response store tag expirations (#3203) - add Workers Response Store POC (#3192) #### Misc - **Cloudflare:** scaffold Response Store Wrangler config (#3249) ### Bug Fixes - **Cloudflare:** declare response store durable object export (#3262) ### Performance - **Cache:** reduce response store Durable Object load (#3213) ### Contributors - @james-elicx
vinext@1.0.0-beta.9
### Features #### Cache - classify and warm static Route Handlers (#3113) - probe Pages Router cacheability (#3098) - deploy probed manifests in two stages (#3093) - probe App Page cacheability on staged Workers (#3091) #### Misc - **Cloudflare:** prewarm canonical ISR RSC requests (#3002) ### Bug Fixes #### Cloudflare - finalize CDN version metadata output (#3137) - harden post-deploy readiness checks (#3136) - classify CDN cacheability per concrete route (#3115) - discover prewarm paths from staged worker (#3090) - verify Worker version IDs during CDN warmup (#3072) - complete warmup response and promotion contracts (#3046) - harden canonical RSC warmup end to end (#3040) #### Misc - **Cache:** preserve Cache Components ownership during probing (#3103) - **Cache:** gate CDN admission on probed routes (#3092) - **App Router:** support soft navigation in static exports (#3112) - **Build:** support trailing-slash static exports (#3081) - **App Router:** validate interception context identity (#3078) - **App:** authenticate static file signals (#3077) - **Build:** validate CDN warm discovery and deploy inputs (#3057) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.7
### Features #### Cache - classify and warm static Route Handlers (#3113) - probe Pages Router cacheability (#3098) - deploy probed manifests in two stages (#3093) #### Cloudflare - configure warmup promotion delay (#3017) - allow warmup without promotion (#3016) - prewarm canonical ISR RSC requests (#3002) ### Bug Fixes #### Cloudflare - finalize CDN version metadata output (#3137) - support explicit CDN warm targets (#3138) - harden post-deploy readiness checks (#3136) - restore web CDN warmup deploy (#3135) - classify CDN cacheability per concrete route (#3115) - discover prewarm paths from staged worker (#3090) - verify Worker version IDs during CDN warmup (#3072) - complete warmup response and promotion contracts (#3046) - harden canonical RSC warmup end to end (#3040) - default CDN warmup concurrency to 25 (#3015) #### Misc - **Cache:** certify staged cache fills before promotion (#3094) - **Cache:** gate CDN admission on probed routes (#3092) - **Build:** validate CDN warm discovery and deploy inputs (#3057) ### Contributors - @james-elicx
vinext@1.0.0-beta.8
### Features - experimental support for React Compiler via react: { compiler: true } (#3005) ### Bug Fixes - **Build:** avoid workerd cwd in module identity (#3007) ### Contributors - @james-elicx - @jlucaso1
vinext@1.0.0-beta.7
### Bug Fixes #### App Router - route server actions through their owning pages (#2520) - restore shallow history tree snapshots (#2885) - preserve static hydration search params (#2944) - settle optimistic search navigations (#2952) - retain shared layouts across loading shells (#2940) - match current navigation identity (#2876) - retain loading shell prefetches (#2938) #### Build - preserve bundled ESM module identity (#2942) - preserve portable CommonJS module identity (#2826) - preserve require export conditions (#2881) - support deployed web worker graphs (#2314) - make vinext shim chunk rule reachable for installed copies (#2795) #### Misc - **Cache:** inherit route revalidate for tagged fetches (#2985) - **Security:** validate supplemental interception selectors (#2976) - **Router:** refresh retained parallel routes (#2880) - **Pages Router:** emit dev build ID in next data (#2962) - **Cache:** reject unserializable use cache results (#2954) - **Pages:** align GSSP client transitions (#2240) - **Fonts:** normalize self-hosted URLs on Windows (#2934) - **RSC:** web crypto subtle api is unavailable in non-secure contexts (#2929) ### Contributors - @james-elicx - @Jbithell - @NriotHrreion
vinext@1.0.0-beta.6
### Features - **Use Cache:** support callable cached functions with rsc plugin api (#2156) ### Bug Fixes #### App Router - reject unverified Worker prerender params (#2901) - preserve request.cf in route handlers (#2886) - preserve valued RSC queries through routing (#2883) - bail out static search params rendering (#2882) - expose not-found fallback flight payload (#2349) - prefetch root-param segment trees (#2856) - preserve full prefetch stale windows (#2851) #### Build - support Pages Router ESM externals (#2877) - preserve server export conditions (#2918) - bundle image-size in vinext (#2913) - define process.browser per environment (#2899) - preserve transitive external versions (#2887) #### Cache - preserve binary fetch response bodies (#2907) - ISR cache should store the framework preload header (#2900) - vary use cache entries by root params (#2847) - keep encoded dynamic prefetches learning-only (#2866) - delegate CDN header cleanup to adapters (#2797) #### Misc - **Headers:** preserve config Link headers alongside React preload links (#2791) - **Pages:** keep charset first in custom document heads (#2909) - **Font:** not emitting 400 as default value when font weight is omitted (#2796) - **Use Cache:** allow literal exports from use-cache files (#2906) - **Router:** preserve basePath in Pages Router events (#2888) - **RSC:** preserve BOM bytes in embedded Flight chunks (#2905) - **Pages:** align middleware rewrite navigation (#2891) - **Config:** preserve native TypeScript dynamic imports (#2353) - **Prerender:** cache use-cache metadata routes (#2848) - **Prerender:** expose the production build phase (#2846) ### Contributors - @james-elicx - @lyzno1 - @MaxtuneLee - @NathanDrake2406 - @NriotHrreion - @ting-hong-shieh
@vinext/cloudflare@1.0.0-beta.6
### Bug Fixes - **Prerender:** cache use-cache metadata routes (#2848) - **Cache:** delegate CDN header cleanup to adapters (#2797) ### Contributors - @james-elicx
vinext@1.0.0-beta.5
### Features - **Client:** expose host React to Module Federation remotes (#2828) ### Bug Fixes #### App Router - hand off zero-stale prefetches (#2801) - pass rewrite validation to source middleware (#2798) - keep server metadata out of RSC payloads (#2769) - stop flooring dynamic prefetch stale times (#2757) - validate external RSC rewrites before proxying (#2754) - let concrete Pages routes win middleware rewrites (#2730) - keep mounted-slot RSC responses no-store (#2728) - authorize the interception source route before rendering it (#2733) - reject Route Handlers as interception source routes (#2732) - preserve page result render ordering (#2760) - render pages before consuming layouts (#2751) - honor cacheLife stale on the client router (#2708) #### Build - throw error if there is `_next` folder inside the public folder (#2814) - exclude filtered require.context modules (#2736) - recognize Vite dist client aliases (#2750) - support dynamic package subpath imports (#2746) - skip unhelpful precompressed variants (#2712) #### Middleware - align encoded path matching (#2802) - preserve safe origins for double-slash redirects (#2766) - preserve headers for empty override value (#2767) - stop restoring credentials middleware deleted before external rewrites (#2739) #### Pages - apply fallback rewrites after API misses (#2827) - run middleware before image endpoint (#2776) - preserve raw data URLs for middleware (#2775) - preserve gSSP headers on redirects (#2771) - preserve not-found response headers (#2773) - support bodyless API responses (#2772) - refresh next/head tags when regenerating ISR HTML (#2729) #### Server - prevent bot user-agent regex backtracking (#2765) - evaluate lazy route modules outside the request context (#2740) - transfer request bodies into NextRequest instead of teeing (#2741) - support Node production entry contracts (#2749) - reject unsupported static asset methods (#2714) - honor static freshness validators (#2715) - use weak comparison for If-None-Match (#2710) - serve static assets with standard MIME types (#2713) #### Misc - **Dev:** adopt initial Pages stylesheets in Vite (#2825) - **CSS:** resolve Sass tsconfig path aliases (#2824) - **Fetch Cache:** honor RequestInit in request dedupe (#2762) - **Script:** reject event attributes in hoisted HTML (#2763) - **Actions:** run redirect targets through full request pipeline (#2785) - **Pages Router:** stream piped API responses with backpressure (#2735) - **Router:** minimize client rewrite manifests (#2734) - **Create Vinext App:** generate next env on first run (#2768) - **Cache:** bypass shared "use cache" entries in draft mode (#2744) - **Document:** HTML-escape NextScript.getInlineScriptSource output (#2727) - **Navigation:** reuse router.prefetch payloads during navigation (#2709) - **Metadata:** preserve Content-Length for fully buffered responses (#2703) - **Image:** match Next.js 16 default image sizes (#2704) ### Contributors - @Boyeep - @james-elicx - @kdy1 - @NathanDrake2406 - @NriotHrreion - @tomvoss
create-vinext-app@1.0.0-beta.2
### Bug Fixes - **Create Vinext App:** generate next env on first run (#2768) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.5
### Bug Fixes - **App Router:** honor cacheLife stale on the client router (#2708) ### Contributors - @NathanDrake2406
vinext@1.0.0-beta.4
### Bug Fixes #### App Router - install default not-found boundary (#2670) - scope dynamic params by segment (#2228) - honor client cache stale times (#2449) - resolve interception-only RSC targets (#2256) - preserve hash query navigation semantics (#2669) - reconcile streamed metadata icons (#2320) - align prefetch server protocol (#2318) #### Pages - preserve live Set-Cookie header arrays (#2689) - normalize decoded edge responses (#2668) - propagate Document script security props (#2044) #### Misc - **Pages Router:** load custom \_app/\_document via resolved file paths in dev (#2692) - **CSS:** load Sass partials from paths containing tildes (#2691) - honor build --mode dotenv files (#2523) - **Build:** normalize jsx-in-js module ids on Windows (#2687) - **RSC:** handle Windows paths in client reference dedup (#2686) - **Cache:** preserve prerendered page cache tags (#709) ### Performance - **App Router:** serialize streamed metadata once (#2675) ### Contributors - @james-elicx - @MaxtuneLee - @WilliamK112
@vinext/cloudflare@1.0.0-beta.4
### Bug Fixes - **Cache:** preserve prerendered page cache tags (#709) ### Contributors - @james-elicx
vinext@1.0.0-beta.3
### Features - **Metadata:** support viewport fields and parent resolution (#2644) ### Bug Fixes #### Metadata - add meta's 2024 crawler UAs to the html-limited bot list (#2666) - pass parent to cached resolvers with default or rest p… (#2660) - pass parent to regular metadata resolvers (#2646) #### Shims - preserve basePath config in NextURL clones (#2647) - preserve response cookie metadata (#2635) - reject invalid NextResponse JSON bodies (#2634) #### Misc - **App:** log RSC render errors on the dev-server terminal (#2667) - **Router:** replace stale optimistic layouts across dynamic params (#2609) - **Link:** interpolate Pages Router dynamic hrefs (#2657) - **Init:** complete an existing Cloudflare config instead of only adding to it (#2653) - **i18n:** align Accept-Language locale selection (#2648) - **Fonts:** keep immutable font assets query-free (#2605) - **Font Google:** share SSR collection state via globalThis (#2607) - **Pages:** isolate on-demand revalidation requests (#2495) - **Server:** defer after callbacks until response close (#2649) - **App Router:** stream nested loading boundaries (#2641) - honor custom TypeScript config path (#2633) - **Headers:** retain mutable cookie metadata (#2636) - **Build:** support package validation on Windows (#2638) ### Performance - **Build:** cache repeated compatibility transforms (#2578) - **Build:** split react-dom/server into its own client chunk (#2604) ### Contributors - @akim136 - @blitss - @Boyeep - @james-elicx - @MrIago - @NathanDrake2406 - @piffie - @ponharu
@vinext/cloudflare@1.0.0-beta.3
### Bug Fixes - **Cloudflare:** report custom-domain deploy URLs (#2630) ### Contributors - @NathanDrake2406
vinext@1.0.0-beta.2
### Features - **Types:** ship Next-compatible types without Next.js (#2612) ### Bug Fixes #### Pages - match encoded string static paths (#2629) - isolate static render router state (#2583) - validate redirect destinations consistently (#2586) - preserve data route path identity (#2580) - populate route in app initial props router (#2623) #### Misc - **Check:** exclude test-runner files from app compatibility scans (#2596) - **App Router:** stream generated metadata after the document shell (#2619) - **Cache:** isolate draft route responses (#2591) - **Middleware:** align unsafe matcher validation (#2599) - **Dev:** refresh routes after server restarts (#2588) - **Cache:** guard 'use cache' key against Cloudflare KV's 512-byte limit (#2606) - **Config:** keep page extensions out of module resolution (#2594) - **Navigation:** avoid rewriting URL for history metadata (#2615) - **OG:** resolve dot-hash wasm fallbacks (#2608) - **Router:** avoid repeated App path decoding (#2556) - **App Router:** preserve Flight stream framing (#2579) - **Shims:** align public API with vendored Next types (#2617) ### Contributors - @blitss - @exKAZUu - @james-elicx - @lyzno1 - @NathanDrake2406
create-vinext-app@1.0.0-beta.1
### Features - **Types:** ship Next-compatible types without Next.js (#2612) ### Bug Fixes - **Create:** make create-vinext-app work with npm and npx (#2618) ### Contributors - @james-elicx
@vinext/types@1.0.0-beta.2
### Features - **Types:** ship Next-compatible types without Next.js (#2612) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.2
### Bug Fixes - **Cache:** guard 'use cache' key against Cloudflare KV's 512-byte limit (#2606) - **Create:** make create-vinext-app work with npm and npx (#2618) ### Contributors - @blitss - @james-elicx
vinext@1.0.0-beta.1
### Bug Fixes #### App Router - preserve streamed metadata placement parity (#2572) - delay dynamic SSR stream pulls (#2575) - handle redirects in route-miss fallbacks (#2553) - preserve semicolons in redirect digests (#2487) #### Pages - preserve missing page props on errors (#2568) - align preview mode behavior (#2561) - mark auto exports in next data (#2569) - normalize i18n router URLs (#2565) - preserve fast refresh state (#2544) #### Misc - **Build:** gate native typeof window folding (#2574) - pass server externals to Nitro traceDeps (#2521) - **Build:** honor inline next config for static export (#2543) - **Routing:** discover dot-directory routes (#2531) ### Performance - **Build:** use native typeof window folding (#2564) - **Pages:** reuse dev stylesheet dependency analysis (#2550) ### Contributors - @james-elicx - @LubomirGeorgiev - @NathanDrake2406 - @WilliamK112
@vinext/cloudflare@1.0.0-beta.1
### Bug Fixes - **Build:** honor inline next config for static export (#2543) ### Contributors - @james-elicx
vinext@1.0.0-beta.0
### Features - **Init:** mark CDN warmup flag experimental (#2533) - **Cloudflare:** warm prerendered paths before deploy (#2481) - **Cloudflare:** populate kv cache from prerendered routes (#2509) - **Create:** add create-vinext-app (#2483) - **Build:** require Vite 8 (#2486) - **Init:** default to Workers Cache on Cloudflare (#2482) ### Bug Fixes - **Init:** use built Wrangler config for deploy script (#2532) - **App Router:** stop varying RSC responses by Accept (#2526) - **App Router:** preserve client state during action revalidation (#2517) - dev-server polish batch — HTML charset, client global polyfill, trailingSlash image endpoint (#2512) - **Check:** mark cache components partially supported (#2507) - **Config:** tsconfig paths — longest-prefix matching and stylesheet-scoped aliases (#2504) ### Performance - **Build:** filter virtual module hooks (#2519) ### Contributors - @camc314 - @james-elicx - @southpolesteve
create-vinext-app@1.0.0-beta.0
### Features - **Init:** mark CDN warmup flag experimental (#2533) - **Cloudflare:** warm prerendered paths before deploy (#2481) - **Create:** add create-vinext-app (#2483) ### Bug Fixes - **Init:** use built Wrangler config for deploy script (#2532) ### Contributors - @james-elicx
@vinext/cloudflare@1.0.0-beta.0
### Features - **Init:** mark CDN warmup flag experimental (#2533) - **Cloudflare:** warm prerendered paths before deploy (#2481) - **Cloudflare:** populate kv cache from prerendered routes (#2509) ### Bug Fixes - **Cloudflare:** stream deploy logs (#2528) ### Contributors - @james-elicx
vinext@0.2.1
### Bug Fixes #### App Router - limit mounted slot cache variants (#2497) - omit pending RSC cache state for query renders (#2488) - isolate global not-found css (#2444) - expose app rewrites to pages data clients (#2468) - publish committed no-prefetch navigations (#2469) - cache segment prefetches by rendered search params (#2477) - skip readiness waits for speculative prerenders (#2457) - align app static ISR lifecycle (#2472) - reuse metadata rewrite prefetches (#2455) - avoid runtime route-tree prefetch sizing (#2467) - start optimistic prefetches immediately (#2440) - normalize rsc reference validation ids (#2480) - send deployment id on RSC responses (#2452) - separate header-only full-route rsc requests (#2445) - preserve app rewrite filtering (#2441) - revalidate dynamic intercepted actions (#2443) - evict segment prefetches under memory pressure (#2466) - honor basePath false rewrites (#2370) - preserve rewritten route identity (#2358) - support styled-jsx from next (#2341) #### Pages - align middleware data prefetch caching (#2451) - honor basePath false rewrites (#2442) - normalize data routes for trailing slash middleware (#2470) - align prerender functional parity (#2471) - enforce reactStrictMode by wrapping client root in (#2433) - preload initial dev stylesheets (#2423) - route dotted dynamic paths in dev (#2424) #### Misc - fully elide inline type-only import specifiers (#2498) - **Config:** escape destination query params (#2494) - **Link:** avoid reusing dynamic app route prefetches (#2450) - **Build:** handle dynamic requests in JS files with JSX (#1736) - **Dev:** treat .js as JSX in the optimizeDeps scanner (#2434) - **Config:** resolve and bundle extensionless .cjs config imports (#2435) - **CSS:** preserve Sass partial asset URLs (#2338) - **Link:** reuse full prefetch loading shells (#2332) - **Dev:** seed Cloudflare Pages Router worker deps (#2430) - **Cloudflare:** support Sentry request errors on Workers (#2425) - use normalizePathSeparators in formatAppFilePath for Windows compatibility (#2426) - **Routing:** use normalizePathSeparators(path.relative) instead of path.posix.relative (#2308) ### Performance - **Build:** parallelize prerender across a pool of render processes (#2437) ### Contributors - @hyf0 - @james-elicx - @kushdab - @NathanDrake2406 - @shulaoda - @southpolesteve
@vinext/cloudflare@0.2.1
### Bug Fixes - **Cloudflare:** respect TPR cache opt-outs (#2493) - **App Router:** align app static ISR lifecycle (#2472) - **Cloudflare:** allow pages deploy without custom worker (#2429) ### Contributors - @james-elicx
vinext@0.2.0
Today's release includes a revamped `vinext init` command, moving the deploy command to `npx @vinext/cloudflare deploy`, more support for configuring vinext in your Vite config file, and a bunch of bug fixes. When you run `vinext init` in a project, you will be prompted to choose a target (e.g. 'cloudflare' or 'node'), and all configuration for that target will be done as part of the init command. This replaces the need to run `vinext deploy` to setup a cloudflare project. Projects using `vinext deploy` should switch to `npx @vinext/cloudflare deploy` - the previous command will be removed in a future release, and they are functionally the same. Cloudflare builds no longer need the custom worker file that used to be generated for applications. You can now point your wrangler config to target a vinext-managed fetch handler that takes care of the generic entry under-the-hood. ```jsonc { "$schema": "node_modules/wrangler/config-schema.json", "main": "vinext/server/fetch-handler", } ``` When removing the custom worker, you can configure your image optimisation provider and prerendering config in your Vite config. ```ts import vinext from "vinext"; import { imagesOptimizer } from "@vinext/cloudflare/images/images-optimizer"; vinext({ images: { optimizer: imagesOptimizer() }, // exclude the prerender config altogether if you do not need prerendering. prerender: { // only '*' is supported at the moment, more configurability will come in future releases. routes: "*", }, }); ``` ### Features - **Build:** support prerender vite config (#2415) - **Cloudflare:** add unified worker entry (#2416) - **Cloudflare:** move deploy command to cloudflare package (#2405) - **Init:** scaffold for cloudflare and node (#2279) - **Images:** configure image optimization via vinext({ images }) adapter (#1873) ### Bug Fixes #### App Router - match generated params case-insensitively (#2351) - honor basePath opt-out rewrites (#2362) - preserve layouts across soft navigation (#2316) - preserve primary parallel route slot (#2347) - preserve named parallel slot state (#2246) - avoid repeated hover prefetches (#2396) - reuse committed client cache payloads (#2251) - normalize trailing slash in implicit cache tags (#2390) - scroll past existing hoisted styles (#2356) - include page segment in flight state (#2359) - discover nested leaf slot routes (#2350) - restore intercepted history slots (#2363) - preserve interception across middleware rewrites (#2342) - honor global not found opt-in (#2340) - replay prerendered preload headers (#2333) - bind layout-only children defaults (#2335) - scope static params across parallel routes (#2317) - skip prefetches for bots (#2323) - render templates with children only (#2322) - align static dynamic params parity (#2321) - avoid probing client references (#2313) - match dynamic request analysis parity (#2253) #### Build - resolve framework-owned SWC helpers (#2357) - keep dynamic third-party imports bare in published dist (#2395) - align SSR CSS asset paths (#2291) #### Pages - pass req res to document initial props (#2402) - expose parsed cookies on request objects (#2401) - match optional catch-all prerender paths (#2238) #### Pages Router - retain prefetched SSG data (#2366) - unify client asset bootstrap (#2378) - split scanned file paths on forward slashes (#2297) #### Misc - **Init:** only detect pnpm approve-builds failures from pnpm-specific output (#2404) - **Server:** restore client trace metadata parity (#2371) - **CSS:** support namespace CSS Module imports (#2345) - **Link:** start viewport prefetches immediately (#2229) - **Router:** honor middleware app rewrites for page links (#2339) - **Form:** match Next.js navigation parity (#2245) - **Client:** isolate Pages Router module graph (#2380) - **Image:** match App Router deploy parity (#2310) - **Cache:** bypass unstable cache in draft mode (#2319) - **CLI:** respect Vite dev server config (#2379) - **Cache:** throw updateTag context errors synchronously (#2311) - **Config:** match trailing-slash route sources (#2255) - **Config:** match deprecation warning parity (#2252) - **Middleware:** match Pages data request metadata (#2239) - **Actions:** match root params execution phases (#2248) ### Performance - **Metadata:** cache scanMetadataFiles to skip the redundant 2nd per-build app-tree walk (#2394) - **Plugins:** skip dynamic-request AST parse for static-import-only modules — 5000-route build −21% (#2392) - **Routing:** cache app-route-graph directory reads — 5000-route build −32% (#2389) ### Contributors - @Boyeep - @hyf0 - @james-elicx - @MaxtuneLee - @shulaoda
@vinext/cloudflare@0.2.0
### Features - **Build:** support prerender vite config (#2415) - **Cloudflare:** move deploy command to cloudflare package (#2405) - **Init:** scaffold for cloudflare and node (#2279) - **Images:** configure image optimization via vinext({ images }) adapter (#1873) ### Contributors - @james-elicx
vinext@0.1.8
### Bug Fixes #### App Router - exclude dev overlay from production client bundle (#2284) - match interception route precedence (#2231) - preserve global error details (#2249) - restore cache and parallel route parity (#2261) - canonicalize initial history URL (#2250) #### Misc - **Build:** apply default server externals (#2257) - **SSR:** ignore runtime renderer import in Vite (#2288) - **Router:** ignore stale initial popstate with i18n (#2230) - **Middleware:** run on missing build assets (#2242) - **Headers:** strip internal dev request ID headers (#2260) - **Pages Router:** allow server-only in API routes (#2234) - **Config:** make vite-tsconfig-paths an optional peer (#2258) ### Performance - **App Router:** skip speculative page probes for HTML renders (#2226) - **Link:** omit Pages runtime in app-only builds (#2225) - **Client:** omit unused server action client (#2222) - **App:** omit unused PPR runtime (#2223) - **App:** omit unused file metadata runtime (#2224) ### Contributors - @hyoban - @james-elicx - @ponharu - @southpolesteve - @TheAlexLichter
vinext@0.1.7
### Bug Fixes - **Image:** emit hoisted var for local image import binding to avoid TDZ (#2067) - **Dynamic:** render ssr:false loading with pastDelay:true to match client (#1967) (#2064) - **Actions:** dedupe Set-Cookie on no-JS non-redirect action responses (#1976) (#2063) - **RSC:** only short-circuit well-known signal digests so real errors reach onRequestError (#2066) ### Performance #### App - omit unused server action runtime (#2206) - omit unused metadata route runtime (#2196) - omit unused middleware runtime (#2194) #### Misc - **Server:** skip duplicate App RSC vary merge (#2177) - **Server:** reuse App SSR bfcache metadata (#2182) - **Client:** preserve additional route-owned shims (#2205) - **Dev:** externalize SSR React runtime (#2191) - **App Router:** isolate action request detection (#2188) - **Client:** preserve App Router route chunk boundaries (#2189) - **OG:** use MagicString positional overwrites instead of repeated replaceAll (#2202) - **Dev Server:** memoize the Pages SSR handler across dev requests (#2201) - **Mdx:** gate the MDX transform handler behind a native id filter (#2200) ### Contributors - @Divkix - @NathanDrake2406 - @shulaoda - @TheAlexLichter
vinext@0.1.6
### Bug Fixes - **OG:** constrain inlined assets to trusted roots (#2172) - **Router:** enhance navigation with `as` mask for URL handling (#2076) - **Proxy:** match Next.js file conventions (#2155) - **Prod Server:** send headers-only for HEAD in sendCompressed (#1980) (#2058) - **RSC:** resolve the app-rsc-handler shim to a forward-slash id on Windows (#2165) - **Init:** ignore vinext output directory (#2160) - **App Router:** block dangerous RSC redirect URLs (#2154) - **Fonts:** preload only requested google font subsets (#2152) - **Server:** q-value-aware Accept-Encoding negotiation (#2047) - **Image:** resolve aliased static imports (#2142) ### Performance - **App Router:** defer layout, template and boundary modules to first request (#2145) - **App Router:** defer prerender endpoint & file metadata runtimes (#2150) ### Contributors - @Divkix - @james-elicx - @jillesme - @MaxtuneLee - @NathanDrake2406 - @shulaoda - @TheAlexLichter
vinext@0.1.5
### Bug Fixes - **Image:** preserve unoptimized remote URLs (#2139) - **Image Imports:** normalize watchChange id so image cache invalidates on Windows (#2125) - **Transforms:** emit sourcemaps from strip-server-exports and remove-console (#2124) - **Middleware:** match middleware taint ids by forward-slash on Windows (#2088) - **Build:** normalize canonicalized module ids to forward slashes on Windows (#2089) - **CSS:** keep module hashes stable with url assets (#2114) - **Middleware:** normalize trailing slash before matching (#2112) ### Performance #### Dev - skip JSX transform for compiled runtime (#2121) - skip typeof window folding for prebundles (#2118) - externalize App Router request handler (#2108) #### Misc - **App Router:** defer cache-only runtimes (#2126) - **App Page Cache:** reuse HTML ISR key during regeneration (#2127) - **App Page Cache:** reuse the ISR cache key on the stale-regeneration path (#2123) - **Image Imports:** hoist image-extension regex to module scope (#2122) - **SSR:** isolate open redirect detection (#2120) - **Build:** rely on plugin hook filters (#2119) - **App Router:** defer action and route-handler runtimes (#2079) - **Cache:** isolate handler and request state (#2107) - **Build:** filter compatibility transform hooks (#2103) ### Contributors - @james-elicx - @shulaoda - @TheAlexLichter
vinext@0.1.4
### Bug Fixes #### Pages - emit canonical **NEXT_DATA** JSON (#2043) - re-enter filesystem routes after rewrites (#2041) - apply Document renderPage enhancers (#2034) - interpolate same-segment rewrite params (#2030) - honor basePath in dev module loaders (#2033) - route hybrid form data requests (#2029) - preserve rewritten URLs during navigation (#2028) #### Misc - **Build:** preserve lazy RSC framework chunks (#2074) - **Middleware:** fail closed for unsafe matchers (#2078) - **Build:** strip server-side Pages data export transforms from client (#2055) - **Fonts:** detect trailing comma past comments when injecting font options (#2051) - **Csp:** match script-src-elem/attr when extracting script nonce (#2049) - **Script:** register src beforeInteractive scripts and mark hoisted output (#2019) - **i18n:** match NEXT_LOCALE cookie case-insensitively (#2050) - **Metadata:** gate twitter app and player tags on card type (#2053) - **Config:** support tsconfig extends array form (#2054) - **Navigation:** promote OperationToken to the eligibility authority (#2009) - **App Router:** preserve dynamic interception source routes (#2042) - **Image:** emit static imports as managed assets (#2040) - **Middleware:** classify Pages data requests by URL (#2039) - **Pages Router:** cancel deduped GSSP data waits (#2038) - **Router:** re-enter filesystem routes after rewrites (#2032) - **Actions:** return body-limit errors without closing responses (#2026) - **Router:** render slots beside grouped children (#2022) - **App Router:** settle superseded link navigations (#2025) - **Prerender:** deduplicate generateStaticParams entries (#2031) ### Performance - **RSC:** prebundle static renderer entry (#2077) - **Dev:** prune NODE_ENV during dependency optimization (#2075) ### Contributors - @Divkix - @james-elicx - @MaxtuneLee - @NathanDrake2406 - @TheAlexLichter - @Xplod13
vinext@0.1.3
### Bug Fixes #### App Router - align router autoscroll with Next (#2004) - recover SSR shell render errors via **next_error** document (#1908) - preserve front redirects through fallback route handlers (#2000) - expose active source page on window.next (#1995) - fold typeof window before resolution (#1956) - support extensionless variable imports (#1958) - preserve page notFound precedence during metadata failure (#1957) #### Deploy - preserve app module identity with deployment ids (#2005) - prevent Windows shell injection (#1946) - improve deployment id parity (#1949) #### Pages - preserve app props for GSSP requests (#1996) - preserve module identity with deployment ids (#2012) - harden cookie parsing (#1947) #### Pages Router - pass rewrite URL to edge API requests (#1998) - block fallback shell for crawler UAs on prerender (#1543) (#1663) - restore scroll across reload history traversal (#1905) #### Router - honor hybrid pages route priority (#1997) - share Pages Router context across chunks (#2010) - restore pages scroll traversal state (#1999) - hard navigate Pages links to App routes (#1960) #### Shims - guard AsyncLocalStorage construction for browser bundles (#2020) - add useUntrackedPathname hook for error boundary parity (#1933) - match next/error RSC diagnostic (#1939) #### Misc - **Image:** allow any quality 1-100 when images.qualities is unset (#2023) - **Server:** strip HTTP/2 pseudo-headers before building Headers (#2021) - **Prerender:** surface thrown generateStaticParams/getStaticPaths errors (#2017) - **Routing:** re-encode trailing-slash Location for non-Latin-1 paths (#2011) - **PPR:** gate fallback shells until request-time resume is supported (#1716) - **Build:** honour experimental.lightningCssFeatures include/exclude (#1498) (#1664) - **Image:** prevent optimizer cache-key amplification (#1944) - **Actions:** bound Flight payload graph validation (#1942) - **Link:** preserve basePath hash navigation (#1952) - **Headers:** prioritize config cache headers for metadata assets (#1953) - **Config:** share CommonJS module fallback (#1990) - **Config:** honor resolve extensions and improve webpack config processing (#1959) - **CSS:** load local CommonJS PostCSS plugins (#1961) - **Cache:** honor fetch opt-outs and force-dynamic revalidate parity (#1907) ### Performance - skip unnecessary import parsing (#1991) - cache fs probes and precompute route sort keys in scan/deploy paths (#1930) ### Contributors - @Divkix - @james-elicx - @JaredStowell - @NathanDrake2406 - @Xplod13
@vinext/cloudflare@0.1.2
### Bug Fixes - **Cache:** Support stripping CDN ISR headers (#1908) ### Contributors - @NathanDrake2406
vinext@0.1.2
### Bug Fixes #### App Router - include parallel slot params in useParams (#1904) - preserve unstable_catchError boundaries (#1906) - suppress redirect console errors in production onCaughtError (root-layout-redirect) (#1878) - preload next/dynamic chunks with CSP nonce (#1594) - extend OTel tracer provider for Cache Component span context (#1868) - return HTTP 200 when notFound() is thrown from generateMetadata (#1864) - discover parallel-slot pages inside route groups for catch-all + parallel-routes-group (#1865) #### Pages Router - support stream proxying in API routes (#1902) - set x-nextjs-deployment-id on SSG \_next/data responses (#1863) - buffer SSR response for crawler/bot User-Agents (#1876) - hard-navigate to App Router destinations from Pages Router links (#1879) - bridge deprecated Router.on property callbacks (#1869) #### Misc - **Router:** support experimental gesture push (#1909) - **Prod Server:** stop double-evaluating the server bundle when chunks import the entry back (#1924) - **Trailing Slash:** canonical url trailing slash support (#1888) - **Edge Wasm:** handle `*.wasm?module` imports in non-Cloudflare builds (#1877) - **Config:** define cache components flag as boolean (#1903) - **Scss:** preprocess SCSS CSS-module composes deps via SassAwareFileSystemLoader (#1882) - **Routing:** normalize route root to forward slashes, drop downstream path workarounds (#1896) - **Middleware:** clear nextUrl.basePath for absolute paths outside basePath (part of #1830) (#1872) - **Cloudflare:** update cache adapter jsdoc and examples (#1898) - **Fonts:** normalize shims dir so shim-skip guards match on Windows (#1885) - **Check:** normalize scanned file paths to forward slashes on Windows (#1887) - **Shims:** use path.posix.join in resolveShimModulePath for Windows (#1886) - **Scss:** resolve tilde (~) imports from node_modules and project root (#1881) - **Build:** define process.env.NEXT_RUNTIME for server bundles (#1880) - **Build:** inline ../-relative font assets in OG routes (#1866) - **Use Cache:** pass soft tags to cache lookup so revalidatePath invalidates use-cache entries in route handlers (#1867) ### Performance - **Server:** eliminate redundant per-request parsing in the request pipeline (#1929) - **Server:** hoist per-request regex compilation out of SSR streaming and shim hot paths (#1915) ### Contributors - @Divkix - @james-elicx - @jgeurts - @MaxtuneLee - @NathanDrake2406 - @shulaoda
@vinext/cloudflare@0.1.1
### Bug Fixes - **Cloudflare:** update cache adapter jsdoc and examples (#1898) ### Contributors - @james-elicx
vinext@0.1.1
### Bug Fixes #### App Router - match Pages navigation params in hybrid builds (#1741) - include route pattern in repeated-slash Link warning (#1554) (#1855) - scroll to top with hoisted children and loading.js (#1368) (#1857) - resolve explicit parallel slot with no page (#1535) (#1852) - propagate "use cache" tags to route-handler ISR entries (#1453) (#1848) - resolve query-only Link href against current path (#1540) (#1844) - render built-in fallback when global-error.tsx throws (#1548) (#1837) - clear useLinkStatus pending after interrupted navigation (#1527) (#1839) - respect reactMaxHeadersLength for preload Link header (#1552) (#1841) - preserve \_rsc query across redirects (#1529) (#1838) - apply trailingSlash to route handler request URL (#1827) (#1835) - restore scroll snapshots on back (#1743) - isolate page CSS chunks in production (#1738) #### Build - correct CSS ordering for global-not-found (#1549) (#1858) - exclude Vite build manifests from Cloudflare asset uploads (#1850) - don't crash on benign floating asset-import errors (#1510) (#1846) - expand require.context into import.meta.glob map (#1501) (#1836) - don't path-resolve bare specifier aliases for esmExternals (#1507) (#1843) - don't crash build when a PostCSS string plugin can't be resolved (#1509) (#1840) #### Misc - **Pages Router:** pass revalidateReason "on-demand" to gsp/gssp (#1462) (#1856) - **Actions:** return 404 for MPA action on app with no server actions (#1340) (#1853) - **Routing:** propagate middleware draft cookie to pages/api fallback (#1520) (#1845) - **Actions:** enforce serverActions.bodySizeLimit on fetch actions (#1828) (#1834) - support sibling-style interception routes (#1804) ### Contributors - @Divkix - @james-elicx - @NathanDrake2406
vinext@0.1.0
Today's release contains several app router bundling improvements like code splitting and lazy loading for faster cold starts, and minification by default for smaller bundles. Several CLI crashes were fixed for large projects, and more Next.js parity gaps were addressed. Vinext now supports additional configuration for caching -- the Vite plugin supports a cache object, where adapters for a data cache and a cdn cache can be supplied. The cdn adapter is intended to be used for route-level caching, while the data adapter is used for everything else, and is used for route caching in the absence of a cdn adapter. This is intended to replace manual setup in the Worker. ```ts import vinext from "vinext"; import { kvDataAdapter } from "@vinext/cloudflare/cache/kv-data-adapter"; vinext({ cache: { data: kvDataAdapter() }, }); ``` ### Features #### Cache - extract Cloudflare cache adapters into @vinext/cloudflare (#1748) - configure cache adapters from vite plugin config (#1733) - split CDN and data cache adapters; add Cloudflare edge adapter (#1693) #### Misc - **Deploy:** honor Worker-entry cache setters for ISR deploys (#1821) - **PPR:** add PPR fallback-shell render lifecycle tests (#1715) - **Release:** commit-driven auto-generated changesets (#1753) - improve dev error overlay source frames (#1746) - **Skip:** omit proven static layouts from RSC transport (#1437) - **PPR:** add encodePrerenderRouteParams and match kind exact payload tests (#1714) - **Skip:** plumb client reuse manifests through the app request path (#1717) - **App Router:** support useRouter bfcacheId semantics (#1588) ### Bug Fixes #### App Router - preserve recent segment state with Activity BFCache (#1739) - hard navigate streamed redirects (#1742) - refetch same-page search navigations (#1744) - match streaming metadata error responses (#1794) - track searchParams access for static bailout (#1788) - honor per-response dynamic stale times on the client (#1712) - ensure streamed SSR body ends with (#1532) (#1624) - emit per-page dynamic stale time metadata (#1711) - prerender cacheComponents root-param fallback shells (#1702) #### Build - share one RSC compatibility ID across all plugin instances (#1814) - write BUILD_ID via writeBundle so App Router builds emit it (#1810) - bundle @vinext/cloudflare into vinext to break dependency cycle (#1797) - emit Next client runtime manifests (#1735) #### Pages Router - collapse doubled basePath in client asset URLs (#1730) - make req async-iterable for bodyParser: false (#1479) (#1678) - run instrumentation-client.ts before hydration (#1474) (#1671) - cancel in-flight nav on gSSP/gSP data redirect (#1465) (#1691) #### Misc - **Check:** only flag config options used as property keys (#1778) - **Image:** scan image imports via AST instead of regex (#1779) - **Image Imports:** normalize meta specifier separators on Windows (#1791) - **Font:** resolve next/font/local paths inside node_modules packages (#1780) - **Check:** prevent regex stack overflow / hang on very large files (#1776) - **Form:** DISALLOWED_FORM_PROPS stripping, file input warning, viewport prefetch, pages-router E2E (#1752) - **Middleware Runtime:** normalize trailing slash on plain-URL redirect locations (#1750) - **Routing:** correct (.) interception target for nested slot subdirectories (#1751) - **OG:** lazy-load @vercel/og to keep it out of the main worker entry (#1774) - **Config:** avoid duplicate CJS global shims (#1771) - **Deploy:** respect --env flag when invoking build (#1694) - **Pages:** render custom errors for notFound results (#1737) - client HMR dev overlay recovery (#1758) - **Server:** define CJS path globals in bundled modules (#1740) - **Link:** full-prefetch dynamic routes without loading shells (#1734) - **Skip:** centralize final static-layout skip rejection (#1722) - dev overlay browser sourcemap stacks (#1731) - **i18n:** make locale sticky across client navigations (#1407) - **Cache:** attach path tags to prerender-seeded entries so revalidatePath invalidates them (#1486) (#1688) - **CSS:** preserve distinct media filenames for CSS url() assets (#1725) - **Metadata:** omit unused parent arg for cached generateMetadata (#1719) ### Performance - **OG:** dedupe resvg/yoga wasm in server bundle (#1801) - **Router:** lazy-load App Router page and route-handler modules (#1781) - **Build:** minify server build environments by default (#1777) - **Utils:** skip path separator replace on POSIX (#1766) ### Contributors - @aicayzer - @Divkix - @hyoban - @james-elicx - @manNomi - @NathanDrake2406 - @shulaoda

暂无评论

none
暂无评论...