Commits
Click on a commit to change the comparison rangerefactor: extract AstroHandler from BaseApp#render into core/routing/handler.ts refactor: introduce DefaultFetchHandler layer between BaseApp and AstroHandler fix lint: use FetchHandler type and drop unused export refactor: extract ErrorHandler strategy and prepareResponse helper refactor: extract TrailingSlashHandler from AstroHandler refactor: extract AstroMiddleware from RenderContext into its own class refactor: introduce FetchState and move per-request state out of handler + BaseApp refactor: extract ActionHandler to handle RPC + form actions upstream of rendering fix(actions): invoke ActionHandler inside renderRoute so middleware + finalization run around it refactor: extract PagesHandler for route dispatch and wire it through AstroMiddleware refactor: route error/container/rewrite paths through explicit handlers instead of RenderContext.render fix(rewrite): preserve middleware-set cookies across a user-triggered rewrite refactor: remove RenderContext.render and make AstroMiddleware callback required refactor: lift i18n out of the middleware layer into an I18n handler class refactor: extract Redirects handler and short-circuit redirect routes before middleware refactor: unify user-triggered rewrites on Rewrites.execute; remove AstroHandler.#rewriteAndRender Merge branch 'main' into advanced-routing perf(redirects): avoid async microtask on the non-redirect hot path perf(handler): inline redirect check in AstroHandler.render refactor(fetch-state): consolidate per-request state; AstroMiddleware.handle(state) Merge branch 'main' into advanced-routing refactor(fetch-state): move RenderContext creation into FetchState; renderRedirect/I18n.finalize take state chore(mocks): un-export createMockRenderContext (now internal) Merge branch 'main' into advanced-routing perf(render-context): initialize fetchState in constructor; unconditional symbol stash perf(fetch-state): inline RenderContext creation, drop private fields, lazy slots chore(benchmark): add hand-rolled render profiler for branch comparison feat(app): add virtual:astro:fetchable, setFetchHandler on BaseApp fix(cloudflare): prebundle default fetch handler in dev feat(app): gate advanced routing behind experimental flag chore: add changeset for advanced routing feature refactor(fetch): move resolveRouteData to FetchState; expose trailingSlash in astro/fetch feat(fetch): add pages, middleware, and trailingSlash helpers to astro/fetch and astro/hono feat(fetch): add actions, i18n, skipMiddleware getter; extract actions from PagesHandler feat(fetch): add redirects handler to astro/fetch and astro/hono fix: update test utility to run actions between middleware and pages perf: avoid per-request closure in AstroHandler render callback feat(fetch): add sessions handler to astro/fetch and astro/hono feat: add context provider system to FetchState; wire sessions through it perf: eliminate async overhead on hot path for non-action/non-session renders fix: use import type for AstroSession in render-context fix: remove unused exports from session handler feat(fetch): add CacheHandler class; move cache to provider pattern; expose cache in astro/fetch and astro/hono refactor: move APIContext creation to FetchState; dynamic provider getters fix: load user src/app.ts fetch handler in dev; lazy render context on FetchState fix: restore ensureRenderContext call in AstroHandler.render refactor: use this.pipeline directly in ensureRenderContext perf: make RenderContext.create() synchronous; lazy component loading fix: update server islands test stub to use getServerIslandNameMap merge: resolve conflict with main in render-context test Merge branch 'main' into advanced-routing Merge branch 'main' into advanced-routing fix: update test mocks to use FetchState directly instead of RenderContext fix: override FetchState.rewrite in mock for i18n fallback rewrite test docs: expand changeset to blog-post style with accurate examples remove preview-instructions.md from repo refactor: move fetch-state.ts to core/fetch/, make route resolution eager and private fix: prefix unused params with underscore for biome lint fix: remove redirect rendering from PagesHandler, reroute error responses in BaseApp fix: handle redirect case in PagesHandler switch for exhaustiveness lint fix: tighten FetchState url and cookies types to non-optional fix: prevent MaxListenersExceededWarning on FSWatcher during dev feat: warn when custom app.ts omits configured pipeline features fix: guard feature tracking against missing app in unit tests refactor: move usedFeatures to Pipeline and simplify ActionHandler fix: revert ActionHandler to accept pre-computed APIContext to avoid perf regression chore: remove unused render profiler script docs: update stale RenderContext references in handler comments to FetchState refactor: add AstroFetchState interface to constrain public API surface refactor: restore getPathnameFromRequest on BaseApp Merge branch 'main' into advanced-routing fix: add new exports to publishConfig.exports to fix exports test refactor: rename #resolved to #providersResolvedValues for clarity refactor: remove unused app getter from FetchState chore: add changeset for cookies.consume() instance method docs: add reference/handlers.md documenting PipelineFeatures and feature checks refactor: mark AstroHandler.render as @internal fix: replace bang operator with explicit throw in DefaultFetchHandler Update .changeset/advanced-routing.md Update packages/astro/src/core/fetch/fetch-state.ts Update packages/astro/src/types/public/config.ts refactor: use normalizedSrcDir instead of decodeURI in vite-plugin-fetchable fix: remove @internal tags from FetchState to fix stripInternal stripping the entire class from .d.ts perf: reduce per-request overhead in FetchState and handler pipeline perf: reduce per-request instruction count in handler pipeline fix: revert middleware caching to fix HMR test, fix trailing-slash URL parsing perf: fast-path render options to FetchState, skip Reflect.set/get round-trip fix: update node adapter to use adapterLogger getter instead of removed getAdapterLogger() fix: remove unused imports flagged by biome lint refactor: add getFetchStateFromAPIContext helper, throw on missing FetchState fix: remove unnecessary | undefined from renderThroughMiddleware parameter refactor: extract INTERNAL_RESPONSE_HEADERS array for easier maintenance refactor: deduplicate rewrite validation and state mutation into applyRewriteToState fix: pass waitUntil to cache provider onRequest Update packages/astro/src/core/fetch/fetch-state.ts test: verify params are updated after rewrite via ctx.rewrite() fix: add SAFETY comments for params bang operators in FetchState refactor: move Router and manifestData from BaseApp to Pipeline refactor: clarify astroPagePartial caching logic with comment fix: resolve routeData in BaseApp.render() for domain-based i18n routing fix: add comments clarifying routeData.params vs this.params and SAFETY for bang operator refactor: extract #stripHtmlExtension to deduplicate dev pathname normalization refactor: remove unused refreshPathname, make url param mandatory on #computePathname fix: strip .html in build, filter prerendered routes, prevent double-decode Merge branch 'main' into advanced-routing fix: treat fallback sentinel response as 404 for i18n fallback routing Merge remote-tracking branch 'origin/main' into advanced-routing