chore(deps): update dependencies #3

Merged
sophie merged 1 commit from renovate/dependencies into main 2026-09-16 22:52:24 +10:00
Collaborator

This PR contains the following updates:

Package Change Age Confidence
@tailwindcss/vite (source) 4.1.16 → 4.3.3 age confidence
astro (source) 5.15.1 → 5.18.2 age confidence
sst 3.17.21 → 3.19.3 age confidence
tailwindcss (source) 4.1.16 → 4.3.3 age confidence

Release Notes

tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.3.3

Compare Source

Fixed
  • Support --watch --poll[=ms] in @tailwindcss/cli when filesystem events are unreliable or unavailable (#​20297)
  • Canonicalization: match arbitrary hex colors against theme colors case-insensitively (e.g. bg-[#fff] and bg-[#FFF] → bg-white) (#​20298)
  • Prevent Preflight from overriding Firefox's native iframe:focus-visible outline styles (#​20292)
  • Ensure theme('colors.foo') in JS plugins resolves correctly when both --color-foo and --color-foo-bar exist (#​20299)
  • Ensure fractional opacity modifiers work with named shadow sizes like shadow-sm/12.5, text-shadow-sm/12.5, drop-shadow-sm/12.5, and inset-shadow-sm/12.5 (#​20302)
  • Parse selectors like [data-foo]div as two selectors instead of one (#​20303)
  • Ensure @tailwindcss/postcss rebuilds when a preprocessor like Sass changes the input CSS without changing the input file on disk (#​20310)
  • Ensure CSS nesting is handled even when Lightning CSS isn't run, such as in @tailwindcss/browser and Tailwind Play (#​20124)
  • Prevent achromatic theme colors from shifting hue when mixed in polar color spaces like oklch (#​20314)
  • Ensure --spacing(0) is optimized to 0px instead of 0 so it remains a <length> when used in calc(…) (#​20319)
  • Load @parcel/watcher only when needed in @tailwindcss/cli --watch mode, so one-off builds and --watch --poll work when @parcel/watcher can't be loaded (#​20325)
  • Use explicit platform fonts instead of system-ui and ui-sans-serif so CJK text respects the page's lang attribute on Windows (#​20318)
  • Prevent @tailwindcss/upgrade from rewriting ignored files when run from a subdirectory (#​20329)
  • Ensure earlier @source rules pointing to nested files are scanned when later @source rules point to files in parent folders (#​20335)
  • Prevent @tailwindcss/vite from triggering full page reloads when scanned files are processed by Vite but haven't been loaded as modules yet (#​20336)

v4.3.2

Compare Source

Fixed
  • Support bare spacing values for auto-rows-* and auto-cols-* utilities (e.g. auto-rows-12 and auto-cols-16) (#​20229)
  • Prevent @tailwindcss/cli in --watch mode from crashing on Windows when @source points to a directory that doesn't exist (#​20242)
  • Prevent @tailwindcss/vite from crashing in Deno v2.8.x when context.parentURL is not a valid URL (#​20245)
  • Ensure @tailwindcss/cli in --watch mode rebuilds when the input CSS file changes in an ignored directory (#​20246)
  • Allow @variant rules used in addBase(…) to use custom variants defined later (#​20247)
  • Prevent @tailwindcss/vite from crashing during HMR when scanned files or directories are deleted (#​20259)
  • Generate font-size instead of color declarations for text-[--spacing(…)] (#​20260)
  • Prevent @source patterns from scanning unrelated sibling files and folders (#​20263)
  • Extract class candidates adjacent to Template Toolkit delimiters like %]…[% in .tt, .tt2, and .tx files (#​20269)
  • Extract class candidates from conditional Maud syntax like p.text-black[condition] (#​20269)
  • Prevent @position-try rules from triggering unknown at-rule warnings when optimizing CSS (#​20277)
  • Support class suggestions for named opacity modifiers from --opacity theme values (#​20287)
  • Prevent type errors in @tailwindcss/postcss when used with newer PostCSS patch releases (#​20289)

v4.3.1

Compare Source

Added
  • Add --silent option to suppress output in @tailwindcss/cli (#​20100)
Fixed
  • Remove deprecation warnings by using Module#registerHooks instead of Module#register on Node 26+ (#​20028)
  • Canonicalization: don't crash when plugin utilities throw for unsupported values (#​20052)
  • Allow @apply to be used with CSS mixins (#​19427)
  • Ensure not-* correctly negates @container queries, including style(…) queries (#​20059)
  • Ensure drop-shadow-* color utilities work with custom shadow values containing calc(…) (#​20080)
  • Fix 'Sourcemap is likely to be incorrect' warnings when using @tailwindcss/vite (#​20103)
  • Ensure @tailwindcss/webpack can be installed in Rspack projects without requiring webpack as a peer dependency (#​20027)
  • Canonicalization: don't suggest invalid calc(…) expressions (e.g. px-[calc(1rem+0px)] → px-[calc(1rem+0)]) (#​20127)
  • Canonicalization: avoid suggesting large spacing-scale values for arbitrary lengths (e.g. left-[99999px] → left-[99999px], not left-24999.75) (#​20130)
  • Ensure @tailwindcss/cli in --watch mode recovers when a tracked dependency is deleted and restored (#​20137)
  • Ensure standalone @tailwindcss/cli binaries are ignored when scanning for class candidates (#​20139)
  • Ensure class candidates are extracted from Twig addClass(…) and removeClass(…) calls (#​20198)
  • Don't crash in the Ruby or Vue preprocessors when scanning files containing invalid UTF-8 bytes (#​19588)
  • Allow @variant to be used inside addBase (#​19480)
  • Ensure @source globs with symlinks are preserved (#​20203)
  • Ensure later @source rules can re-include files excluded by earlier @source not rules (#​20203)
  • Upgrade: don't migrate empty class rules to invalid @utility rules (#​20205)
  • Ensure transitions between inset-shadow-none and other inset shadows work correctly (#​20208)
  • Ensure explicitly referenced @source directories are scanned even when ignored by git (#​20214)
  • Ensure @source globs ending in **/* preserve dynamic path segments to avoid scanning too many files (#​20217)
  • Canonicalization: don't fold calc(…) divisions when the result would require high precision (e.g. w-[calc(100%/3.5)] → w-[calc(100%/3.5)], not w-[28.571428571428573%]) (#​20221)
  • Serve ESM type declarations to ESM importers of @tailwindcss/postcss (#​20228)
Changed
  • Generate 0 instead of calc(var(--spacing) * 0) for spacing utilities like m-0 and left-0 (#​20196)
  • Generate var(--spacing) instead of calc(var(--spacing) * 1) for spacing utilities like m-1 and left-1 (#​20196)

v4.3.0

Compare Source

Added
  • Add @container-size utility (#​18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#​19981, #​20019)
  • Add scrollbar-gutter-* utilities (#​20018)
  • Add zoom-* utilities (#​20020)
  • Add tab-* utilities (#​20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#​19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#​19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#​19989)
Fixed
  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#​19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#​19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#​19966)
  • Resolve imports relative to base when result.opts.from is not provided when using @tailwindcss/postcss (#​19980)
  • Canonicalization: preserve significant _ whitespace in arbitrary values (#​19986)
  • Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. w-[calc(100%---spacing(60))] → w-[calc(100%-(--spacing(60)))]) (#​19986)
  • Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. -mt-[20in] → mt-[-20in], not mt-[-1920px]) (#​19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#​19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1" → style="flex-grow: 1", not style="grow: 1") (#​19918)
  • Allow multiple @utility definitions with the same name but different value types (#​19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#​19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#​20003)
  • Ensure --value(…) is required in functional @utility definitions (#​20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#​20011)

v4.2.4

Compare Source

Fixed
  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#​19947)

v4.2.3

Compare Source

Fixed
  • Canonicalization: improve canonicalization for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tighter → tracking-wider) (#​19827)
  • Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#​19829)
  • Ensure query params in imports are considered unique resources when using @tailwindcss/webpack (#​19723)
  • Canonicalization: collapse arbitrary values into shorthand utilities (e.g. px-[1.2rem] py-[1.2rem] → p-[1.2rem]) (#​19837)
  • Canonicalization: collapse border-{t,b}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#​19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#​19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#​19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#​19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#​19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#​19843)
  • Upgrade: ensure files are not emptied out when killing the upgrade process while it's running (#​19846)
  • Upgrade: use config.content when migrating from Tailwind CSS v3 to Tailwind CSS v4 (#​19846)
  • Upgrade: never migrate files that are ignored by git (#​19846)
  • Add .env and .env.* to default ignored content files (#​19846)
  • Canonicalization: migrate overflow-ellipsis into text-ellipsis (#​19849)
  • Canonicalization: migrate start-full → inset-s-full, start-auto → inset-s-auto, start-px → inset-s-px, and start-<number> → inset-s-<number> as well as negative versions (#​19849)
  • Canonicalization: migrate end-full → inset-e-full, end-auto → inset-e-auto, end-px → inset-e-px, and end-<number> → inset-e-<number> as well as negative versions (#​19849)
  • Canonicalization: move the - sign inside the arbitrary value -left-[9rem] → left-[-9rem] (#​19858)
  • Canonicalization: move the - sign outside the arbitrary value ml-[calc(-1*var(--width))] → -ml-(--width) (#​19858)
  • Improve performance when scanning JSONL / NDJSON files (#​19862)
  • Support NODE_PATH environment variable in standalone CLI (#​19617)

v4.2.2

Compare Source

Fixed
  • Don't crash when candidates contain prototype properties like row-constructor (#​19725)
  • Canonicalize calc(var(--spacing)*…) expressions into --spacing(…) (#​19769)
  • Fix crash in canonicalization step when handling utilities containing @property at-rules (e.g. shadow-sm border) (#​19727)
  • Skip full reload for server only modules scanned by client CSS when using @tailwindcss/vite (#​19745)
  • Add support for Vite 8 in @tailwindcss/vite (#​19790)
  • Improve canonicalization for bare values exceeding default spacing scale suggestions (e.g. w-1234 h-1234 → size-1234) (#​19809)
  • Fix canonicalization resulting in empty list (e.g. w-5 h-5 size-5 → '' instead of size-5) (#​19812)
  • Resolve tsconfig paths to allow for @import '@/path/to/file'; when using @tailwindcss/vite (#​19803)

v4.2.1

Compare Source

Fixed
  • Allow trailing dash in functional utility names for backwards compatibility (#​19696)
  • Properly detect classes containing . characters within curly braces in MDX files (#​19711)

v4.2.0

Compare Source

Added
  • Add mauve, olive, mist, and taupe color palettes to the default theme (#​19627)
  • Add @tailwindcss/webpack package to run Tailwind CSS as a webpack plugin (#​19610)
  • Add pbs-* and pbe-* utilities for padding-block-start and padding-block-end (#​19601)
  • Add mbs-* and mbe-* utilities for margin-block-start and margin-block-end (#​19601)
  • Add scroll-pbs-* and scroll-pbe-* utilities for scroll-padding-block-start and scroll-padding-block-end (#​19601)
  • Add scroll-mbs-* and scroll-mbe-* utilities for scroll-margin-block-start and scroll-margin-block-end (#​19601)
  • Add border-bs-* and border-be-* utilities for border-block-start and border-block-end (#​19601)
  • Add inline-*, min-inline-*, max-inline-* utilities for inline-size, min-inline-size, and max-inline-size (#​19612)
  • Add block-*, min-block-*, max-block-* utilities for block-size, min-block-size, and max-block-size (#​19612)
  • Add inset-s-*, inset-e-*, inset-bs-*, inset-be-* utilities for inset-inline-start, inset-inline-end, inset-block-start, and inset-block-end (#​19613)
  • Add font-features-* utility for font-feature-settings (#​19623)
Fixed
  • Prevent double @supports wrapper for color-mix values (#​19450)
  • Allow whitespace around @source inline() argument (#​19461)
  • Emit comment when source maps are saved to files when using @tailwindcss/cli (#​19447)
  • Detect utilities containing capital letters followed by numbers (#​19465)
  • Fix class extraction for Rails' strict locals (#​19525)
  • Align @utility name validation with Oxide scanner rules (#​19524)
  • Fix infinite loop when using @variant inside @custom-variant (#​19633)
  • Allow multiples of .25 in aspect-* fractions (e.g. aspect-8.5/11) (#​19688)
  • Ensure changes to external files listed via @source trigger a full page reload when using @tailwindcss/vite (#​19670)
  • Improve performance of Oxide scanner in bigger projects by reducing file system walks (#​19632)
  • Ensure import aliases in Astro v5 work without crashing when using @tailwindcss/vite (#​19677)
  • Allow escape characters in @utility names to improve support with formatters such as Biome (#​19626)
  • Fix incorrect canonicalization results when canonicalizing multiple times (#​19675)
  • Add .jj to default ignored content directories (#​19687)
Deprecated
  • Deprecate start-* and end-* utilities in favor of inset-s-* and inset-e-* utilities (#​19613)

v4.1.18

Compare Source

Fixed
  • Ensure validation of source(…) happens relative to the file it is in (#​19274)
  • Include filename and line numbers in CSS parse errors (#​19282)
  • Skip comments in Ruby files when checking for class names (#​19243)
  • Skip over arbitrary property utilities with a top-level ! in the value (#​19243)
  • Support environment API in @tailwindcss/vite (#​18970)
  • Preserve case of theme keys from JS configs and plugins (#​19337)
  • Write source maps correctly on the CLI when using --watch (#​19373)
  • Handle special defaults (like ringColor.DEFAULT) in JS configs (#​19348)
  • Improve backwards compatibility for content theme key from JS configs (#​19381)
  • Upgrade: Handle future and experimental config keys (#​19344)
  • Try to canonicalize any arbitrary utility to a bare value (#​19379)
  • Validate candidates similarly to Oxide (#​19397)
  • Canonicalization: combine text-* and leading-* classes (#​19396)
  • Correctly handle duplicate CLI arguments (#​19416)
  • Don’t emit color-mix fallback rules inside @keyframes (#​19419)
  • CLI: Don't hang when output is /dev/stdout (#​19421)

v4.1.17

Compare Source

Fixed
  • Substitute @variant inside legacy JS APIs (#​19263)
  • Prevent occasional crash on Windows when loaded into a worker thread (#​19242)
withastro/astro (astro)

v5.18.2

Compare Source

Patch Changes
  • #​16813 8f7d8c4 Thanks @​matthewp! - Populates styles in the SSR manifest for prerendered routes. Previously, prerendered routes had styles: [] in the manifest, making it impossible for workers or middleware to discover which CSS files a prerendered page uses.

v5.18.1

Compare Source

Patch Changes

v5.18.0

Compare Source

Minor Changes
  • #​15589 b7dd447 Thanks @​qzio! - Adds a new security.actionBodySizeLimit option to configure the maximum size of Astro Actions request bodies.

    This lets you increase the default 1 MB limit when your actions need to accept larger payloads. For example, actions that handle file uploads or large JSON payloads can now opt in to a higher limit.

    If you do not set this option, Astro continues to enforce the 1 MB default to help prevent abuse.

    // astro.config.mjs
    export default defineConfig({
      security: {
        actionBodySizeLimit: 10 * 1024 * 1024, // set to 10 MB
      },
    });
    
Patch Changes
  • #​15594 efae11c Thanks @​qzio! - Fix X-Forwarded-Proto validation when allowedDomains includes both protocol and hostname fields. The protocol check no longer fails due to hostname mismatch against the hardcoded test URL.

v5.17.3

Compare Source

Patch Changes

v5.17.2

Compare Source

Patch Changes
  • c13b536 Thanks @​matthewp! - Improves Host header handling for SSR deployments behind proxies

v5.17.1

Compare Source

Patch Changes
  • #​15334 d715f1f Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Removes the getFontBuffer() helper function exported from astro:assets when using the experimental Fonts API

    This experimental feature introduced in v15.6.13 ended up causing significant memory usage during build. This feature has been removed and will be reintroduced after further exploration and testing.

    If you were relying on this function, you can replicate the previous behavior manually:

    • On prerendered routes, read the file using node:fs
    • On server rendered routes, fetch files using URLs from fontData and context.url

v5.17.0

Compare Source

Minor Changes
  • #​14932 b19d816 Thanks @​patrickarlt! - Adds support for returning a Promise from the parser() option of the file() loader

    This enables you to run asynchronous code such as fetching remote data or using async parsers when loading files with the Content Layer API.

    For example:

    import { defineCollection } from 'astro:content';
    import { file } from 'astro/loaders';
    
    const blog = defineCollection({
      loader: file('src/data/blog.json', {
        parser: async (text) => {
          const data = JSON.parse(text);
    
          // Perform async operations like fetching additional data
          const enrichedData = await fetch(`https://api.example.com/enrich`, {
            method: 'POST',
            body: JSON.stringify(data),
          }).then((res) => res.json());
    
          return enrichedData;
        },
      }),
    });
    
    export const collections = { blog };
    

    See the parser() reference documentation for more information.

  • #​15171 f220726 Thanks @​mark-ignacio! - Adds a new, optional kernel configuration option to select a resize algorithm in the Sharp image service

    By default, Sharp resizes images with the lanczos3 kernel. This new config option allows you to set the default resizing algorithm to any resizing option supported by Sharp (e.g. linear, mks2021).

    Kernel selection can produce quite noticeable differences depending on various characteristics of the source image - especially drawn art - so changing the kernel gives you more control over the appearance of images on your site:

    export default defineConfig({
      image: {
        service: {
          entrypoint: 'astro/assets/services/sharp',
          config: {
            kernel: "mks2021"
          }
      }
    })
    

    This selection will apply to all images on your site, and is not yet configurable on a per-image basis. For more information, see Sharps documentation on resizing images.

  • #​15063 08e0fd7 Thanks @​jmortlock! - Adds a new partitioned option when setting a cookie to allow creating partitioned cookies.

    Partitioned cookies can only be read within the context of the top-level site on which they were set. This allows cross-site tracking to be blocked, while still enabling legitimate uses of third-party cookies.

    You can create a partitioned cookie by passing partitioned: true when setting a cookie. Note that partitioned cookies must also be set with secure: true:

    Astro.cookies.set('my-cookie', 'value', {
      partitioned: true,
      secure: true,
    });
    

    For more information, see the AstroCookieSetOptions API reference.

  • #​15022 f1fce0e Thanks @​ascorbic! - Adds a new retainBody option to the glob() loader to allow reducing the size of the data store.

    Currently, the glob() loader stores the raw body of each content file in the entry, in addition to the rendered HTML.

    The retainBody option defaults to true, but you can set it to false to prevent the raw body of content files from being stored in the data store. This significantly reduces the deployed size of the data store and helps avoid hitting size limits for sites with very large collections.

    The rendered body will still be available in the entry.rendered.html property for markdown files, and the entry.filePath property will still point to the original file.

    import { defineCollection } from 'astro:content';
    import { glob } from 'astro/loaders';
    
    const blog = defineCollection({
      loader: glob({
        pattern: '**/*.md',
        base: './src/content/blog',
        retainBody: false,
      }),
    });
    

    When retainBody is false, entry.body will be undefined instead of containing the raw file contents.

  • #​15153 928529f Thanks @​jcayzac! - Adds a new background property to the <Image /> component.

    This optional property lets you pass a background color to flatten the image with. By default, Sharp uses a black background when flattening an image that is being converted to a format that does not support transparency (e.g. jpeg). Providing a value for background on an <Image /> component, or passing it to the getImage() helper, will flatten images using that color instead.

    This is especially useful when the requested output format doesn't support an alpha channel (e.g. jpeg) and can't support transparent backgrounds.

    ---
    import { Image } from 'astro:assets';
    ---
    
    <Image
      src="/transparent.png"
      alt="A JPEG with a white background!"
      format="jpeg"
      background="#ffffff"
    />
    

    See more about this new property in the image reference docs

  • #​15015 54f6006 Thanks @​tony! - Adds optional placement config option for the dev toolbar.

    You can now configure the default toolbar position ('bottom-left', 'bottom-center', or 'bottom-right') via devToolbar.placement in your Astro config. This option is helpful for sites with UI elements (chat widgets, cookie banners) that are consistently obscured by the toolbar in the dev environment.

    You can set a project default that is consistent across environments (e.g. dev machines, browser instances, team members):

    // astro.config.mjs
    export default defineConfig({
      devToolbar: {
        placement: 'bottom-left',
      },
    });
    

    User preferences from the toolbar UI (stored in localStorage) still take priority, so this setting can be overridden in individual situations as necessary.

v5.16.16

Compare Source

Patch Changes

v5.16.15

Compare Source

Patch Changes
  • #​15286 0aafc83 Thanks @​florian-lefebvre! - Fixes a case where font providers provided as class instances may not work when using the experimental Fonts API. It affected the local provider

v5.16.14

Compare Source

Patch Changes
  • #​15213 c775fce Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Updates how the local provider must be used when using the experimental Fonts API

    Previously, there were 2 kinds of font providers: remote and local.

    Font providers are now unified. If you are using the local provider, the process for configuring local fonts must be updated:

    -import { defineConfig } from "astro/config";
    +import { defineConfig, fontProviders } from "astro/config";
    
    export default defineConfig({
        experimental: {
            fonts: [{
                name: "Custom",
                cssVariable: "--font-custom",
    -            provider: "local",
    +            provider: fontProviders.local(),
    +            options: {
                variants: [
                    {
                        weight: 400,
                        style: "normal",
                        src: ["./src/assets/fonts/custom-400.woff2"]
                    },
                    {
                        weight: 700,
                        style: "normal",
                        src: ["./src/assets/fonts/custom-700.woff2"]
                    }
                    // ...
                ]
    +            }
            }]
        }
    });
    

    Once configured, there is no change to using local fonts in your project. However, you should inspect your deployed site to confirm that your new font configuration is being applied.

    See the experimental Fonts API docs for more information.

  • #​15213 c775fce Thanks @​florian-lefebvre! - Exposes root on FontProvider init() context

    When building a custom FontProvider for the experimental Fonts API, the init() method receives a context. This context now exposes a root URL, useful for resolving local files:

    import type { FontProvider } from "astro";
    
    export function registryFontProvider(): FontProvider {
      return {
        // ...
    -    init: async ({ storage }) => {
    +    init: async ({ storage, root }) => {
            // ...
        },
      };
    }
    
  • #​15185 edabeaa Thanks @​EricGrill! - Add .vercel to .gitignore when adding the Vercel adapter via astro add vercel

v5.16.13

Compare Source

Patch Changes
  • #​15182 cb60ee1 Thanks @​florian-lefebvre! - Adds a new getFontBuffer() method to retrieve font file buffers when using the experimental Fonts API

    The getFontData() helper function from astro:assets was introduced in 5.14.0 to provide access to font family data for use outside of Astro. One of the goals of this API was to be able to retrieve buffers using URLs.

    However, it turned out to be impactical and even impossible during prerendering.

    Astro now exports a new getFontBuffer() helper function from astro:assets to retrieve font file buffers from URL returned by getFontData(). For example, when using satori to generate OpenGraph images:

    // src/pages/og.png.ts
    
    import type{ APIRoute } from "astro"
    -import { getFontData } from "astro:assets"
    +import { getFontData, getFontBuffer } from "astro:assets"
    import satori from "satori"
    
    export const GET: APIRoute = (context) => {
      const data = getFontData("--font-roboto")
    
      const svg = await satori(
        <div style={{ color: "black" }}>hello, world</div>,
        {
          width: 600,
          height: 400,
          fonts: [
            {
              name: "Roboto",
    -          data: await fetch(new URL(data[0].src[0].url, context.url.origin)).then(res => res.arrayBuffer()),
    +          data: await getFontBuffer(data[0].src[0].url),
              weight: 400,
              style: "normal",
            },
          ],
        },
      )
    
      // ...
    }
    

    See the experimental Fonts API documentation for more information.

v5.16.12

Compare Source

Patch Changes
  • #​15175 47ae148 Thanks @​florian-lefebvre! - Allows experimental Font providers to specify family options

    Previously, an Astro FontProvider could only accept options at the provider level when called. That could result in weird data structures for family-specific options.

    Astro FontProviders can now declare family-specific options, by specifying a generic:

    // font-provider.ts
    import type { FontProvider } from "astro";
    import { retrieveFonts, type Fonts } from "./utils.js",
    
    interface Config {
      token: string;
    }
    
    +interface FamilyOptions {
    +    minimal?: boolean;
    +}
    
    -export function registryFontProvider(config: Config): FontProvider {
    +export function registryFontProvider(config: Config): FontProvider<FamilyOptions> {
      let data: Fonts = {}
    
      return {
        name: "registry",
        config,
        init: async () => {
          data = await retrieveFonts(token);
        },
        listFonts: () => {
          return Object.keys(data);
        },
    -    resolveFont: ({ familyName, ...rest }) => {
    +    // options is typed as FamilyOptions
    +    resolveFont: ({ familyName, options, ...rest }) => {
          const fonts = data[familyName];
          if (fonts) {
            return { fonts };
          }
          return undefined;
        },
      };
    }
    

    Once the font provider is registered in the Astro config, types are automatically inferred:

    // astro.config.ts
    import { defineConfig } from "astro/config";
    import { registryFontProvider } from "./font-provider";
    
    export default defineConfig({
        experimental: {
            fonts: [{
                provider: registryFontProvider({
                  token: "..."
                }),
                name: "Custom",
                cssVariable: "--font-custom",
    +            options: {
    +                minimal: true
    +            }
            }]
        }
    });
    
  • #​15175 47ae148 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Updates how options are passed to the Google and Google Icons font providers when using the experimental Fonts API

    Previously, the Google and Google Icons font providers accepted options that were specific to given font families.

    These options must now be set using the options property instead. For example using the Google provider:

    import { defineConfig, fontProviders } from "astro/config";
    
    export default defineConfig({
        experimental: {
            fonts: [{
                name: 'Inter',
                cssVariable: '--astro-font-inter',
                weights: ['300 900'],
    -            provider: fontProviders.google({
    -                experimental: {
    -                    variableAxis: {
    -                        Inter: { opsz: ['14..32'] }
    -                    }
    -                }
    -            }),
    +            provider: fontProviders.google(),
    +            options: {
    +                experimental: {
    +                    variableAxis: { opsz: ['14..32'] }
    +                }
    +            }
            }]
        }
    })
    
  • #​15200 c0595b3 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Removes getFontData() exported from astro:assets with fontData when using the experimental Fonts API

    Accessing font data can be useful for advanced use cases, such as generating meta tags or Open Graph images. Before, we exposed a getFontData() helper function to retrieve the font data for a given cssVariable. That was however limiting for programmatic usages that need to access all font data.

    The getFontData() helper function is removed and replaced by a new fontData object:

    -import { getFontData } from "astro:assets";
    -const data = getFontData("--font-roboto")
    
    +import { fontData } from "astro:assets";
    +const data = fontData["--font-roboto"]
    

    We may reintroduce getFontData() later on for a more friendly DX, based on your feedback.

  • #​15254 8d84b30 Thanks @​lamalex! - Fixes CSS assetsPrefix with remote URLs incorrectly prepending a forward slash

    When using build.assetsPrefix with a remote URL (e.g., https://cdn.example.com) for CSS assets, the generated <link> elements were incorrectly getting a / prepended to the full URL, resulting in invalid URLs like /https://cdn.example.com/assets/style.css.

    This fix checks if the stylesheet link is a remote URL before prepending the forward slash.

  • #​15178 731f52d Thanks @​kedarvartak! - Fixes an issue where stopping the dev server with q+enter incorrectly created a dist folder and copied font files when using the experimental Fonts API

  • #​15230 3da6272 Thanks @​rahuld109! - Fixes greedy regex in error message markdown rendering that caused link syntax examples to capture extra characters

  • #​15253 2a6315a Thanks @​matthewp! - Fixes hydration for React components nested inside HTML elements in MDX files

  • #​15227 9a609f4 Thanks @​matthewp! - Fixes styles not being included for conditionally rendered Svelte 5 components in production builds

  • #​14607 ee52160 Thanks @​simensfo! - Reintroduces css deduplication for hydrated client components. Ensures assets already added to a client chunk are not flagged as orphaned

v5.16.11

Compare Source

Patch Changes

v5.16.10

Compare Source

Patch Changes
  • 2fa19c4 - Improved error handling in the rendering phase

    Added defensive validation in App.render() and #renderError() to provide a descriptive error message when a route module doesn't have a valid page function.

  • #​15199 d8e64ef Thanks @​ArmandPhilippot! - Fixes the links to Astro Docs so that they match the current docs structure.

  • #​15169 b803d8b Thanks @​rururux! - fix: fix image 500 error when moving dist directory in standalone Node

  • #​14622 9b35c62 Thanks @​aprici7y! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured

  • #​15219 43df4ce Thanks @​matthewp! - Upgrades the diff package to v8

v5.16.9

Compare Source

Patch Changes
  • #​15174 37ab65a Thanks @​florian-lefebvre! - Adds Google Icons to built-in font providers

    To start using it, access it on fontProviders:

    import { defineConfig, fontProviders } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        fonts: [
          {
            name: 'Material Symbols Outlined',
            provider: fontProviders.googleicons(),
            cssVariable: '--font-material',
          },
        ],
      },
    });
    
  • #​15150 a77c4f4 Thanks @​matthewp! - Fixes hydration for framework components inside MDX when using Astro.slots.render()

    Previously, when multiple framework components with client:* directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts.

  • #​15130 9b726c4 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes how font providers are implemented with updates to the FontProvider type

    This is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on unifont types. All of Astro's built-in font providers have been updated to reflect this new type, and can be configured as before. However, using third-party unifont providers that rely on unifont types will require an update to your project code.

    Previously, an Astro FontProvider was made of a config and a runtime part. It relied directly on unifont types, which allowed a simple configuration for third-party unifont providers, but also coupled Astro's implementation to unifont, which was limiting.

    Astro's font provider implementation is now only made of a config part with dedicated hooks. This allows for the separation of config and runtime, but requires you to create a font provider object in order to use custom font providers (e.g. third-party unifont providers, or private font registeries).

What should I do?
If you were using a 3rd-party `unifont` font provider, you will now need to write an Astro `FontProvider` using it under the hood. For example:

```diff
// astro.config.ts
import { defineConfig } from "astro/config";
import { acmeProvider, type AcmeOptions } from '@&#8203;acme/unifont-provider'
+import type { FontProvider } from "astro";
+import type { InitializedProvider } from 'unifont';

+function acme(config?: AcmeOptions): FontProvider {
+	const provider = acmeProvider(config);
+	let initializedProvider: InitializedProvider | undefined;
+	return {
+		name: provider._name,
+		config,
+		async init(context) {
+			initializedProvider = await provider(context);
+		},
+		async resolveFont({ familyName, ...rest }) {
+			return await initializedProvider?.resolveFont(familyName, rest);
+		},
+		async listFonts() {
+			return await initializedProvider?.listFonts?.();
+		},
+	};
+}

export default defineConfig({
    experimental: {
        fonts: [{
-            provider: acmeProvider({ /* ... */ }),
+            provider: acme({ /* ... */ }),
            name: "Material Symbols Outlined",
            cssVariable: "--font-material"
        }]
    }
});
```
  • #​15147 9cd5b87 Thanks @​matthewp! - Fixes scripts in components not rendering when a sibling <Fragment slot="..."> exists but is unused

v5.16.8

Compare Source

Patch Changes

v5.16.7

Compare Source

Patch Changes
  • #​15122 b137946 Thanks @​florian-lefebvre! - Improves JSDoc annotations for AstroGlobal, AstroSharedContext and APIContext types

  • #​15123 3f58fa2 Thanks @​43081j! - Improves rendering performance by grouping render chunks when emitting from async iterables to avoid encoding costs

  • #​14954 7bec4bd Thanks @​volpeon! - Fixes remote images Etag header handling by disabling internal cache

  • #​15052 b2bcd5a Thanks @​Princesseuh! - Fixes images not working in development when using setups with port forwarding

  • #​15028 87b19b8 Thanks @​Princesseuh! - Fixes certain aliases not working when using images in JSON files with the content layer

  • #​15118 cfa382b Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Removes the defineAstroFontProvider() type helper.

    If you are building a custom font provider, remove any occurrence of defineAstroFontProvider() and use the FontProvider type instead:

    -import { defineAstroFontProvider } from 'astro/config';
    
    -export function myProvider() {
    -    return defineAstroFontProvider({
    -        entrypoint: new URL('./implementation.js', import.meta.url)
    -    });
    -};
    
    +import type { FontProvider } from 'astro';
    
    +export function myProvider(): FontProvider {
    +    return {
    +        entrypoint: new URL('./implementation.js', import.meta.url)
    +    },
    +}
    
  • #​15055 4e28db8 Thanks @​delucis! - Reduces Astro’s install size by around 8 MB

  • #​15088 a19140f Thanks @​martrapp! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects.

  • #​15117 b1e8e32 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Changes the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new formats configuration option to specify which font formats to download.

    Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping woff2 and woff files.

    You can now specify what font formats should be downloaded (if available). Only woff2 files are downloaded by default.

What should I do?
If you were previously relying on Astro downloading the `woff` format, you will now need to specify this explicitly with the new `formats` configuration option. Additionally, you may also specify any additional file formats to download if available:

```diff
// astro.config.mjs
import { defineConfig, fontProviders } from 'astro/config'

export default defineConfig({
    experimental: {
        fonts: [{
            name: 'Roboto',
            cssVariable: '--font-roboto',
            provider: fontProviders.google(),
+            formats: ['woff2', 'woff', 'otf']
        }]
    }
})
```

v5.16.6

Compare Source

Patch Changes

v5.16.5

Compare Source

Patch Changes
  • #​14985 c016f10 Thanks @​florian-lefebvre! - Fixes a case where JSDoc annotations wouldn't show for fonts related APIs in the Astro config

  • #​14973 ed7cc2f Thanks @​amankumarpandeyin! - Fixes performance regression and OOM errors when building medium-sized blogs with many content entries. Replaced O(n²) object spread pattern with direct mutation in generateLookupMap.

  • #​14958 70eb542 Thanks @​ascorbic! - Gives a helpful error message if a user sets output: "hybrid" in their Astro config.

    The option was removed in Astro 5, but lots of content online still references it, and LLMs often suggest it. It's not always clear that the replacement is output: "static", rather than output: "server". This change adds a helpful error message to guide humans and robots.

  • #​14901 ef53716 Thanks @​Darknab! - Updates the glob() loader to log a warning when duplicated IDs are detected

  • Updated dependencies [d8305f8]:

v5.16.4

Compare Source

Patch Changes
  • #​14940 2cf79c2 Thanks @​ematipico! - Fixes a bug where Astro didn't properly combine CSP resources from the csp configuration with those added using the runtime API (Astro.csp.insertDirective()) to form grammatically correct CSP headers

    Now Astro correctly deduplicate CSP resources. For example, if you have a global resource in the configuration file, and then you add a
    a new one using the runtime APIs.

v5.16.3

Compare Source

Patch Changes
  • #​14889 4bceeb0 Thanks @​florian-lefebvre! - Fixes actions types when using specific TypeScript configurations

  • #​14929 e0f277d Thanks @​matthewp! - Fixes authentication bypass via double URL encoding in middleware

    Prevents attackers from bypassing path-based authentication checks using multi-level URL encoding (e.g., /%2561dmin instead of /%61dmin). Pathnames are now validated after decoding to ensure no additional encoding remains.

v5.16.2

Compare Source

Patch Changes

v5.16.1

Compare Source

Patch Changes

v5.16.0

Compare Source

Minor Changes
  • #​13880 1a2ed01 Thanks @​azat-io! - Adds experimental SVGO optimization support for SVG assets

    Astro now supports automatic SVG optimization using SVGO during build time. This experimental feature helps reduce SVG file sizes while maintaining visual quality, improving your site's performance.

    To enable SVG optimization with default settings, add the following to your astro.config.mjs:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        svgo: true,
      },
    });
    

    To customize optimization, pass a SVGO configuration object:

    export default defineConfig({
      experimental: {
        svgo: {
          plugins: [
            'preset-default',
            {
              name: 'removeViewBox',
              active: false,
            },
          ],
        },
      },
    });
    

    For more information on enabling and using this feature in your project, see the experimental SVG optimization docs.

  • #​14810 2e845fe Thanks @​ascorbic! - Adds a hint for code agents to use the --yes flag to skip prompts when running astro add

  • #​14698 f42ff9b Thanks @​mauriciabad! - Adds the ActionInputSchema utility type to automatically infer the TypeScript type of an action's input based on its Zod schema

    For example, this type can be used to retrieve the input type of a form action:

    import { type ActionInputSchema, defineAction } from 'astro:actions';
    import { z } from 'astro/zod';
    
    const action = defineAction({
      accept: 'form',
      input: z.object({ name: z.string() }),
      handler: ({ name }) => ({ message: `Welcome, ${name}!` }),
    });
    
    type Schema = ActionInputSchema<typeof action>;
    // typeof z.object({ name: z.string() })
    
    type Input = z.input<Schema>;
    // { name: string }
    
  • #​14574 4356485 Thanks @​jacobdalamb! - Adds new CLI shortcuts available when running astro preview:

    • o + enter: open the site in your browser
    • q + enter: quit the preview
    • h + enter: print all available shortcuts
Patch Changes
  • #​14813 e1dd377 Thanks @​ematipico! - Removes picocolors as dependency in favor of the fork piccolore.

  • #​14609 d774306 Thanks @​florian-lefebvre! - Improves astro info

  • #​14796 c29a785 Thanks @​florian-lefebvre! - BREAKING CHANGE to the experimental Fonts API only

    Updates the default subsets to ["latin"]

    Subsets have been a common source of confusion: they caused a lot of files to be downloaded by default. You now have to manually pick extra subsets.

    Review your Astro config and update subsets if you need, for example if you need greek characters:

    import { defineConfig, fontProviders } from "astro/config"
    
    export default defineConfig({
        experimental: {
            fonts: [{
                name: "Roboto",
                cssVariable: "--font-roboto",
                provider: fontProviders.google(),
    +            subsets: ["latin", "greek"]
            }]
        }
    })
    

v5.15.9

Compare Source

Patch Changes
  • #​14786 758a891 Thanks @​mef! - Add handling of invalid encrypted props and slots in server islands.

  • #​14783 504958f Thanks @​florian-lefebvre! - Improves the experimental Fonts API build log to show the number of downloaded files. This can help spotting excessive downloading because of misconfiguration

  • #​14791 9e9c528 Thanks @​Princesseuh! - Changes the remote protocol checks for images to require explicit authorization in order to use data URIs.

    In order to allow data URIs for remote images, you will need to update your astro.config.mjs file to include the following configuration:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      images: {
        remotePatterns: [
          {
            protocol: 'data',
          },
        ],
      },
    });
    
  • #​14787 0f75f6b Thanks @​matthewp! - Fixes wildcard hostname pattern matching to correctly reject hostnames without dots

    Previously, hostnames like localhost or other single-part names would incorrectly match patterns like *.example.com. The wildcard matching logic has been corrected to ensure that only valid subdomains matching the pattern are accepted.

  • #​14776 3537876 Thanks @​ktym4a! - Fixes the behavior of passthroughImageService so it does not generate webp.

  • Updated dependencies [9e9c528, 0f75f6b]:

v5.15.8

Compare Source

Patch Changes
  • #​14772 00c579a Thanks @​matthewp! - Improves the security of Server Islands slots by encrypting them before transmission to the browser, matching the security model used for props. This improves the integrity of slot content and prevents injection attacks, even when component templates don't explicitly support slots.

    Slots continue to work as expected for normal usage—this change has no breaking changes for legitimate requests.

  • #​14771 6f80081 Thanks @​matthewp! - Fix middleware pathname matching by normalizing URL-encoded paths

    Middleware now receives normalized pathname values, ensuring that encoded paths like /%61dmin are properly decoded to /admin before middleware checks. This prevents potential security issues where middleware checks might be bypassed through URL encoding.

v5.15.7

Compare Source

Patch Changes

v5.15.6

Compare Source

Patch Changes
  • #​14751 18c55e1 Thanks @​delucis! - Fixes hydration of client components when running the dev server and using a barrel file that re-exports both Astro and UI framework components.

  • #​14750 35122c2 Thanks @​florian-lefebvre! - Updates the experimental Fonts API to log a warning if families with a conflicting cssVariable are provided

  • #​14737 74c8852 Thanks @​Arecsu! - Fixes an error when using transition:persist with components that use declarative Shadow DOM. Astro now avoids re-attaching a shadow root if one already exists, preventing "Unable to re-attach to existing ShadowDOM" navigation errors.

  • #​14750 35122c2 Thanks @​florian-lefebvre! - Updates the experimental Fonts API to allow for more granular configuration of remote font families

    A font family is defined by a combination of properties such as weights and styles (e.g. weights: [500, 600] and styles: ["normal", "bold"]), but you may want to download only certain combinations of these.

    For greater control over which font files are downloaded, you can specify the same font (ie. with the same cssVariable, name, and provider properties) multiple times with different combinations. Astro will merge the results and download only the required files. For example, it is possible to download normal 500 and 600 while downloading only italic 500:

    // astro.config.mjs
    import { defineConfig, fontProviders } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        fonts: [
          {
            name: 'Roboto',
            cssVariable: '--roboto',
            provider: fontProviders.google(),
            weights: [500, 600],
            styles: ['normal'],
          },
          {
            name: 'Roboto',
            cssVariable: '--roboto',
            provider: fontProviders.google(),
            weights: [500],
            styles: ['italic'],
          },
        ],
      },
    });
    

v5.15.5

Compare Source

Patch Changes
  • #​14712 91780cf Thanks @​florian-lefebvre! - Fixes a case where build's process.env would be inlined in the server output

  • #​14713 666d5a7 Thanks @​florian-lefebvre! - Improves fallbacks generation when using the experimental Fonts API

  • #​14743 dafbb1b Thanks @​matthewp! - Improves X-Forwarded header validation to prevent cache poisoning and header injection attacks. Now properly validates X-Forwarded-Proto, X-Forwarded-Host, and X-Forwarded-Port headers against configured allowedDomains patterns, rejecting malformed or suspicious values. This is especially important when running behind a reverse proxy or load balancer.

v5.15.4

Compare Source

Patch Changes
  • #​14703 970ac0f Thanks @​ArmandPhilippot! - Adds missing documentation for some public utilities exported from astro:i18n.

  • #​14715 3d55c5d Thanks @​ascorbic! - Adds support for client hydration in getContainerRenderer()

    The getContainerRenderer() function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually call container.addClientRenderer() with the appropriate client renderer entrypoint.

    See the container-with-vitest demo for a usage example, and the Container API documentation for more information on using framework components with the experimental Container API.

  • #​14711 a4d284d Thanks @​deining! - Fixes typos in documenting our error messages and public APIs.

  • #​14701 9be54c7 Thanks @​florian-lefebvre! - Fixes a case where the experimental Fonts API would filter available font files too aggressively, which could prevent the download of woff files when using the google provider

v5.15.3

Compare Source

Patch Changes
  • #​14627 b368de0 Thanks @​matthewp! - Fixes skew protection support for images and font URLs

    Adapter-level query parameters (assetQueryParams) are now applied to all image and font asset URLs, including:

    • Dynamic optimized images via /_image endpoint
    • Static optimized image files
    • Font preload tags and font requests when using the experimental Fonts API
  • #​14631 3ad33f9 Thanks @​KurtGokhan! - Adds the astro/jsx-dev-runtime export as an alias for astro/jsx-runtime

v5.15.2

Compare Source

Patch Changes
  • #​14623 c5fe295 Thanks @​delucis! - Fixes a leak of server runtime code when importing SVGs in client-side code. Previously, when importing an SVG file in client code, Astro could end up adding code for rendering SVGs on the server to the client bundle.

  • #​14621 e3175d9 Thanks @​GameRoMan! - Updates vite version to fix CVE

anomalyco/sst (sst)

v3.19.3

Compare Source

Changelog

v3.19.2

Compare Source

Changelog

v3.19.1

Compare Source

Changelog

v3.19.0

Compare Source

Changelog

v3.18.12

Compare Source

Changelog

v3.18.11

Compare Source

Changelog

v3.18.10

Compare Source

Changelog

v3.18.9

Compare Source

Changelog

v3.18.8

Compare Source

Changelog

  • 1970edb Update Cloudflare provider

v3.18.7

Compare Source

Changelog

v3.18.6

Compare Source

Changelog

  • 40dd637 fix(router): handle trailing-slash routes in path segment boundary check (#​6413)

v3.18.5

Compare Source

Changelog

v3.18.4

Compare Source

Changelog

v3.18.3

Compare Source

Changelog

v3.18.2

Compare Source

Changelog

v3.18.1

Compare Source

Changelog

v3.18.0

Compare Source

Changelog

v3.17.40

Compare Source

Changelog

  • f917793 fix(Router): include x-forwarded-host in cache key to fix cross-domain content mismatch (#​6384)

v3.17.39

Compare Source

Changelog

  • c6c1b50 Handle failed type assertions gracefully (#​6354)
  • c3bd046 Handle imported VPC and EIPs for tunnel (#​6341)
  • 3ea3ad6 fix(ecs): upgrade docker-build provider to fix ECR image deletion (#​6378)
  • 1b06050 fix: Component resource sending input args to pulumi breaks some sst components (#​6361)
  • ffb33ba remove ssr site duplicated lambda permission statementId (#​6350)

v3.17.38

Compare Source

Changelog

v3.17.37

Compare Source

Changelog

  • 8b60ff4 fix(Vpc): use self.natInstances in registerOutputs to fix Vpc.get() with bastion (#​6347)

v3.17.36

Compare Source

Changelog

  • 4d1e3c5 Fix AWS StaticSite file upload order (#​6289)
  • 8541338 Fix Cloudflare StaticSite file upload order (#​6290)
  • 36b4993 feat: add options to restrict ssr lambda functions to cloudfront-only access using OAC (#​5581)

v3.17.35

Compare Source

Changelog

v3.17.34

Compare Source

Changelog

v3.17.25

Compare Source

Changelog

v3.17.24

Compare Source

Changelog

v3.17.23

Compare Source

Changelog

  • 722e70a cf: add namespace id to link properties

v3.17.22

Compare Source

Changelog


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "on the first day of the month"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@tailwindcss/vite](https://tailwindcss.com) ([source](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite)) | [`4.1.16` → `4.3.3`](https://renovatebot.com/diffs/npm/@tailwindcss%2fvite/4.1.16/4.3.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@tailwindcss%2fvite/4.3.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tailwindcss%2fvite/4.1.16/4.3.3?slim=true) | | [astro](https://astro.build) ([source](https://github.com/withastro/astro/tree/HEAD/packages/astro)) | [`5.15.1` → `5.18.2`](https://renovatebot.com/diffs/npm/astro/5.15.1/5.18.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/astro/5.18.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/astro/5.15.1/5.18.2?slim=true) | | [sst](https://github.com/anomalyco/sst) | [`3.17.21` → `3.19.3`](https://renovatebot.com/diffs/npm/sst/3.17.21/3.19.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/sst/3.19.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sst/3.17.21/3.19.3?slim=true) | | [tailwindcss](https://tailwindcss.com) ([source](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss)) | [`4.1.16` → `4.3.3`](https://renovatebot.com/diffs/npm/tailwindcss/4.1.16/4.3.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/tailwindcss/4.3.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tailwindcss/4.1.16/4.3.3?slim=true) | --- ### Release Notes <details> <summary>tailwindlabs/tailwindcss (@&#8203;tailwindcss/vite)</summary> ### [`v4.3.3`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#433---2026-07-16) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.3.2...v4.3.3) ##### Fixed - Support `--watch --poll[=ms]` in `@tailwindcss/cli` when filesystem events are unreliable or unavailable ([#&#8203;20297](https://github.com/tailwindlabs/tailwindcss/pull/20297)) - Canonicalization: match arbitrary hex colors against theme colors case-insensitively (e.g. `bg-[#fff]` and `bg-[#FFF]` → `bg-white`) ([#&#8203;20298](https://github.com/tailwindlabs/tailwindcss/pull/20298)) - Prevent Preflight from overriding Firefox's native `iframe:focus-visible` outline styles ([#&#8203;20292](https://github.com/tailwindlabs/tailwindcss/pull/20292)) - Ensure `theme('colors.foo')` in JS plugins resolves correctly when both `--color-foo` and `--color-foo-bar` exist ([#&#8203;20299](https://github.com/tailwindlabs/tailwindcss/pull/20299)) - Ensure fractional opacity modifiers work with named shadow sizes like `shadow-sm/12.5`, `text-shadow-sm/12.5`, `drop-shadow-sm/12.5`, and `inset-shadow-sm/12.5` ([#&#8203;20302](https://github.com/tailwindlabs/tailwindcss/pull/20302)) - Parse selectors like `[data-foo]div` as two selectors instead of one ([#&#8203;20303](https://github.com/tailwindlabs/tailwindcss/pull/20303)) - Ensure `@tailwindcss/postcss` rebuilds when a preprocessor like Sass changes the input CSS without changing the input file on disk ([#&#8203;20310](https://github.com/tailwindlabs/tailwindcss/pull/20310)) - Ensure CSS nesting is handled even when Lightning CSS isn't run, such as in `@tailwindcss/browser` and Tailwind Play ([#&#8203;20124](https://github.com/tailwindlabs/tailwindcss/pull/20124)) - Prevent achromatic theme colors from shifting hue when mixed in polar color spaces like `oklch` ([#&#8203;20314](https://github.com/tailwindlabs/tailwindcss/pull/20314)) - Ensure `--spacing(0)` is optimized to `0px` instead of `0` so it remains a `<length>` when used in `calc(…)` ([#&#8203;20319](https://github.com/tailwindlabs/tailwindcss/pull/20319)) - Load `@parcel/watcher` only when needed in `@tailwindcss/cli --watch` mode, so one-off builds and `--watch --poll` work when `@parcel/watcher` can't be loaded ([#&#8203;20325](https://github.com/tailwindlabs/tailwindcss/pull/20325)) - Use explicit platform fonts instead of `system-ui` and `ui-sans-serif` so CJK text respects the page's `lang` attribute on Windows ([#&#8203;20318](https://github.com/tailwindlabs/tailwindcss/pull/20318)) - Prevent `@tailwindcss/upgrade` from rewriting ignored files when run from a subdirectory ([#&#8203;20329](https://github.com/tailwindlabs/tailwindcss/pull/20329)) - Ensure earlier `@source` rules pointing to nested files are scanned when later `@source` rules point to files in parent folders ([#&#8203;20335](https://github.com/tailwindlabs/tailwindcss/pull/20335)) - Prevent `@tailwindcss/vite` from triggering full page reloads when scanned files are processed by Vite but haven't been loaded as modules yet ([#&#8203;20336](https://github.com/tailwindlabs/tailwindcss/pull/20336)) ### [`v4.3.2`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#432---2026-06-26) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.3.1...v4.3.2) ##### Fixed - Support bare spacing values for `auto-rows-*` and `auto-cols-*` utilities (e.g. `auto-rows-12` and `auto-cols-16`) ([#&#8203;20229](https://github.com/tailwindlabs/tailwindcss/pull/20229)) - Prevent `@tailwindcss/cli` in `--watch` mode from crashing on Windows when `@source` points to a directory that doesn't exist ([#&#8203;20242](https://github.com/tailwindlabs/tailwindcss/pull/20242)) - Prevent `@tailwindcss/vite` from crashing in Deno v2.8.x when `context.parentURL` is not a valid URL ([#&#8203;20245](https://github.com/tailwindlabs/tailwindcss/pull/20245)) - Ensure `@tailwindcss/cli` in `--watch` mode rebuilds when the input CSS file changes in an ignored directory ([#&#8203;20246](https://github.com/tailwindlabs/tailwindcss/pull/20246)) - Allow `@variant` rules used in `addBase(…)` to use custom variants defined later ([#&#8203;20247](https://github.com/tailwindlabs/tailwindcss/pull/20247)) - Prevent `@tailwindcss/vite` from crashing during HMR when scanned files or directories are deleted ([#&#8203;20259](https://github.com/tailwindlabs/tailwindcss/pull/20259)) - Generate `font-size` instead of `color` declarations for `text-[--spacing(…)]` ([#&#8203;20260](https://github.com/tailwindlabs/tailwindcss/pull/20260)) - Prevent `@source` patterns from scanning unrelated sibling files and folders ([#&#8203;20263](https://github.com/tailwindlabs/tailwindcss/pull/20263)) - Extract class candidates adjacent to Template Toolkit delimiters like `%]…[%` in `.tt`, `.tt2`, and `.tx` files ([#&#8203;20269](https://github.com/tailwindlabs/tailwindcss/pull/20269)) - Extract class candidates from conditional Maud syntax like `p.text-black[condition]` ([#&#8203;20269](https://github.com/tailwindlabs/tailwindcss/pull/20269)) - Prevent `@position-try` rules from triggering unknown at-rule warnings when optimizing CSS ([#&#8203;20277](https://github.com/tailwindlabs/tailwindcss/pull/20277)) - Support class suggestions for named opacity modifiers from `--opacity` theme values ([#&#8203;20287](https://github.com/tailwindlabs/tailwindcss/pull/20287)) - Prevent type errors in `@tailwindcss/postcss` when used with newer PostCSS patch releases ([#&#8203;20289](https://github.com/tailwindlabs/tailwindcss/pull/20289)) ### [`v4.3.1`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#431---2026-06-12) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.3.0...v4.3.1) ##### Added - Add `--silent` option to suppress output in `@tailwindcss/cli` ([#&#8203;20100](https://github.com/tailwindlabs/tailwindcss/pull/20100)) ##### Fixed - Remove deprecation warnings by using `Module#registerHooks` instead of `Module#register` on Node 26+ ([#&#8203;20028](https://github.com/tailwindlabs/tailwindcss/pull/20028)) - Canonicalization: don't crash when plugin utilities throw for unsupported values ([#&#8203;20052](https://github.com/tailwindlabs/tailwindcss/pull/20052)) - Allow `@apply` to be used with CSS mixins ([#&#8203;19427](https://github.com/tailwindlabs/tailwindcss/pull/19427)) - Ensure `not-*` correctly negates `@container` queries, including `style(…)` queries ([#&#8203;20059](https://github.com/tailwindlabs/tailwindcss/pull/20059)) - Ensure `drop-shadow-*` color utilities work with custom shadow values containing `calc(…)` ([#&#8203;20080](https://github.com/tailwindlabs/tailwindcss/pull/20080)) - Fix 'Sourcemap is likely to be incorrect' warnings when using `@tailwindcss/vite` ([#&#8203;20103](https://github.com/tailwindlabs/tailwindcss/pull/20103)) - Ensure `@tailwindcss/webpack` can be installed in Rspack projects without requiring `webpack` as a peer dependency ([#&#8203;20027](https://github.com/tailwindlabs/tailwindcss/pull/20027)) - Canonicalization: don't suggest invalid `calc(…)` expressions (e.g. `px-[calc(1rem+0px)]` → `px-[calc(1rem+0)]`) ([#&#8203;20127](https://github.com/tailwindlabs/tailwindcss/pull/20127)) - Canonicalization: avoid suggesting large spacing-scale values for arbitrary lengths (e.g. `left-[99999px]` → `left-[99999px]`, not `left-24999.75`) ([#&#8203;20130](https://github.com/tailwindlabs/tailwindcss/pull/20130)) - Ensure `@tailwindcss/cli` in `--watch` mode recovers when a tracked dependency is deleted and restored ([#&#8203;20137](https://github.com/tailwindlabs/tailwindcss/pull/20137)) - Ensure standalone `@tailwindcss/cli` binaries are ignored when scanning for class candidates ([#&#8203;20139](https://github.com/tailwindlabs/tailwindcss/pull/20139)) - Ensure class candidates are extracted from Twig `addClass(…)` and `removeClass(…)` calls ([#&#8203;20198](https://github.com/tailwindlabs/tailwindcss/pull/20198)) - Don't crash in the Ruby or Vue preprocessors when scanning files containing invalid UTF-8 bytes ([#&#8203;19588](https://github.com/tailwindlabs/tailwindcss/pull/19588)) - Allow `@variant` to be used inside `addBase` ([#&#8203;19480](https://github.com/tailwindlabs/tailwindcss/pull/19480)) - Ensure `@source` globs with symlinks are preserved ([#&#8203;20203](https://github.com/tailwindlabs/tailwindcss/pull/20203)) - Ensure later `@source` rules can re-include files excluded by earlier `@source not` rules ([#&#8203;20203](https://github.com/tailwindlabs/tailwindcss/pull/20203)) - Upgrade: don't migrate empty class rules to invalid `@utility` rules ([#&#8203;20205](https://github.com/tailwindlabs/tailwindcss/pull/20205)) - Ensure transitions between `inset-shadow-none` and other inset shadows work correctly ([#&#8203;20208](https://github.com/tailwindlabs/tailwindcss/pull/20208)) - Ensure explicitly referenced `@source` directories are scanned even when ignored by git ([#&#8203;20214](https://github.com/tailwindlabs/tailwindcss/pull/20214)) - Ensure `@source` globs ending in `**/*` preserve dynamic path segments to avoid scanning too many files ([#&#8203;20217](https://github.com/tailwindlabs/tailwindcss/pull/20217)) - Canonicalization: don't fold `calc(…)` divisions when the result would require high precision (e.g. `w-[calc(100%/3.5)]` → `w-[calc(100%/3.5)]`, not `w-[28.571428571428573%]`) ([#&#8203;20221](https://github.com/tailwindlabs/tailwindcss/pull/20221)) - Serve ESM type declarations to ESM importers of `@tailwindcss/postcss` ([#&#8203;20228](https://github.com/tailwindlabs/tailwindcss/pull/20228)) ##### Changed - Generate `0` instead of `calc(var(--spacing) * 0)` for spacing utilities like `m-0` and `left-0` ([#&#8203;20196](https://github.com/tailwindlabs/tailwindcss/pull/20196)) - Generate `var(--spacing)` instead of `calc(var(--spacing) * 1)` for spacing utilities like `m-1` and `left-1` ([#&#8203;20196](https://github.com/tailwindlabs/tailwindcss/pull/20196)) ### [`v4.3.0`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#430---2026-05-08) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.2.4...v4.3.0) ##### Added - Add `@container-size` utility ([#&#8203;18901](https://github.com/tailwindlabs/tailwindcss/pull/18901)) - Add `scrollbar-{auto,thin,none}` utilities for `scrollbar-width`, and `scrollbar-thumb-*` / `scrollbar-track-*` color utilities for `scrollbar-color` ([#&#8203;19981](https://github.com/tailwindlabs/tailwindcss/pull/19981), [#&#8203;20019](https://github.com/tailwindlabs/tailwindcss/pull/20019)) - Add `scrollbar-gutter-*` utilities ([#&#8203;20018](https://github.com/tailwindlabs/tailwindcss/pull/20018)) - Add `zoom-*` utilities ([#&#8203;20020](https://github.com/tailwindlabs/tailwindcss/pull/20020)) - Add `tab-*` utilities ([#&#8203;20022](https://github.com/tailwindlabs/tailwindcss/pull/20022)) - Allow using `@variant` with stacked variants (e.g. `@variant hover:focus { … }`) ([#&#8203;19996](https://github.com/tailwindlabs/tailwindcss/pull/19996)) - Allow using `@variant` with compound variants (e.g. `@variant hover, focus { … }`) ([#&#8203;19996](https://github.com/tailwindlabs/tailwindcss/pull/19996)) - Support `--default(…)` in `--value(…)` and `--modifier(…)` for functional `@utility` definitions ([#&#8203;19989](https://github.com/tailwindlabs/tailwindcss/pull/19989)) ##### Fixed - Ensure `@plugin` resolves package JavaScript entries instead of browser CSS entries when using `@tailwindcss/vite` ([#&#8203;19949](https://github.com/tailwindlabs/tailwindcss/pull/19949)) - Fix relative `@import` and `@plugin` paths resolving from the wrong directory when using `@tailwindcss/vite` ([#&#8203;19965](https://github.com/tailwindlabs/tailwindcss/pull/19965)) - Ensure CSS files containing `@variant` are processed by `@tailwindcss/vite` ([#&#8203;19966](https://github.com/tailwindlabs/tailwindcss/pull/19966)) - Resolve imports relative to `base` when `result.opts.from` is not provided when using `@tailwindcss/postcss` ([#&#8203;19980](https://github.com/tailwindlabs/tailwindcss/pull/19980)) - Canonicalization: preserve significant `_` whitespace in arbitrary values ([#&#8203;19986](https://github.com/tailwindlabs/tailwindcss/pull/19986)) - Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. `w-[calc(100%---spacing(60))]` → `w-[calc(100%-(--spacing(60)))]`) ([#&#8203;19986](https://github.com/tailwindlabs/tailwindcss/pull/19986)) - Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. `-mt-[20in]` → `mt-[-20in]`, not `mt-[-1920px]`) ([#&#8203;19988](https://github.com/tailwindlabs/tailwindcss/pull/19988)) - Canonicalization: migrate arbitrary `:has()` variants from `[&:has(…)]` to `has-[…]` ([#&#8203;19991](https://github.com/tailwindlabs/tailwindcss/pull/19991)) - Upgrade: don’t migrate inline `style` attributes (e.g. `style="flex-grow: 1"` → `style="flex-grow: 1"`, not `style="grow: 1"`) ([#&#8203;19918](https://github.com/tailwindlabs/tailwindcss/pull/19918)) - Allow multiple `@utility` definitions with the same name but different value types ([#&#8203;19777](https://github.com/tailwindlabs/tailwindcss/pull/19777)) - Export missing `PluginWithConfig` type from `tailwindcss/plugin` to fix errors when inferring plugin config types ([#&#8203;19707](https://github.com/tailwindlabs/tailwindcss/pull/19707)) - Ensure `start` and `end` legacy utilities without values do not generate CSS ([#&#8203;20003](https://github.com/tailwindlabs/tailwindcss/pull/20003)) - Ensure `--value(…)` is required in functional `@utility` definitions ([#&#8203;20005](https://github.com/tailwindlabs/tailwindcss/pull/20005)) - Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. `-left-[(var(--a)+var(--b))]`) ([#&#8203;20011](https://github.com/tailwindlabs/tailwindcss/pull/20011)) ### [`v4.2.4`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#424---2026-04-21) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.2.3...v4.2.4) ##### Fixed - Ensure imports in `@import` and `@plugin` still resolve correctly when using Vite aliases in `@tailwindcss/vite` ([#&#8203;19947](https://github.com/tailwindlabs/tailwindcss/pull/19947)) ### [`v4.2.3`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#423---2026-04-20) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.2.2...v4.2.3) ##### Fixed - Canonicalization: improve canonicalization for `tracking-*` utilities by preferring non-negative utilities (e.g. `-tracking-tighter` → `tracking-wider`) ([#&#8203;19827](https://github.com/tailwindlabs/tailwindcss/pull/19827)) - Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) ([#&#8203;19829](https://github.com/tailwindlabs/tailwindcss/pull/19829)) - Ensure query params in imports are considered unique resources when using `@tailwindcss/webpack` ([#&#8203;19723](https://github.com/tailwindlabs/tailwindcss/pull/19723)) - Canonicalization: collapse arbitrary values into shorthand utilities (e.g. `px-[1.2rem] py-[1.2rem]` → `p-[1.2rem]`) ([#&#8203;19837](https://github.com/tailwindlabs/tailwindcss/pull/19837)) - Canonicalization: collapse `border-{t,b}-*` into `border-y-*`, `border-{l,r}-*` into `border-x-*`, and `border-{t,r,b,l}-*` into `border-*` ([#&#8203;19842](https://github.com/tailwindlabs/tailwindcss/pull/19842)) - Canonicalization: collapse `scroll-m{t,b}-*` into `scroll-my-*`, `scroll-m{l,r}-*` into `scroll-mx-*`, and `scroll-m{t,r,b,l}-*` into `scroll-m-*` ([#&#8203;19842](https://github.com/tailwindlabs/tailwindcss/pull/19842)) - Canonicalization: collapse `scroll-p{t,b}-*` into `scroll-py-*`, `scroll-p{l,r}-*` into `scroll-px-*`, and `scroll-p{t,r,b,l}-*` into `scroll-p-*` ([#&#8203;19842](https://github.com/tailwindlabs/tailwindcss/pull/19842)) - Canonicalization: collapse `overflow-{x,y}-*` into `overflow-*` ([#&#8203;19842](https://github.com/tailwindlabs/tailwindcss/pull/19842)) - Canonicalization: collapse `overscroll-{x,y}-*` into `overscroll-*` ([#&#8203;19842](https://github.com/tailwindlabs/tailwindcss/pull/19842)) - Read from `--placeholder-color` instead of `--background-color` for `placeholder-*` utilities ([#&#8203;19843](https://github.com/tailwindlabs/tailwindcss/pull/19843)) - Upgrade: ensure files are not emptied out when killing the upgrade process while it's running ([#&#8203;19846](https://github.com/tailwindlabs/tailwindcss/pull/19846)) - Upgrade: use `config.content` when migrating from Tailwind CSS v3 to Tailwind CSS v4 ([#&#8203;19846](https://github.com/tailwindlabs/tailwindcss/pull/19846)) - Upgrade: never migrate files that are ignored by git ([#&#8203;19846](https://github.com/tailwindlabs/tailwindcss/pull/19846)) - Add `.env` and `.env.*` to default ignored content files ([#&#8203;19846](https://github.com/tailwindlabs/tailwindcss/pull/19846)) - Canonicalization: migrate `overflow-ellipsis` into `text-ellipsis` ([#&#8203;19849](https://github.com/tailwindlabs/tailwindcss/pull/19849)) - Canonicalization: migrate `start-full` → `inset-s-full`, `start-auto` → `inset-s-auto`, `start-px` → `inset-s-px`, and `start-<number>` → `inset-s-<number>` as well as negative versions ([#&#8203;19849](https://github.com/tailwindlabs/tailwindcss/pull/19849)) - Canonicalization: migrate `end-full` → `inset-e-full`, `end-auto` → `inset-e-auto`, `end-px` → `inset-e-px`, and `end-<number>` → `inset-e-<number>` as well as negative versions ([#&#8203;19849](https://github.com/tailwindlabs/tailwindcss/pull/19849)) - Canonicalization: move the `-` sign inside the arbitrary value `-left-[9rem]` → `left-[-9rem]` ([#&#8203;19858](https://github.com/tailwindlabs/tailwindcss/pull/19858)) - Canonicalization: move the `-` sign outside the arbitrary value `ml-[calc(-1*var(--width))]` → `-ml-(--width)` ([#&#8203;19858](https://github.com/tailwindlabs/tailwindcss/pull/19858)) - Improve performance when scanning JSONL / NDJSON files ([#&#8203;19862](https://github.com/tailwindlabs/tailwindcss/pull/19862)) - Support `NODE_PATH` environment variable in standalone CLI ([#&#8203;19617](https://github.com/tailwindlabs/tailwindcss/pull/19617)) ### [`v4.2.2`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#422---2026-03-18) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.2.1...v4.2.2) ##### Fixed - Don't crash when candidates contain prototype properties like `row-constructor` ([#&#8203;19725](https://github.com/tailwindlabs/tailwindcss/pull/19725)) - Canonicalize `calc(var(--spacing)*…)` expressions into `--spacing(…)` ([#&#8203;19769](https://github.com/tailwindlabs/tailwindcss/pull/19769)) - Fix crash in canonicalization step when handling utilities containing `@property` at-rules (e.g. `shadow-sm border`) ([#&#8203;19727](https://github.com/tailwindlabs/tailwindcss/pull/19727)) - Skip full reload for server only modules scanned by client CSS when using `@tailwindcss/vite` ([#&#8203;19745](https://github.com/tailwindlabs/tailwindcss/pull/19745)) - Add support for Vite 8 in `@tailwindcss/vite` ([#&#8203;19790](https://github.com/tailwindlabs/tailwindcss/pull/19790)) - Improve canonicalization for bare values exceeding default spacing scale suggestions (e.g. `w-1234 h-1234` → `size-1234`) ([#&#8203;19809](https://github.com/tailwindlabs/tailwindcss/pull/19809)) - Fix canonicalization resulting in empty list (e.g. `w-5 h-5 size-5` → `''` instead of `size-5`) ([#&#8203;19812](https://github.com/tailwindlabs/tailwindcss/pull/19812)) - Resolve tsconfig paths to allow for `@import '@/path/to/file';` when using `@tailwindcss/vite` ([#&#8203;19803](https://github.com/tailwindlabs/tailwindcss/pull/19803)) ### [`v4.2.1`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#421---2026-02-23) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.2.0...v4.2.1) ##### Fixed - Allow trailing dash in functional utility names for backwards compatibility ([#&#8203;19696](https://github.com/tailwindlabs/tailwindcss/pull/19696)) - Properly detect classes containing `.` characters within curly braces in MDX files ([#&#8203;19711](https://github.com/tailwindlabs/tailwindcss/pull/19711)) ### [`v4.2.0`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#420---2026-02-18) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.1.18...v4.2.0) ##### Added - Add mauve, olive, mist, and taupe color palettes to the default theme ([#&#8203;19627](https://github.com/tailwindlabs/tailwindcss/pull/19627)) - Add `@tailwindcss/webpack` package to run Tailwind CSS as a webpack plugin ([#&#8203;19610](https://github.com/tailwindlabs/tailwindcss/pull/19610)) - Add `pbs-*` and `pbe-*` utilities for `padding-block-start` and `padding-block-end` ([#&#8203;19601](https://github.com/tailwindlabs/tailwindcss/pull/19601)) - Add `mbs-*` and `mbe-*` utilities for `margin-block-start` and `margin-block-end` ([#&#8203;19601](https://github.com/tailwindlabs/tailwindcss/pull/19601)) - Add `scroll-pbs-*` and `scroll-pbe-*` utilities for `scroll-padding-block-start` and `scroll-padding-block-end` ([#&#8203;19601](https://github.com/tailwindlabs/tailwindcss/pull/19601)) - Add `scroll-mbs-*` and `scroll-mbe-*` utilities for `scroll-margin-block-start` and `scroll-margin-block-end` ([#&#8203;19601](https://github.com/tailwindlabs/tailwindcss/pull/19601)) - Add `border-bs-*` and `border-be-*` utilities for `border-block-start` and `border-block-end` ([#&#8203;19601](https://github.com/tailwindlabs/tailwindcss/pull/19601)) - Add `inline-*`, `min-inline-*`, `max-inline-*` utilities for `inline-size`, `min-inline-size`, and `max-inline-size` ([#&#8203;19612](https://github.com/tailwindlabs/tailwindcss/pull/19612)) - Add `block-*`, `min-block-*`, `max-block-*` utilities for `block-size`, `min-block-size`, and `max-block-size` ([#&#8203;19612](https://github.com/tailwindlabs/tailwindcss/pull/19612)) - Add `inset-s-*`, `inset-e-*`, `inset-bs-*`, `inset-be-*` utilities for `inset-inline-start`, `inset-inline-end`, `inset-block-start`, and `inset-block-end` ([#&#8203;19613](https://github.com/tailwindlabs/tailwindcss/pull/19613)) - Add `font-features-*` utility for `font-feature-settings` ([#&#8203;19623](https://github.com/tailwindlabs/tailwindcss/pull/19623)) ##### Fixed - Prevent double `@supports` wrapper for `color-mix` values ([#&#8203;19450](https://github.com/tailwindlabs/tailwindcss/pull/19450)) - Allow whitespace around `@source inline()` argument ([#&#8203;19461](https://github.com/tailwindlabs/tailwindcss/pull/19461)) - Emit comment when source maps are saved to files when using `@tailwindcss/cli` ([#&#8203;19447](https://github.com/tailwindlabs/tailwindcss/pull/19447)) - Detect utilities containing capital letters followed by numbers ([#&#8203;19465](https://github.com/tailwindlabs/tailwindcss/pull/19465)) - Fix class extraction for Rails' strict locals ([#&#8203;19525](https://github.com/tailwindlabs/tailwindcss/pull/19525)) - Align `@utility` name validation with Oxide scanner rules ([#&#8203;19524](https://github.com/tailwindlabs/tailwindcss/pull/19524)) - Fix infinite loop when using `@variant` inside `@custom-variant` ([#&#8203;19633](https://github.com/tailwindlabs/tailwindcss/pull/19633)) - Allow multiples of `.25` in `aspect-*` fractions (e.g. `aspect-8.5/11`) ([#&#8203;19688](https://github.com/tailwindlabs/tailwindcss/pull/19688)) - Ensure changes to external files listed via `@source` trigger a full page reload when using `@tailwindcss/vite` ([#&#8203;19670](https://github.com/tailwindlabs/tailwindcss/pull/19670)) - Improve performance of Oxide scanner in bigger projects by reducing file system walks ([#&#8203;19632](https://github.com/tailwindlabs/tailwindcss/pull/19632)) - Ensure import aliases in Astro v5 work without crashing when using `@tailwindcss/vite` ([#&#8203;19677](https://github.com/tailwindlabs/tailwindcss/issues/19677)) - Allow escape characters in `@utility` names to improve support with formatters such as Biome ([#&#8203;19626](https://github.com/tailwindlabs/tailwindcss/pull/19626)) - Fix incorrect canonicalization results when canonicalizing multiple times ([#&#8203;19675](https://github.com/tailwindlabs/tailwindcss/pull/19675)) - Add `.jj` to default ignored content directories ([#&#8203;19687](https://github.com/tailwindlabs/tailwindcss/pull/19687)) ##### Deprecated - Deprecate `start-*` and `end-*` utilities in favor of `inset-s-*` and `inset-e-*` utilities ([#&#8203;19613](https://github.com/tailwindlabs/tailwindcss/pull/19613)) ### [`v4.1.18`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#4118---2025-12-11) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.1.17...v4.1.18) ##### Fixed - Ensure validation of `source(…)` happens relative to the file it is in ([#&#8203;19274](https://github.com/tailwindlabs/tailwindcss/pull/19274)) - Include filename and line numbers in CSS parse errors ([#&#8203;19282](https://github.com/tailwindlabs/tailwindcss/pull/19282)) - Skip comments in Ruby files when checking for class names ([#&#8203;19243](https://github.com/tailwindlabs/tailwindcss/pull/19243)) - Skip over arbitrary property utilities with a top-level `!` in the value ([#&#8203;19243](https://github.com/tailwindlabs/tailwindcss/pull/19243)) - Support environment API in `@tailwindcss/vite` ([#&#8203;18970](https://github.com/tailwindlabs/tailwindcss/pull/18970)) - Preserve case of theme keys from JS configs and plugins ([#&#8203;19337](https://github.com/tailwindlabs/tailwindcss/pull/19337)) - Write source maps correctly on the CLI when using `--watch` ([#&#8203;19373](https://github.com/tailwindlabs/tailwindcss/pull/19373)) - Handle special defaults (like `ringColor.DEFAULT`) in JS configs ([#&#8203;19348](https://github.com/tailwindlabs/tailwindcss/pull/19348)) - Improve backwards compatibility for `content` theme key from JS configs ([#&#8203;19381](https://github.com/tailwindlabs/tailwindcss/pull/19381)) - Upgrade: Handle `future` and `experimental` config keys ([#&#8203;19344](https://github.com/tailwindlabs/tailwindcss/pull/19344)) - Try to canonicalize any arbitrary utility to a bare value ([#&#8203;19379](https://github.com/tailwindlabs/tailwindcss/pull/19379)) - Validate candidates similarly to Oxide ([#&#8203;19397](https://github.com/tailwindlabs/tailwindcss/pull/19397)) - Canonicalization: combine `text-*` and `leading-*` classes ([#&#8203;19396](https://github.com/tailwindlabs/tailwindcss/pull/19396)) - Correctly handle duplicate CLI arguments ([#&#8203;19416](https://github.com/tailwindlabs/tailwindcss/pull/19416)) - Don’t emit color-mix fallback rules inside `@keyframes` ([#&#8203;19419](https://github.com/tailwindlabs/tailwindcss/pull/19419)) - CLI: Don't hang when output is `/dev/stdout` ([#&#8203;19421](https://github.com/tailwindlabs/tailwindcss/pull/19421)) ### [`v4.1.17`](https://github.com/tailwindlabs/tailwindcss/blob/HEAD/CHANGELOG.md#4117---2025-11-06) [Compare Source](https://github.com/tailwindlabs/tailwindcss/compare/v4.1.16...v4.1.17) ##### Fixed - Substitute `@variant` inside legacy JS APIs ([#&#8203;19263](https://github.com/tailwindlabs/tailwindcss/pull/19263)) - Prevent occasional crash on Windows when loaded into a worker thread ([#&#8203;19242](https://github.com/tailwindlabs/tailwindcss/pull/19242)) </details> <details> <summary>withastro/astro (astro)</summary> ### [`v5.18.2`](https://github.com/withastro/astro/releases/tag/astro%405.18.2) [Compare Source](https://github.com/withastro/astro/compare/astro@5.18.1...astro@5.18.2) ##### Patch Changes - [#&#8203;16813](https://github.com/withastro/astro/pull/16813) [`8f7d8c4`](https://github.com/withastro/astro/commit/8f7d8c46ffc79b23200a98fcf6b72c53e19d71db) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Populates styles in the SSR manifest for prerendered routes. Previously, prerendered routes had `styles: []` in the manifest, making it impossible for workers or middleware to discover which CSS files a prerendered page uses. ### [`v5.18.1`](https://github.com/withastro/astro/releases/tag/astro%405.18.1) [Compare Source](https://github.com/withastro/astro/compare/astro@5.18.0...astro@5.18.1) ##### Patch Changes - Updated dependencies \[[`c2cd371`](https://github.com/withastro/astro/commit/c2cd371f9f2003ab8c9ce70a24fc0af40c5de531)]: - [@&#8203;astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@&#8203;0.7.6 - [@&#8203;astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@&#8203;6.3.11 ### [`v5.18.0`](https://github.com/withastro/astro/releases/tag/astro%405.18.0) [Compare Source](https://github.com/withastro/astro/compare/astro@5.17.3...astro@5.18.0) ##### Minor Changes - [#&#8203;15589](https://github.com/withastro/astro/pull/15589) [`b7dd447`](https://github.com/withastro/astro/commit/b7dd447e319a7b435c01ccd69347e5261bd9dc14) Thanks [@&#8203;qzio](https://github.com/qzio)! - Adds a new `security.actionBodySizeLimit` option to configure the maximum size of Astro Actions request bodies. This lets you increase the default 1 MB limit when your actions need to accept larger payloads. For example, actions that handle file uploads or large JSON payloads can now opt in to a higher limit. If you do not set this option, Astro continues to enforce the 1 MB default to help prevent abuse. ```js // astro.config.mjs export default defineConfig({ security: { actionBodySizeLimit: 10 * 1024 * 1024, // set to 10 MB }, }); ``` ##### Patch Changes - [#&#8203;15594](https://github.com/withastro/astro/pull/15594) [`efae11c`](https://github.com/withastro/astro/commit/efae11cef1ebe1f2f54ceb55db0d1ff1938351c6) Thanks [@&#8203;qzio](https://github.com/qzio)! - Fix X-Forwarded-Proto validation when allowedDomains includes both protocol and hostname fields. The protocol check no longer fails due to hostname mismatch against the hardcoded test URL. ### [`v5.17.3`](https://github.com/withastro/astro/releases/tag/astro%405.17.3) [Compare Source](https://github.com/withastro/astro/compare/astro@5.17.2...astro@5.17.3) ##### Patch Changes - [#&#8203;15564](https://github.com/withastro/astro/pull/15564) [`522f880`](https://github.com/withastro/astro/commit/522f880b07a4ea7d69a19b5507fb53a5ed6c87f8) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Add a default body size limit for server actions to prevent oversized requests from exhausting memory. - [#&#8203;15569](https://github.com/withastro/astro/pull/15569) [`e01e98b`](https://github.com/withastro/astro/commit/e01e98b063e90d274c42130ec2a60cc0966622c9) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Respect image allowlists when inferring remote image sizes and reject remote redirects. ### [`v5.17.2`](https://github.com/withastro/astro/releases/tag/astro%405.17.2) [Compare Source](https://github.com/withastro/astro/compare/astro@5.17.1...astro@5.17.2) ##### Patch Changes - [`c13b536`](https://github.com/withastro/astro/commit/c13b536197a70d8d4fd0037c5bd3aaa2be0598b9) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Improves Host header handling for SSR deployments behind proxies ### [`v5.17.1`](https://github.com/withastro/astro/releases/tag/astro%405.17.1) [Compare Source](https://github.com/withastro/astro/compare/astro@5.17.0...astro@5.17.1) ##### Patch Changes - [#&#8203;15334](https://github.com/withastro/astro/pull/15334) [`d715f1f`](https://github.com/withastro/astro/commit/d715f1f88777a4ce0fb61c8043cccfbac2486ab4) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Removes the `getFontBuffer()` helper function exported from `astro:assets` when using the experimental Fonts API This experimental feature introduced in v15.6.13 ended up causing significant memory usage during build. This feature has been removed and will be reintroduced after further exploration and testing. If you were relying on this function, you can replicate the previous behavior manually: - On prerendered routes, read the file using `node:fs` - On server rendered routes, fetch files using URLs from `fontData` and `context.url` ### [`v5.17.0`](https://github.com/withastro/astro/releases/tag/astro%405.17.0) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.16...astro@5.17.0) ##### Minor Changes - [#&#8203;14932](https://github.com/withastro/astro/pull/14932) [`b19d816`](https://github.com/withastro/astro/commit/b19d816c914022c4e618d6012e09aed82be34213) Thanks [@&#8203;patrickarlt](https://github.com/patrickarlt)! - Adds support for returning a Promise from the `parser()` option of the `file()` loader This enables you to run asynchronous code such as fetching remote data or using async parsers when loading files with the Content Layer API. For example: ```js import { defineCollection } from 'astro:content'; import { file } from 'astro/loaders'; const blog = defineCollection({ loader: file('src/data/blog.json', { parser: async (text) => { const data = JSON.parse(text); // Perform async operations like fetching additional data const enrichedData = await fetch(`https://api.example.com/enrich`, { method: 'POST', body: JSON.stringify(data), }).then((res) => res.json()); return enrichedData; }, }), }); export const collections = { blog }; ``` See [the `parser()` reference documentation](https://docs.astro.build/en/reference/content-loader-reference/#parser) for more information. - [#&#8203;15171](https://github.com/withastro/astro/pull/15171) [`f220726`](https://github.com/withastro/astro/commit/f22072607c79f5ba3459ba7522cfdf2581f1869b) Thanks [@&#8203;mark-ignacio](https://github.com/mark-ignacio)! - Adds a new, optional `kernel` configuration option to select a resize algorithm in the Sharp image service By default, Sharp resizes images with the `lanczos3` kernel. This new config option allows you to set the default resizing algorithm to any resizing option supported by [Sharp](https://sharp.pixelplumbing.com/api-resize/#resize) (e.g. `linear`, `mks2021`). Kernel selection can produce quite noticeable differences depending on various characteristics of the source image - especially drawn art - so changing the kernel gives you more control over the appearance of images on your site: ```js export default defineConfig({ image: { service: { entrypoint: 'astro/assets/services/sharp', config: { kernel: "mks2021" } } }) ``` This selection will apply to all images on your site, and is not yet configurable on a per-image basis. For more information, see [Sharps documentation on resizing images](https://sharp.pixelplumbing.com/api-resize/#resize). - [#&#8203;15063](https://github.com/withastro/astro/pull/15063) [`08e0fd7`](https://github.com/withastro/astro/commit/08e0fd723742dda4126665f5e32f4065899af83e) Thanks [@&#8203;jmortlock](https://github.com/jmortlock)! - Adds a new `partitioned` option when setting a cookie to allow creating partitioned cookies. [Partitioned cookies](https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies) can only be read within the context of the top-level site on which they were set. This allows cross-site tracking to be blocked, while still enabling legitimate uses of third-party cookies. You can create a partitioned cookie by passing `partitioned: true` when setting a cookie. Note that partitioned cookies must also be set with `secure: true`: ```js Astro.cookies.set('my-cookie', 'value', { partitioned: true, secure: true, }); ``` For more information, see the [`AstroCookieSetOptions` API reference](https://docs.astro.build/en/reference/api-reference/#astrocookiesetoptions). - [#&#8203;15022](https://github.com/withastro/astro/pull/15022) [`f1fce0e`](https://github.com/withastro/astro/commit/f1fce0e7cc3c1122bf5c4f1c5985ca716c8417db) Thanks [@&#8203;ascorbic](https://github.com/ascorbic)! - Adds a new `retainBody` option to the `glob()` loader to allow reducing the size of the data store. Currently, the `glob()` loader stores the raw body of each content file in the entry, in addition to the rendered HTML. The `retainBody` option defaults to `true`, but you can set it to `false` to prevent the raw body of content files from being stored in the data store. This significantly reduces the deployed size of the data store and helps avoid hitting size limits for sites with very large collections. The rendered body will still be available in the `entry.rendered.html` property for markdown files, and the `entry.filePath` property will still point to the original file. ```js import { defineCollection } from 'astro:content'; import { glob } from 'astro/loaders'; const blog = defineCollection({ loader: glob({ pattern: '**/*.md', base: './src/content/blog', retainBody: false, }), }); ``` When `retainBody` is `false`, `entry.body` will be `undefined` instead of containing the raw file contents. - [#&#8203;15153](https://github.com/withastro/astro/pull/15153) [`928529f`](https://github.com/withastro/astro/commit/928529f824d37e9bfb297ff931ebfcb3f0b56428) Thanks [@&#8203;jcayzac](https://github.com/jcayzac)! - Adds a new `background` property to the `<Image />` component. This optional property lets you pass a background color to flatten the image with. By default, Sharp uses a black background when flattening an image that is being converted to a format that does not support transparency (e.g. `jpeg`). Providing a value for `background` on an `<Image />` component, or passing it to the `getImage()` helper, will flatten images using that color instead. This is especially useful when the requested output format doesn't support an alpha channel (e.g. `jpeg`) and can't support transparent backgrounds. ```astro --- import { Image } from 'astro:assets'; --- <Image src="/transparent.png" alt="A JPEG with a white background!" format="jpeg" background="#ffffff" /> ``` See more about this new property in [the image reference docs](https://docs.astro.build/en/reference/modules/astro-assets/#background) - [#&#8203;15015](https://github.com/withastro/astro/pull/15015) [`54f6006`](https://github.com/withastro/astro/commit/54f6006c3ddae8935a5550e2c3b38d25bf662ea6) Thanks [@&#8203;tony](https://github.com/tony)! - Adds optional `placement` config option for the dev toolbar. You can now configure the default toolbar position (`'bottom-left'`, `'bottom-center'`, or `'bottom-right'`) via `devToolbar.placement` in your Astro config. This option is helpful for sites with UI elements (chat widgets, cookie banners) that are consistently obscured by the toolbar in the dev environment. You can set a project default that is consistent across environments (e.g. dev machines, browser instances, team members): ```js // astro.config.mjs export default defineConfig({ devToolbar: { placement: 'bottom-left', }, }); ``` User preferences from the toolbar UI (stored in `localStorage`) still take priority, so this setting can be overridden in individual situations as necessary. ### [`v5.16.16`](https://github.com/withastro/astro/releases/tag/astro%405.16.16) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.15...astro@5.16.16) ##### Patch Changes - [#&#8203;15281](https://github.com/withastro/astro/pull/15281) [`a1b80c6`](https://github.com/withastro/astro/commit/a1b80c65e5dddefba7ada20c7ccfdab26fb4e16b) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Ensures server island requests carry an encrypted component export identifier so they do not accidentally resolve to the wrong component. - [#&#8203;15304](https://github.com/withastro/astro/pull/15304) [`02ee3c7`](https://github.com/withastro/astro/commit/02ee3c745297203c38ee013b500126b15f7e5fc9) Thanks [@&#8203;cameronapak](https://github.com/cameronapak)! - Fix: Remove await from getActionResult example - [#&#8203;15324](https://github.com/withastro/astro/pull/15324) [`ab41c3e`](https://github.com/withastro/astro/commit/ab41c3e789b821e9179d11d67f453ba955448be6) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Fixes an issue where certain unauthorized links could be rendered as clickable in the error overlay ### [`v5.16.15`](https://github.com/withastro/astro/releases/tag/astro%405.16.15) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.14...astro@5.16.15) ##### Patch Changes - [#&#8203;15286](https://github.com/withastro/astro/pull/15286) [`0aafc83`](https://github.com/withastro/astro/commit/0aafc8342a47f5c96cd13bfc02539d89c3c358a7) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where font providers provided as class instances may not work when using the experimental Fonts API. It affected the local provider ### [`v5.16.14`](https://github.com/withastro/astro/releases/tag/astro%405.16.14) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.13...astro@5.16.14) ##### Patch Changes - [#&#8203;15213](https://github.com/withastro/astro/pull/15213) [`c775fce`](https://github.com/withastro/astro/commit/c775fce98f50001bc59025dceaf8ea5287675f17) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Updates how the local provider must be used when using the experimental Fonts API Previously, there were 2 kinds of font providers: remote and local. Font providers are now unified. If you are using the local provider, the process for configuring local fonts must be updated: ```diff -import { defineConfig } from "astro/config"; +import { defineConfig, fontProviders } from "astro/config"; export default defineConfig({ experimental: { fonts: [{ name: "Custom", cssVariable: "--font-custom", - provider: "local", + provider: fontProviders.local(), + options: { variants: [ { weight: 400, style: "normal", src: ["./src/assets/fonts/custom-400.woff2"] }, { weight: 700, style: "normal", src: ["./src/assets/fonts/custom-700.woff2"] } // ... ] + } }] } }); ``` Once configured, there is no change to using local fonts in your project. However, you should inspect your deployed site to confirm that your new font configuration is being applied. See [the experimental Fonts API docs](https://docs.astro.build/en/reference/experimental-flags/fonts/) for more information. - [#&#8203;15213](https://github.com/withastro/astro/pull/15213) [`c775fce`](https://github.com/withastro/astro/commit/c775fce98f50001bc59025dceaf8ea5287675f17) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Exposes `root` on `FontProvider` `init()` context When building a custom `FontProvider` for the experimental Fonts API, the `init()` method receives a `context`. This context now exposes a `root` URL, useful for resolving local files: ```diff import type { FontProvider } from "astro"; export function registryFontProvider(): FontProvider { return { // ... - init: async ({ storage }) => { + init: async ({ storage, root }) => { // ... }, }; } ``` - [#&#8203;15185](https://github.com/withastro/astro/pull/15185) [`edabeaa`](https://github.com/withastro/astro/commit/edabeaa3cd3355fa33e4eb547656033fe7b66845) Thanks [@&#8203;EricGrill](https://github.com/EricGrill)! - Add `.vercel` to `.gitignore` when adding the Vercel adapter via `astro add vercel` ### [`v5.16.13`](https://github.com/withastro/astro/releases/tag/astro%405.16.13) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.12...astro@5.16.13) ##### Patch Changes - [#&#8203;15182](https://github.com/withastro/astro/pull/15182) [`cb60ee1`](https://github.com/withastro/astro/commit/cb60ee16051da258ab140f3bb64ff3fd8e4c9e17) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Adds a new `getFontBuffer()` method to retrieve font file buffers when using the experimental Fonts API The `getFontData()` helper function from `astro:assets` was introduced in 5.14.0 to provide access to font family data for use outside of Astro. One of the goals of this API was to be able to retrieve buffers using URLs. However, it turned out to be impactical and even impossible during prerendering. Astro now exports a new `getFontBuffer()` helper function from `astro:assets` to retrieve font file buffers from URL returned by `getFontData()`. For example, when using [satori](https://github.com/vercel/satori) to generate OpenGraph images: ```diff // src/pages/og.png.ts import type{ APIRoute } from "astro" -import { getFontData } from "astro:assets" +import { getFontData, getFontBuffer } from "astro:assets" import satori from "satori" export const GET: APIRoute = (context) => { const data = getFontData("--font-roboto") const svg = await satori( <div style={{ color: "black" }}>hello, world</div>, { width: 600, height: 400, fonts: [ { name: "Roboto", - data: await fetch(new URL(data[0].src[0].url, context.url.origin)).then(res => res.arrayBuffer()), + data: await getFontBuffer(data[0].src[0].url), weight: 400, style: "normal", }, ], }, ) // ... } ``` See the [experimental Fonts API documentation](https://docs.astro.build/en/reference/experimental-flags/fonts/#accessing-font-data-programmatically) for more information. ### [`v5.16.12`](https://github.com/withastro/astro/releases/tag/astro%405.16.12) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.11...astro@5.16.12) ##### Patch Changes - [#&#8203;15175](https://github.com/withastro/astro/pull/15175) [`47ae148`](https://github.com/withastro/astro/commit/47ae1480eecd5da7080f1e659b6aef211aaf3300) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Allows experimental Font providers to specify family options Previously, an Astro `FontProvider` could only accept options at the provider level when called. That could result in weird data structures for family-specific options. Astro `FontProvider`s can now declare family-specific options, by specifying a generic: ```diff // font-provider.ts import type { FontProvider } from "astro"; import { retrieveFonts, type Fonts } from "./utils.js", interface Config { token: string; } +interface FamilyOptions { + minimal?: boolean; +} -export function registryFontProvider(config: Config): FontProvider { +export function registryFontProvider(config: Config): FontProvider<FamilyOptions> { let data: Fonts = {} return { name: "registry", config, init: async () => { data = await retrieveFonts(token); }, listFonts: () => { return Object.keys(data); }, - resolveFont: ({ familyName, ...rest }) => { + // options is typed as FamilyOptions + resolveFont: ({ familyName, options, ...rest }) => { const fonts = data[familyName]; if (fonts) { return { fonts }; } return undefined; }, }; } ``` Once the font provider is registered in the Astro config, types are automatically inferred: ```diff // astro.config.ts import { defineConfig } from "astro/config"; import { registryFontProvider } from "./font-provider"; export default defineConfig({ experimental: { fonts: [{ provider: registryFontProvider({ token: "..." }), name: "Custom", cssVariable: "--font-custom", + options: { + minimal: true + } }] } }); ``` - [#&#8203;15175](https://github.com/withastro/astro/pull/15175) [`47ae148`](https://github.com/withastro/astro/commit/47ae1480eecd5da7080f1e659b6aef211aaf3300) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Updates how options are passed to the Google and Google Icons font providers when using the experimental Fonts API Previously, the Google and Google Icons font providers accepted options that were specific to given font families. These options must now be set using the `options` property instead. For example using the Google provider: ```diff import { defineConfig, fontProviders } from "astro/config"; export default defineConfig({ experimental: { fonts: [{ name: 'Inter', cssVariable: '--astro-font-inter', weights: ['300 900'], - provider: fontProviders.google({ - experimental: { - variableAxis: { - Inter: { opsz: ['14..32'] } - } - } - }), + provider: fontProviders.google(), + options: { + experimental: { + variableAxis: { opsz: ['14..32'] } + } + } }] } }) ``` - [#&#8203;15200](https://github.com/withastro/astro/pull/15200) [`c0595b3`](https://github.com/withastro/astro/commit/c0595b3e71a3811921ddc24e6ed7538c0df53a96) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Removes `getFontData()` exported from `astro:assets` with `fontData` when using the experimental Fonts API Accessing font data can be useful for advanced use cases, such as generating meta tags or Open Graph images. Before, we exposed a `getFontData()` helper function to retrieve the font data for a given `cssVariable`. That was however limiting for programmatic usages that need to access all font data. The `getFontData()` helper function is removed and replaced by a new `fontData` object: ```diff -import { getFontData } from "astro:assets"; -const data = getFontData("--font-roboto") +import { fontData } from "astro:assets"; +const data = fontData["--font-roboto"] ``` We may reintroduce `getFontData()` later on for a more friendly DX, based on your feedback. - [#&#8203;15254](https://github.com/withastro/astro/pull/15254) [`8d84b30`](https://github.com/withastro/astro/commit/8d84b3040181018f358b4e5684f9df55949aa4ca) Thanks [@&#8203;lamalex](https://github.com/lamalex)! - Fixes CSS `assetsPrefix` with remote URLs incorrectly prepending a forward slash When using `build.assetsPrefix` with a remote URL (e.g., `https://cdn.example.com`) for CSS assets, the generated `<link>` elements were incorrectly getting a `/` prepended to the full URL, resulting in invalid URLs like `/https://cdn.example.com/assets/style.css`. This fix checks if the stylesheet link is a remote URL before prepending the forward slash. - [#&#8203;15178](https://github.com/withastro/astro/pull/15178) [`731f52d`](https://github.com/withastro/astro/commit/731f52dd68c538a3372d4ac078e72d1090cc4cce) Thanks [@&#8203;kedarvartak](https://github.com/kedarvartak)! - Fixes an issue where stopping the dev server with `q+enter` incorrectly created a `dist` folder and copied font files when using the experimental Fonts API - [#&#8203;15230](https://github.com/withastro/astro/pull/15230) [`3da6272`](https://github.com/withastro/astro/commit/3da62721f02e7cbf1344ae9766ca73cae71b23c8) Thanks [@&#8203;rahuld109](https://github.com/rahuld109)! - Fixes greedy regex in error message markdown rendering that caused link syntax examples to capture extra characters - [#&#8203;15253](https://github.com/withastro/astro/pull/15253) [`2a6315a`](https://github.com/withastro/astro/commit/2a6315a3a38273ed47e4aa16a4dd9449fc7927c9) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes hydration for React components nested inside HTML elements in MDX files - [#&#8203;15227](https://github.com/withastro/astro/pull/15227) [`9a609f4`](https://github.com/withastro/astro/commit/9a609f4a6264fc2238e02cffb00a9285f4a10973) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes styles not being included for conditionally rendered Svelte 5 components in production builds - [#&#8203;14607](https://github.com/withastro/astro/pull/14607) [`ee52160`](https://github.com/withastro/astro/commit/ee52160f3374f65d1a8cb460c1340172902313bc) Thanks [@&#8203;simensfo](https://github.com/simensfo)! - Reintroduces css deduplication for hydrated client components. Ensures assets already added to a client chunk are not flagged as orphaned ### [`v5.16.11`](https://github.com/withastro/astro/releases/tag/astro%405.16.11) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.10...astro@5.16.11) ##### Patch Changes - [#&#8203;15017](https://github.com/withastro/astro/pull/15017) [`9e7a3c8`](https://github.com/withastro/astro/commit/9e7a3c86198956e558384235b71a6c12e87fc5fb) Thanks [@&#8203;ixchio](https://github.com/ixchio)! - Fixes CSS double-bundling when the same CSS file is imported in both a page's frontmatter and a component's script tag - [#&#8203;15225](https://github.com/withastro/astro/pull/15225) [`6fe62e1`](https://github.com/withastro/astro/commit/6fe62e169cf9e1054cba95ce4084d8a58bdd0a66) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Updates to the latest version of `devalue` ### [`v5.16.10`](https://github.com/withastro/astro/releases/tag/astro%405.16.10) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.9...astro@5.16.10) ##### Patch Changes - [`2fa19c4`](https://github.com/withastro/astro/commit/2fa19c41be895e5255a8b12a43f9f9691cb57e5d) - Improved error handling in the rendering phase Added defensive validation in `App.render()` and `#renderError()` to provide a descriptive error message when a route module doesn't have a valid page function. - [#&#8203;15199](https://github.com/withastro/astro/pull/15199) [`d8e64ef`](https://github.com/withastro/astro/commit/d8e64ef77ef364b1541a5d192bcff299135d3bc8) Thanks [@&#8203;ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes the links to Astro Docs so that they match the current docs structure. - [#&#8203;15169](https://github.com/withastro/astro/pull/15169) [`b803d8b`](https://github.com/withastro/astro/commit/b803d8b4b4e5e71ef4b28b23186e2786dc80a308) Thanks [@&#8203;rururux](https://github.com/rururux)! - fix: fix image 500 error when moving dist directory in standalone Node - [#&#8203;14622](https://github.com/withastro/astro/pull/14622) [`9b35c62`](https://github.com/withastro/astro/commit/9b35c62cb38d3507f426b872d972b1b4d7b20bc8) Thanks [@&#8203;aprici7y](https://github.com/aprici7y)! - Fixes CSS url() references to public assets returning 404 in dev mode when base path is configured - [#&#8203;15219](https://github.com/withastro/astro/pull/15219) [`43df4ce`](https://github.com/withastro/astro/commit/43df4ce1c6c221a751b640c45687adfa83226e7c) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Upgrades the `diff` package to v8 ### [`v5.16.9`](https://github.com/withastro/astro/releases/tag/astro%405.16.9) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.8...astro@5.16.9) ##### Patch Changes - [#&#8203;15174](https://github.com/withastro/astro/pull/15174) [`37ab65a`](https://github.com/withastro/astro/commit/37ab65acb1af6e41d25ec29f3c04c690c7601c87) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Adds Google Icons to built-in font providers To start using it, access it on `fontProviders`: ```ts import { defineConfig, fontProviders } from 'astro/config'; export default defineConfig({ experimental: { fonts: [ { name: 'Material Symbols Outlined', provider: fontProviders.googleicons(), cssVariable: '--font-material', }, ], }, }); ``` - [#&#8203;15150](https://github.com/withastro/astro/pull/15150) [`a77c4f4`](https://github.com/withastro/astro/commit/a77c4f42b56b46b08064a99e9cb9a2b4bace4445) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes hydration for framework components inside MDX when using `Astro.slots.render()` Previously, when multiple framework components with `client:*` directives were passed as named slots to an Astro component in MDX, only the first slot would hydrate correctly. Subsequent slots would render their HTML but fail to include the necessary hydration scripts. - [#&#8203;15130](https://github.com/withastro/astro/pull/15130) [`9b726c4`](https://github.com/withastro/astro/commit/9b726c4e36bb1560badf5bf9b78783a240939124) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Changes how font providers are implemented with updates to the `FontProvider` type This is an implementation detail that changes how font providers are created. This process allows Astro to take more control rather than relying directly on `unifont` types. **All of Astro's built-in font providers have been updated to reflect this new type, and can be configured as before**. However, using third-party unifont providers that rely on `unifont` types will require an update to your project code. Previously, an Astro `FontProvider` was made of a config and a runtime part. It relied directly on `unifont` types, which allowed a simple configuration for third-party unifont providers, but also coupled Astro's implementation to unifont, which was limiting. Astro's font provider implementation is now only made of a config part with dedicated hooks. This allows for the separation of config and runtime, but requires you to create a font provider object in order to use custom font providers (e.g. third-party unifont providers, or private font registeries). ##### What should I do? ```` If you were using a 3rd-party `unifont` font provider, you will now need to write an Astro `FontProvider` using it under the hood. For example: ```diff // astro.config.ts import { defineConfig } from "astro/config"; import { acmeProvider, type AcmeOptions } from '@&#8203;acme/unifont-provider' +import type { FontProvider } from "astro"; +import type { InitializedProvider } from 'unifont'; +function acme(config?: AcmeOptions): FontProvider { + const provider = acmeProvider(config); + let initializedProvider: InitializedProvider | undefined; + return { + name: provider._name, + config, + async init(context) { + initializedProvider = await provider(context); + }, + async resolveFont({ familyName, ...rest }) { + return await initializedProvider?.resolveFont(familyName, rest); + }, + async listFonts() { + return await initializedProvider?.listFonts?.(); + }, + }; +} export default defineConfig({ experimental: { fonts: [{ - provider: acmeProvider({ /* ... */ }), + provider: acme({ /* ... */ }), name: "Material Symbols Outlined", cssVariable: "--font-material" }] } }); ``` ```` - [#&#8203;15147](https://github.com/withastro/astro/pull/15147) [`9cd5b87`](https://github.com/withastro/astro/commit/9cd5b875f2d45a08bfa8312ed7282a6f0f070265) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes scripts in components not rendering when a sibling `<Fragment slot="...">` exists but is unused ### [`v5.16.8`](https://github.com/withastro/astro/releases/tag/astro%405.16.8) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.7...astro@5.16.8) ##### Patch Changes - [#&#8203;15124](https://github.com/withastro/astro/pull/15124) [`81db3c0`](https://github.com/withastro/astro/commit/81db3c06e8f75bf1ec6f3d4d31a42d16dcf0e969) Thanks [@&#8203;leonace924](https://github.com/leonace924)! - Fixes an issue where requests with query parameters to the `base` path would return a 404 if trailingSlash was not `'ignore'` in development - [#&#8203;15152](https://github.com/withastro/astro/pull/15152) [`39ee41f`](https://github.com/withastro/astro/commit/39ee41fa56b362942162dc17b0b4252d2f881e7e) Thanks [@&#8203;rururux](https://github.com/rururux)! - Fixes a case where `context.cookies.set()` would be overriden when setting cookies via response headers in development - [#&#8203;15140](https://github.com/withastro/astro/pull/15140) [`6f6f8f8`](https://github.com/withastro/astro/commit/6f6f8f8c0c3ccf346d741a8625bbfbe1329e472e) Thanks [@&#8203;cameronraysmith](https://github.com/cameronraysmith)! - Fixes esbuild warning due to dead code in assets virtual module - [#&#8203;15127](https://github.com/withastro/astro/pull/15127) [`2cff904`](https://github.com/withastro/astro/commit/2cff9045256a2b551465750de7cba29087046658) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Updates "Unsupported page types found" error to only appear in more realistic cases - [#&#8203;15149](https://github.com/withastro/astro/pull/15149) [`34f84c2`](https://github.com/withastro/astro/commit/34f84c2437fd078e299a29eeb1f931c9f83c8d2e) Thanks [@&#8203;rahuld109](https://github.com/rahuld109)! - Skips "Use the Image component" audit warning for images inside framework components (React, Vue, Svelte, etc.) ### [`v5.16.7`](https://github.com/withastro/astro/releases/tag/astro%405.16.7) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.6...astro@5.16.7) ##### Patch Changes - [#&#8203;15122](https://github.com/withastro/astro/pull/15122) [`b137946`](https://github.com/withastro/astro/commit/b1379466e8c6ded9fbcc3687c7faca4c2d3472b2) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Improves JSDoc annotations for `AstroGlobal`, `AstroSharedContext` and `APIContext` types - [#&#8203;15123](https://github.com/withastro/astro/pull/15123) [`3f58fa2`](https://github.com/withastro/astro/commit/3f58fa20540ee3753158d8d0372affa47775c561) Thanks [@&#8203;43081j](https://github.com/43081j)! - Improves rendering performance by grouping render chunks when emitting from async iterables to avoid encoding costs - [#&#8203;14954](https://github.com/withastro/astro/pull/14954) [`7bec4bd`](https://github.com/withastro/astro/commit/7bec4bdadda1d66da1c7dc0a01ad4412a47337d9) Thanks [@&#8203;volpeon](https://github.com/volpeon)! - Fixes remote images `Etag` header handling by disabling internal cache - [#&#8203;15052](https://github.com/withastro/astro/pull/15052) [`b2bcd5a`](https://github.com/withastro/astro/commit/b2bcd5af28dfb75541f3249b0277b458355395cf) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Fixes images not working in development when using setups with port forwarding - [#&#8203;15028](https://github.com/withastro/astro/pull/15028) [`87b19b8`](https://github.com/withastro/astro/commit/87b19b8df49d08ee7a7a1855f3645fe7bebf1997) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Fixes certain aliases not working when using images in JSON files with the content layer - [#&#8203;15118](https://github.com/withastro/astro/pull/15118) [`cfa382b`](https://github.com/withastro/astro/commit/cfa382b7aa23a9f5a506181c75a0706595208396) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Removes the `defineAstroFontProvider()` type helper. If you are building a custom font provider, remove any occurrence of `defineAstroFontProvider()` and use the `FontProvider` type instead: ```diff -import { defineAstroFontProvider } from 'astro/config'; -export function myProvider() { - return defineAstroFontProvider({ - entrypoint: new URL('./implementation.js', import.meta.url) - }); -}; +import type { FontProvider } from 'astro'; +export function myProvider(): FontProvider { + return { + entrypoint: new URL('./implementation.js', import.meta.url) + }, +} ``` - [#&#8203;15055](https://github.com/withastro/astro/pull/15055) [`4e28db8`](https://github.com/withastro/astro/commit/4e28db8d125b693039b393111fa48d7bcc913968) Thanks [@&#8203;delucis](https://github.com/delucis)! - Reduces Astro’s install size by around 8 MB - [#&#8203;15088](https://github.com/withastro/astro/pull/15088) [`a19140f`](https://github.com/withastro/astro/commit/a19140fd11efbc635a391d176da54b0dc5e4a99c) Thanks [@&#8203;martrapp](https://github.com/martrapp)! - Enables the ClientRouter to preserve the original hash part of the target URL during server side redirects. - [#&#8203;15117](https://github.com/withastro/astro/pull/15117) [`b1e8e32`](https://github.com/withastro/astro/commit/b1e8e32670ba601d3b3150514173dd7d1bb25650) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Changes the font format downloaded by default when using the experimental Fonts API. Additionally, adds a new `formats` configuration option to specify which font formats to download. Previously, Astro was opinionated about which font sources would be kept for usage, mainly keeping `woff2` and `woff` files. You can now specify what font formats should be downloaded (if available). Only `woff2` files are downloaded by default. ##### What should I do? ```` If you were previously relying on Astro downloading the `woff` format, you will now need to specify this explicitly with the new `formats` configuration option. Additionally, you may also specify any additional file formats to download if available: ```diff // astro.config.mjs import { defineConfig, fontProviders } from 'astro/config' export default defineConfig({ experimental: { fonts: [{ name: 'Roboto', cssVariable: '--font-roboto', provider: fontProviders.google(), + formats: ['woff2', 'woff', 'otf'] }] } }) ``` ```` - [#&#8203;15034](https://github.com/withastro/astro/pull/15034) [`8115752`](https://github.com/withastro/astro/commit/811575237d159ceac5d9f0a2ea3bf023df718759) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a vite warning log during builds when using npm ### [`v5.16.6`](https://github.com/withastro/astro/releases/tag/astro%405.16.6) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.5...astro@5.16.6) ##### Patch Changes - [#&#8203;14982](https://github.com/withastro/astro/pull/14982) [`6849e38`](https://github.com/withastro/astro/commit/6849e3844d940f76b544822e7bd247641d61567d) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Fixes images outside the project directory not working when using astro:assets in development mode - [#&#8203;14987](https://github.com/withastro/astro/pull/14987) [`9dd9fca`](https://github.com/withastro/astro/commit/9dd9fca81e5ed3d0d55e0b1624c6515706963b1f) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Fixes SVGs not working in dev mode when using the passthrough image service - [#&#8203;15014](https://github.com/withastro/astro/pull/15014) [`a178422`](https://github.com/withastro/astro/commit/a178422484ed62a76b227515a798e192fdcba3b9) Thanks [@&#8203;delucis](https://github.com/delucis)! - Adds support for extending the type of the props accepted by Astro’s `<Image>` component, `<Picture>` component, and `getImage()` API. ### [`v5.16.5`](https://github.com/withastro/astro/releases/tag/astro%405.16.5) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.4...astro@5.16.5) ##### Patch Changes - [#&#8203;14985](https://github.com/withastro/astro/pull/14985) [`c016f10`](https://github.com/withastro/astro/commit/c016f1063beddc995c4b7a60430ff8860c05b462) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where JSDoc annotations wouldn't show for fonts related APIs in the Astro config - [#&#8203;14973](https://github.com/withastro/astro/pull/14973) [`ed7cc2f`](https://github.com/withastro/astro/commit/ed7cc2fd399084bdd8ba47094fe378fc8ce43048) Thanks [@&#8203;amankumarpandeyin](https://github.com/amankumarpandeyin)! - Fixes performance regression and OOM errors when building medium-sized blogs with many content entries. Replaced O(n²) object spread pattern with direct mutation in `generateLookupMap`. - [#&#8203;14958](https://github.com/withastro/astro/pull/14958) [`70eb542`](https://github.com/withastro/astro/commit/70eb542f3b509cd25461d19d275b8c050ace184f) Thanks [@&#8203;ascorbic](https://github.com/ascorbic)! - Gives a helpful error message if a user sets `output: "hybrid"` in their Astro config. The option was removed in Astro 5, but lots of content online still references it, and LLMs often suggest it. It's not always clear that the replacement is `output: "static"`, rather than `output: "server"`. This change adds a helpful error message to guide humans and robots. - [#&#8203;14901](https://github.com/withastro/astro/pull/14901) [`ef53716`](https://github.com/withastro/astro/commit/ef53716f93237d29cf732baae2d90ecd2c9f3bbe) Thanks [@&#8203;Darknab](https://github.com/Darknab)! - Updates the `glob()` loader to log a warning when duplicated IDs are detected - Updated dependencies \[[`d8305f8`](https://github.com/withastro/astro/commit/d8305f8abdf92db6fa505ee9c1774553ba90b7bd)]: - [@&#8203;astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@&#8203;6.3.10 ### [`v5.16.4`](https://github.com/withastro/astro/releases/tag/astro%405.16.4) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.3...astro@5.16.4) ##### Patch Changes - [#&#8203;14940](https://github.com/withastro/astro/pull/14940) [`2cf79c2`](https://github.com/withastro/astro/commit/2cf79c23c23e3364b0e6a86394b6584112786c5b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixes a bug where Astro didn't properly combine CSP resources from the `csp` configuration with those added using the runtime API (`Astro.csp.insertDirective()`) to form grammatically correct CSP headers Now Astro correctly deduplicate CSP resources. For example, if you have a global resource in the configuration file, and then you add a a new one using the runtime APIs. ### [`v5.16.3`](https://github.com/withastro/astro/releases/tag/astro%405.16.3) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.2...astro@5.16.3) ##### Patch Changes - [#&#8203;14889](https://github.com/withastro/astro/pull/14889) [`4bceeb0`](https://github.com/withastro/astro/commit/4bceeb0c7183de4db0087316e2fc2d287f27ad01) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes actions types when using specific TypeScript configurations - [#&#8203;14929](https://github.com/withastro/astro/pull/14929) [`e0f277d`](https://github.com/withastro/astro/commit/e0f277d9248d2fefbd0234b53f9dea8c9b750adb) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes authentication bypass via double URL encoding in middleware Prevents attackers from bypassing path-based authentication checks using multi-level URL encoding (e.g., `/%2561dmin` instead of `/%61dmin`). Pathnames are now validated after decoding to ensure no additional encoding remains. ### [`v5.16.2`](https://github.com/withastro/astro/releases/tag/astro%405.16.2) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.1...astro@5.16.2) ##### Patch Changes - [#&#8203;14876](https://github.com/withastro/astro/pull/14876) [`b43dc7f`](https://github.com/withastro/astro/commit/b43dc7f28d582f22a4b28aa3a712af247c908dc3) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a vite warning log during builds when using npm - [#&#8203;14884](https://github.com/withastro/astro/pull/14884) [`10273e0`](https://github.com/withastro/astro/commit/10273e01357e515050f8233442a7252b51cad364) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where setting the status of a page to `404` in ssr would show an empty page (or `404.astro` page if provided) instead of using the current page ### [`v5.16.1`](https://github.com/withastro/astro/releases/tag/astro%405.16.1) [Compare Source](https://github.com/withastro/astro/compare/astro@5.16.0...astro@5.16.1) ##### Patch Changes - [#&#8203;14769](https://github.com/withastro/astro/pull/14769) [`b43ee71`](https://github.com/withastro/astro/commit/b43ee71bd0c3740f41bb641abf01e9cd970d32ee) Thanks [@&#8203;adriandlam](https://github.com/adriandlam)! - Fixes an unhandled rejection issue when using Astro with Vercel Workflow DevKit - [#&#8203;14761](https://github.com/withastro/astro/pull/14761) [`345eb22`](https://github.com/withastro/astro/commit/345eb22bbe449bc8aea1ebd4205fef0fc554a10b) Thanks [@&#8203;ooga](https://github.com/ooga)! - Updates `button` attributes types to allow `command` and `commandfor` - [#&#8203;14866](https://github.com/withastro/astro/pull/14866) [`65e214b`](https://github.com/withastro/astro/commit/65e214b07b84b67c4f5fc13646a5d99944bb10c2) Thanks [@&#8203;GameRoMan](https://github.com/GameRoMan)! - Fixes `Astro.glob` to be correctly marked as deprecated - [#&#8203;14894](https://github.com/withastro/astro/pull/14894) [`1ad9a5b`](https://github.com/withastro/astro/commit/1ad9a5b3e7301a6c05787879e413b82ca0268003) Thanks [@&#8203;delucis](https://github.com/delucis)! - Fixes support for Astro component rendering in Vitest test suites using a “client” environment such as `happy-dom` or `jsdom` - [#&#8203;14782](https://github.com/withastro/astro/pull/14782) [`abed929`](https://github.com/withastro/astro/commit/abed9294ce698980f22f8a3f6695670151915d9b) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Improves syncing ### [`v5.16.0`](https://github.com/withastro/astro/releases/tag/astro%405.16.0) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.9...astro@5.16.0) ##### Minor Changes - [#&#8203;13880](https://github.com/withastro/astro/pull/13880) [`1a2ed01`](https://github.com/withastro/astro/commit/1a2ed01c92fe93843046396a2c854514747f4df8) Thanks [@&#8203;azat-io](https://github.com/azat-io)! - Adds experimental SVGO optimization support for SVG assets Astro now supports automatic SVG optimization using SVGO during build time. This experimental feature helps reduce SVG file sizes while maintaining visual quality, improving your site's performance. To enable SVG optimization with default settings, add the following to your `astro.config.mjs`: ```js import { defineConfig } from 'astro/config'; export default defineConfig({ experimental: { svgo: true, }, }); ``` To customize optimization, pass a [SVGO configuration object](https://svgo.dev/docs/plugins/): ```js export default defineConfig({ experimental: { svgo: { plugins: [ 'preset-default', { name: 'removeViewBox', active: false, }, ], }, }, }); ``` For more information on enabling and using this feature in your project, see the [experimental SVG optimization docs](https://docs.astro.build/en/reference/experimental-flags/svg-optimization/). - [#&#8203;14810](https://github.com/withastro/astro/pull/14810) [`2e845fe`](https://github.com/withastro/astro/commit/2e845fe56de45c710d282ed36f92978612810b79) Thanks [@&#8203;ascorbic](https://github.com/ascorbic)! - Adds a hint for code agents to use the `--yes` flag to skip prompts when running `astro add` - [#&#8203;14698](https://github.com/withastro/astro/pull/14698) [`f42ff9b`](https://github.com/withastro/astro/commit/f42ff9bd5b4c8d3e67247ee6e21f14cd2062c037) Thanks [@&#8203;mauriciabad](https://github.com/mauriciabad)! - Adds the `ActionInputSchema` utility type to automatically infer the TypeScript type of an action's input based on its Zod schema For example, this type can be used to retrieve the input type of a form action: ```ts import { type ActionInputSchema, defineAction } from 'astro:actions'; import { z } from 'astro/zod'; const action = defineAction({ accept: 'form', input: z.object({ name: z.string() }), handler: ({ name }) => ({ message: `Welcome, ${name}!` }), }); type Schema = ActionInputSchema<typeof action>; // typeof z.object({ name: z.string() }) type Input = z.input<Schema>; // { name: string } ``` - [#&#8203;14574](https://github.com/withastro/astro/pull/14574) [`4356485`](https://github.com/withastro/astro/commit/4356485b0f708c7abf93207105ddcb890a466729) Thanks [@&#8203;jacobdalamb](https://github.com/jacobdalamb)! - Adds new CLI shortcuts available when running `astro preview`: - `o` + `enter`: open the site in your browser - `q` + `enter`: quit the preview - `h` + `enter`: print all available shortcuts ##### Patch Changes - [#&#8203;14813](https://github.com/withastro/astro/pull/14813) [`e1dd377`](https://github.com/withastro/astro/commit/e1dd377398a3dcf6ba0697dc8d4bde6d77a45700) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Removes `picocolors` as dependency in favor of the fork `piccolore`. - [#&#8203;14609](https://github.com/withastro/astro/pull/14609) [`d774306`](https://github.com/withastro/astro/commit/d774306c517c33276adf48f2c2ea6a0a2a4a7aa6) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Improves `astro info` - [#&#8203;14796](https://github.com/withastro/astro/pull/14796) [`c29a785`](https://github.com/withastro/astro/commit/c29a785d57f08c5526828379d748f788797d9c39) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental Fonts API only** Updates the default `subsets` to `["latin"]` Subsets have been a common source of confusion: they caused a lot of files to be downloaded by default. You now have to manually pick extra subsets. Review your Astro config and update subsets if you need, for example if you need greek characters: ```diff import { defineConfig, fontProviders } from "astro/config" export default defineConfig({ experimental: { fonts: [{ name: "Roboto", cssVariable: "--font-roboto", provider: fontProviders.google(), + subsets: ["latin", "greek"] }] } }) ``` ### [`v5.15.9`](https://github.com/withastro/astro/releases/tag/astro%405.15.9) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.8...astro@5.15.9) ##### Patch Changes - [#&#8203;14786](https://github.com/withastro/astro/pull/14786) [`758a891`](https://github.com/withastro/astro/commit/758a891112839a108479fd0489a1785640b31ecf) Thanks [@&#8203;mef](https://github.com/mef)! - Add handling of invalid encrypted props and slots in server islands. - [#&#8203;14783](https://github.com/withastro/astro/pull/14783) [`504958f`](https://github.com/withastro/astro/commit/504958fe7fccd7bffc177a1f4b1bf4e22989470e) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Improves the experimental Fonts API build log to show the number of downloaded files. This can help spotting excessive downloading because of misconfiguration - [#&#8203;14791](https://github.com/withastro/astro/pull/14791) [`9e9c528`](https://github.com/withastro/astro/commit/9e9c528191b6f5e06db9daf6ad26b8f68016e533) Thanks [@&#8203;Princesseuh](https://github.com/Princesseuh)! - Changes the remote protocol checks for images to require explicit authorization in order to use data URIs. In order to allow data URIs for remote images, you will need to update your `astro.config.mjs` file to include the following configuration: ```js // astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ images: { remotePatterns: [ { protocol: 'data', }, ], }, }); ``` - [#&#8203;14787](https://github.com/withastro/astro/pull/14787) [`0f75f6b`](https://github.com/withastro/astro/commit/0f75f6bc637d547e07324e956db21d9f245a3e8e) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes wildcard hostname pattern matching to correctly reject hostnames without dots Previously, hostnames like `localhost` or other single-part names would incorrectly match patterns like `*.example.com`. The wildcard matching logic has been corrected to ensure that only valid subdomains matching the pattern are accepted. - [#&#8203;14776](https://github.com/withastro/astro/pull/14776) [`3537876`](https://github.com/withastro/astro/commit/3537876fde3bdb2a0ded99cc9b00d53f66160a7f) Thanks [@&#8203;ktym4a](https://github.com/ktym4a)! - Fixes the behavior of `passthroughImageService` so it does not generate webp. - Updated dependencies \[[`9e9c528`](https://github.com/withastro/astro/commit/9e9c528191b6f5e06db9daf6ad26b8f68016e533), [`0f75f6b`](https://github.com/withastro/astro/commit/0f75f6bc637d547e07324e956db21d9f245a3e8e)]: - [@&#8203;astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@&#8203;0.7.5 - [@&#8203;astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@&#8203;6.3.9 ### [`v5.15.8`](https://github.com/withastro/astro/releases/tag/astro%405.15.8) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.7...astro@5.15.8) ##### Patch Changes - [#&#8203;14772](https://github.com/withastro/astro/pull/14772) [`00c579a`](https://github.com/withastro/astro/commit/00c579a23322d92459e4ccad0ec365c4d1980a5d) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Improves the security of Server Islands slots by encrypting them before transmission to the browser, matching the security model used for props. This improves the integrity of slot content and prevents injection attacks, even when component templates don't explicitly support slots. Slots continue to work as expected for normal usage—this change has no breaking changes for legitimate requests. - [#&#8203;14771](https://github.com/withastro/astro/pull/14771) [`6f80081`](https://github.com/withastro/astro/commit/6f800813516b07bbe12c666a92937525fddb58ce) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fix middleware pathname matching by normalizing URL-encoded paths Middleware now receives normalized pathname values, ensuring that encoded paths like `/%61dmin` are properly decoded to `/admin` before middleware checks. This prevents potential security issues where middleware checks might be bypassed through URL encoding. ### [`v5.15.7`](https://github.com/withastro/astro/releases/tag/astro%405.15.7) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.6...astro@5.15.7) ##### Patch Changes - [#&#8203;14765](https://github.com/withastro/astro/pull/14765) [`03fb47c`](https://github.com/withastro/astro/commit/03fb47c0106fda823e4dc89ed98d282ecb5258a0) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where `process.env` wouldn't be properly populated during the build - [#&#8203;14690](https://github.com/withastro/astro/pull/14690) [`ae7197d`](https://github.com/withastro/astro/commit/ae7197d35676b3745dc9ca71aecbcf3bbbfffb30) Thanks [@&#8203;fredriknorlin](https://github.com/fredriknorlin)! - Fixes a bug where Astro's i18n fallback system with `fallbackType: 'rewrite'` would not generate fallback files for pages whose filename started with a locale key. ### [`v5.15.6`](https://github.com/withastro/astro/releases/tag/astro%405.15.6) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.5...astro@5.15.6) ##### Patch Changes - [#&#8203;14751](https://github.com/withastro/astro/pull/14751) [`18c55e1`](https://github.com/withastro/astro/commit/18c55e15eaef56cbe06626b6bdb43ab250ab6f49) Thanks [@&#8203;delucis](https://github.com/delucis)! - Fixes hydration of client components when running the dev server and using a barrel file that re-exports both Astro and UI framework components. - [#&#8203;14750](https://github.com/withastro/astro/pull/14750) [`35122c2`](https://github.com/withastro/astro/commit/35122c278f987f9213b8e1094382398a16090aff) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Updates the experimental Fonts API to log a warning if families with a conflicting `cssVariable` are provided - [#&#8203;14737](https://github.com/withastro/astro/pull/14737) [`74c8852`](https://github.com/withastro/astro/commit/74c8852c534cc23217a78979e10885429b290e0b) Thanks [@&#8203;Arecsu](https://github.com/Arecsu)! - Fixes an error when using `transition:persist` with components that use declarative Shadow DOM. Astro now avoids re-attaching a shadow root if one already exists, preventing `"Unable to re-attach to existing ShadowDOM"` navigation errors. - [#&#8203;14750](https://github.com/withastro/astro/pull/14750) [`35122c2`](https://github.com/withastro/astro/commit/35122c278f987f9213b8e1094382398a16090aff) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Updates the experimental Fonts API to allow for more granular configuration of remote font families A font family is defined by a combination of properties such as weights and styles (e.g. `weights: [500, 600]` and `styles: ["normal", "bold"]`), but you may want to download only certain combinations of these. For greater control over which font files are downloaded, you can specify the same font (ie. with the same `cssVariable`, `name`, and `provider` properties) multiple times with different combinations. Astro will merge the results and download only the required files. For example, it is possible to download normal `500` and `600` while downloading only italic `500`: ```js // astro.config.mjs import { defineConfig, fontProviders } from 'astro/config'; export default defineConfig({ experimental: { fonts: [ { name: 'Roboto', cssVariable: '--roboto', provider: fontProviders.google(), weights: [500, 600], styles: ['normal'], }, { name: 'Roboto', cssVariable: '--roboto', provider: fontProviders.google(), weights: [500], styles: ['italic'], }, ], }, }); ``` ### [`v5.15.5`](https://github.com/withastro/astro/releases/tag/astro%405.15.5) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.4...astro@5.15.5) ##### Patch Changes - [#&#8203;14712](https://github.com/withastro/astro/pull/14712) [`91780cf`](https://github.com/withastro/astro/commit/91780cffa7cf97cc22694d55962710609a5475b0) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where build's `process.env` would be inlined in the server output - [#&#8203;14713](https://github.com/withastro/astro/pull/14713) [`666d5a7`](https://github.com/withastro/astro/commit/666d5a7ef486aa57f20f87b6cb210619dabd9c4c) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Improves fallbacks generation when using the experimental Fonts API - [#&#8203;14743](https://github.com/withastro/astro/pull/14743) [`dafbb1b`](https://github.com/withastro/astro/commit/dafbb1ba29912099c4faff1440033edc768af8b4) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Improves `X-Forwarded` header validation to prevent cache poisoning and header injection attacks. Now properly validates `X-Forwarded-Proto`, `X-Forwarded-Host`, and `X-Forwarded-Port` headers against configured `allowedDomains` patterns, rejecting malformed or suspicious values. This is especially important when running behind a reverse proxy or load balancer. ### [`v5.15.4`](https://github.com/withastro/astro/releases/tag/astro%405.15.4) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.3...astro@5.15.4) ##### Patch Changes - [#&#8203;14703](https://github.com/withastro/astro/pull/14703) [`970ac0f`](https://github.com/withastro/astro/commit/970ac0f51172e1e6bff4440516a851e725ac3097) Thanks [@&#8203;ArmandPhilippot](https://github.com/ArmandPhilippot)! - Adds missing documentation for some public utilities exported from `astro:i18n`. - [#&#8203;14715](https://github.com/withastro/astro/pull/14715) [`3d55c5d`](https://github.com/withastro/astro/commit/3d55c5d0fb520d470b33d391e5b68861f5b51271) Thanks [@&#8203;ascorbic](https://github.com/ascorbic)! - Adds support for client hydration in `getContainerRenderer()` The `getContainerRenderer()` function is exported by Astro framework integrations to simplify the process of rendering framework components when using the experimental Container API inside a Vite or Vitest environment. This update adds the client hydration entrypoint to the returned object, enabling client-side interactivity for components rendered using this function. Previously this required users to manually call `container.addClientRenderer()` with the appropriate client renderer entrypoint. See [the `container-with-vitest` demo](https://github.com/withastro/astro/blob/main/examples/container-with-vitest/test/ReactWrapper.test.ts) for a usage example, and [the Container API documentation](https://docs.astro.build/en/reference/container-reference/#renderers-option) for more information on using framework components with the experimental Container API. - [#&#8203;14711](https://github.com/withastro/astro/pull/14711) [`a4d284d`](https://github.com/withastro/astro/commit/a4d284dad1c437fa64773f43d030a3e504d783e1) Thanks [@&#8203;deining](https://github.com/deining)! - Fixes typos in documenting our error messages and public APIs. - [#&#8203;14701](https://github.com/withastro/astro/pull/14701) [`9be54c7`](https://github.com/withastro/astro/commit/9be54c77cf8c65d253a70e9b7a8ff144a0f95d66) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where the experimental Fonts API would filter available font files too aggressively, which could prevent the download of woff files when using the google provider ### [`v5.15.3`](https://github.com/withastro/astro/releases/tag/astro%405.15.3) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.2...astro@5.15.3) ##### Patch Changes - [#&#8203;14627](https://github.com/withastro/astro/pull/14627) [`b368de0`](https://github.com/withastro/astro/commit/b368de099e74f5d65c5e8f9799c9c3e0217714ae) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes skew protection support for images and font URLs Adapter-level query parameters (`assetQueryParams`) are now applied to all image and font asset URLs, including: - Dynamic optimized images via `/_image` endpoint - Static optimized image files - Font preload tags and font requests when using the experimental Fonts API - [#&#8203;14631](https://github.com/withastro/astro/pull/14631) [`3ad33f9`](https://github.com/withastro/astro/commit/3ad33f97429fedc1a873c50b54f3cd5e0d95bec8) Thanks [@&#8203;KurtGokhan](https://github.com/KurtGokhan)! - Adds the `astro/jsx-dev-runtime` export as an alias for `astro/jsx-runtime` ### [`v5.15.2`](https://github.com/withastro/astro/releases/tag/astro%405.15.2) [Compare Source](https://github.com/withastro/astro/compare/astro@5.15.1...astro@5.15.2) ##### Patch Changes - [#&#8203;14623](https://github.com/withastro/astro/pull/14623) [`c5fe295`](https://github.com/withastro/astro/commit/c5fe295c41c8bc3b9f85727c3635e9ddc67f0030) Thanks [@&#8203;delucis](https://github.com/delucis)! - Fixes a leak of server runtime code when importing SVGs in client-side code. Previously, when importing an SVG file in client code, Astro could end up adding code for rendering SVGs on the server to the client bundle. - [#&#8203;14621](https://github.com/withastro/astro/pull/14621) [`e3175d9`](https://github.com/withastro/astro/commit/e3175d9ccbf070150ab2229b2564ca0b12a86c30) Thanks [@&#8203;GameRoMan](https://github.com/GameRoMan)! - Updates `vite` version to fix CVE </details> <details> <summary>anomalyco/sst (sst)</summary> ### [`v3.19.3`](https://github.com/anomalyco/sst/releases/tag/v3.19.3) [Compare Source](https://github.com/anomalyco/sst/compare/v3.19.2...v3.19.3) #### Changelog - [`6ee35f8`](https://github.com/anomalyco/sst/commit/6ee35f8ac7ce39a19fbf9f04242c9d1c37643eee) Improvements to `Vector` component ([#&#8203;6457](https://github.com/anomalyco/sst/issues/6457)) - [`bc3deab`](https://github.com/anomalyco/sst/commit/bc3deabdac773f9f34bb1db54f5a2816a3d2ac34) Prepend user `NODE_OPTIONS` instead of overwriting ([#&#8203;6456](https://github.com/anomalyco/sst/issues/6456)) ### [`v3.19.2`](https://github.com/anomalyco/sst/releases/tag/v3.19.2) [Compare Source](https://github.com/anomalyco/sst/compare/v3.19.1...v3.19.2) #### Changelog - [`380788b`](https://github.com/anomalyco/sst/commit/380788bfc80c0eeb61c115cdf7f9574fafd760b7) Add programmatic AWS quota increase example ([#&#8203;6452](https://github.com/anomalyco/sst/issues/6452)) - [`3ee995e`](https://github.com/anomalyco/sst/commit/3ee995e476bb943745b946c4f2d748094cb28e9d) Auto-scroll when dragging to top/bottom edge in dev TUI ([#&#8203;6439](https://github.com/anomalyco/sst/issues/6439)) - [`2a514fd`](https://github.com/anomalyco/sst/commit/2a514fde8382c877fd1aa97630e6a93ea151ab02) Fix binary request body corruption in React and Remix Lambda handlers ([#&#8203;6438](https://github.com/anomalyco/sst/issues/6438)) - [`eafd185`](https://github.com/anomalyco/sst/commit/eafd185ab0d8ab30ff5fc3d46d652c1d6cc1be2f) Fix domain redirect URN collision when hyphens are stripped ([#&#8203;6455](https://github.com/anomalyco/sst/issues/6455)) - [`4705797`](https://github.com/anomalyco/sst/commit/4705797d516c99337161439a071eed8fc13e468d) Include metadata in bus published event ([#&#8203;5230](https://github.com/anomalyco/sst/issues/5230)) - [`370fe90`](https://github.com/anomalyco/sst/commit/370fe90a0d4c95710129fc8aecc1c06eae0c04f8) Remove CloudFront timeout quota check ([#&#8203;6365](https://github.com/anomalyco/sst/issues/6365)) - [`677e3be`](https://github.com/anomalyco/sst/commit/677e3be82859323a5415ea9eab97eb0366c73668) Remove pinned SST version from some examples ([#&#8203;6447](https://github.com/anomalyco/sst/issues/6447)) - [`4dc367d`](https://github.com/anomalyco/sst/commit/4dc367d84da5c345f6e66c083850c0d5837020bd) Restore forceUpgrade jsdoc on Cluster component ([#&#8203;6446](https://github.com/anomalyco/sst/issues/6446)) - [`05754b9`](https://github.com/anomalyco/sst/commit/05754b98a8d9287dc57458c96791c5c209ff8539) Use actual stage name in ApiGatewayV1 URL ([#&#8203;6448](https://github.com/anomalyco/sst/issues/6448)) ### [`v3.19.1`](https://github.com/anomalyco/sst/releases/tag/v3.19.1) [Compare Source](https://github.com/anomalyco/sst/compare/v3.19.0...v3.19.1) #### Changelog - [`58ee48b`](https://github.com/anomalyco/sst/commit/58ee48b112d9165e58ceb9ffe1d25981839acc4f) Add Cloudflare `KV.get` method ([#&#8203;5286](https://github.com/anomalyco/sst/issues/5286)) - [`39e859a`](https://github.com/anomalyco/sst/commit/39e859aac46613f08d59110b6ef6f061154823dc) Kill entire process groups to prevent dev server zombie processes on timeout ([#&#8203;6133](https://github.com/anomalyco/sst/issues/6133)) ### [`v3.19.0`](https://github.com/anomalyco/sst/releases/tag/v3.19.0) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.12...v3.19.0) #### Changelog - [`a7d1545`](https://github.com/anomalyco/sst/commit/a7d15454085574f92a07c2a56c015655ca8b346e) Dim status messages and fix task event CLI styles ([#&#8203;6435](https://github.com/anomalyco/sst/issues/6435)) - [`a343e4c`](https://github.com/anomalyco/sst/commit/a343e4c6bdb6df460917142d3f402bed6645a441) Enable use of Pulumi policy packs ([#&#8203;6371](https://github.com/anomalyco/sst/issues/6371)) - [`6469a79`](https://github.com/anomalyco/sst/commit/6469a792331470ad1b302a46a3a687ff0e5e317e) Fix caching for Next.js images based on the Accept header ([#&#8203;6434](https://github.com/anomalyco/sst/issues/6434)) - [`ff9526e`](https://github.com/anomalyco/sst/commit/ff9526e880041f985e0d005aec3b642f3b889f4c) add support to exotic environments in `tunnel install` ([#&#8203;5015](https://github.com/anomalyco/sst/issues/5015)) - [`726e8a3`](https://github.com/anomalyco/sst/commit/726e8a3f51b50783f2440984e8b5b2934fe8a42f) detect and prevent multiple tunnels from running ([#&#8203;6426](https://github.com/anomalyco/sst/issues/6426)) ### [`v3.18.12`](https://github.com/anomalyco/sst/releases/tag/v3.18.12) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.11...v3.18.12) #### Changelog - [`065d252`](https://github.com/anomalyco/sst/commit/065d252602bb4ee80b272703bd7544be1b57ba71) Enhance TanStackStart error message for AWS-Lambda preset configuration ([#&#8203;5896](https://github.com/anomalyco/sst/issues/5896)) - [`555da61`](https://github.com/anomalyco/sst/commit/555da6195e02f92516de181dd27c85d2de507fd5) Fix `DELETE` requests when `protection: "oac-with-edge-signing"` ([#&#8203;6430](https://github.com/anomalyco/sst/issues/6430)) - [`eb3dfeb`](https://github.com/anomalyco/sst/commit/eb3dfeb7231eaa0cd132b5d7aecb43c7660b15ba) Improve `AGENTS.md` files ([#&#8203;6429](https://github.com/anomalyco/sst/issues/6429)) - [`f2b6ce1`](https://github.com/anomalyco/sst/commit/f2b6ce15897cb40cebe5dbd17259a6bbeeb7710d) Use `PULUMI_IGNORE_AMBIENT_PLUGINS` instead of path prefixing ([#&#8203;6431](https://github.com/anomalyco/sst/issues/6431)) - [`83dddf1`](https://github.com/anomalyco/sst/commit/83dddf1814fd29dec42ac907b00b6d5ed518d336) fix sst add crash when providers is not an object literal ([#&#8203;6432](https://github.com/anomalyco/sst/issues/6432)) ### [`v3.18.11`](https://github.com/anomalyco/sst/releases/tag/v3.18.11) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.10...v3.18.11) #### Changelog - [`d65f384`](https://github.com/anomalyco/sst/commit/d65f384fb33837c13c96803426b752e9e67c353f) Add license info to packages ([#&#8203;6423](https://github.com/anomalyco/sst/issues/6423)) ### [`v3.18.10`](https://github.com/anomalyco/sst/releases/tag/v3.18.10) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.9...v3.18.10) #### Changelog - [`f0da28c`](https://github.com/anomalyco/sst/commit/f0da28c0acfb6a27c139b1c43a173cba8e8a22bb) Patch cloudflare worker placement ([#&#8203;6421](https://github.com/anomalyco/sst/issues/6421)) ### [`v3.18.9`](https://github.com/anomalyco/sst/releases/tag/v3.18.9) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.8...v3.18.9) #### Changelog - [`6a512eb`](https://github.com/anomalyco/sst/commit/6a512eb59475ad9960ab919a147e83867e097dca) Add `D1.get` support ([#&#8203;6420](https://github.com/anomalyco/sst/issues/6420)) - [`e863a44`](https://github.com/anomalyco/sst/commit/e863a44f71e221da2abd2357444d27bc0cea3f06) Add `conditions` to permission utility ([#&#8203;6183](https://github.com/anomalyco/sst/issues/6183)) - [`b7c9e71`](https://github.com/anomalyco/sst/commit/b7c9e71cb4f2a741225553eb64a3e4c769436935) Add markdown and `llm.txt` to docs ([#&#8203;6408](https://github.com/anomalyco/sst/issues/6408)) - [`9199db8`](https://github.com/anomalyco/sst/commit/9199db8a7856c6e82d70110336994f366b7bada4) Improve renaming command ([#&#8203;6069](https://github.com/anomalyco/sst/issues/6069)) - [`299445e`](https://github.com/anomalyco/sst/commit/299445ea2a0249af179e302d7580fad4cf2095fc) fix: load balancer namePrefix can only be 6 characters ([#&#8203;5776](https://github.com/anomalyco/sst/issues/5776)) ### [`v3.18.8`](https://github.com/anomalyco/sst/releases/tag/v3.18.8) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.7...v3.18.8) #### Changelog - [`1970edb`](https://github.com/anomalyco/sst/commit/1970edb060f0e827f97df5b700fc065222cf5c57) Update Cloudflare provider ### [`v3.18.7`](https://github.com/anomalyco/sst/releases/tag/v3.18.7) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.6...v3.18.7) #### Changelog - [`8696bdb`](https://github.com/anomalyco/sst/commit/8696bdbc51c6c59c060ab0271222ef96138d4a10) Add hotkey to clear multiplexer pane ([#&#8203;6178](https://github.com/anomalyco/sst/issues/6178)) - [`5407560`](https://github.com/anomalyco/sst/commit/5407560fd9c99169cf2cf9e10038ea98bc1c85a2) Allow empty SST secrets ([#&#8203;6171](https://github.com/anomalyco/sst/issues/6171)) - [`eec7cbc`](https://github.com/anomalyco/sst/commit/eec7cbc0ba268a60dae167a15aecdb830a381068) display non killable processes first ([#&#8203;6403](https://github.com/anomalyco/sst/issues/6403)) - [`6a9bf83`](https://github.com/anomalyco/sst/commit/6a9bf832f1260c0dda0972530d7f1bdc6f4d96ab) fix go vet issues and add vet step to CI ([#&#8203;6414](https://github.com/anomalyco/sst/issues/6414)) - [`2180e81`](https://github.com/anomalyco/sst/commit/2180e81d1913477409cb7f61a7cda0f234eb3671) fix multiplexer missing events ([#&#8203;6402](https://github.com/anomalyco/sst/issues/6402)) ### [`v3.18.6`](https://github.com/anomalyco/sst/releases/tag/v3.18.6) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.5...v3.18.6) #### Changelog - [`40dd637`](https://github.com/anomalyco/sst/commit/40dd6377508f72c17096abf45fecbf6353a154b2) fix(router): handle trailing-slash routes in path segment boundary check ([#&#8203;6413](https://github.com/anomalyco/sst/issues/6413)) ### [`v3.18.5`](https://github.com/anomalyco/sst/releases/tag/v3.18.5) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.4...v3.18.5) #### Changelog - [`5b72dc0`](https://github.com/anomalyco/sst/commit/5b72dc0459db5818c84ca868dccf7e11d3c64b41) Add the ability to pass a role to the EC2 based NAT of the VPC component ([#&#8203;6269](https://github.com/anomalyco/sst/issues/6269)) - [`63f948e`](https://github.com/anomalyco/sst/commit/63f948e684c70e67e4cd0105d02b483a55ec0ff1) Improve GH actions setup ([#&#8203;6292](https://github.com/anomalyco/sst/issues/6292)) - [`bef56e2`](https://github.com/anomalyco/sst/commit/bef56e2d790a71c33b93a097406b044da68e445c) feat(vpc): add check if BastionInstanceProfile is provided and skip creating Role ([#&#8203;6276](https://github.com/anomalyco/sst/issues/6276)) - [`7b26dbc`](https://github.com/anomalyco/sst/commit/7b26dbc40c080b854c9f4894e5a30a0747ffb39a) fix extra space in CLI ready message ([#&#8203;6411](https://github.com/anomalyco/sst/issues/6411)) ### [`v3.18.4`](https://github.com/anomalyco/sst/releases/tag/v3.18.4) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.3...v3.18.4) #### Changelog - [`d5a7fba`](https://github.com/anomalyco/sst/commit/d5a7fba91997f628a95f6c969db1f21ae48dd728) Add README for NPM ([#&#8203;5999](https://github.com/anomalyco/sst/issues/5999)) ### [`v3.18.3`](https://github.com/anomalyco/sst/releases/tag/v3.18.3) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.2...v3.18.3) #### Changelog - [`56a7deb`](https://github.com/anomalyco/sst/commit/56a7deb76a714e8ec7645fc76c74014d8ffdc14d) Fix and normalize example docs ([#&#8203;6405](https://github.com/anomalyco/sst/issues/6405)) - [`e07b4dd`](https://github.com/anomalyco/sst/commit/e07b4ddaa5eb12a28f25af5c4429184754716c83) Fix esbuild config handling ([#&#8203;6409](https://github.com/anomalyco/sst/issues/6409)) ### [`v3.18.2`](https://github.com/anomalyco/sst/releases/tag/v3.18.2) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.1...v3.18.2) #### Changelog - [`0ec0135`](https://github.com/anomalyco/sst/commit/0ec0135dfe6042f77d765afc9f0f8ffd1da92e26) Detect OpenNext version based on Next.js version ([#&#8203;6406](https://github.com/anomalyco/sst/issues/6406)) - [`6256694`](https://github.com/anomalyco/sst/commit/62566944f3173bedc46659ef92f6edf5262563b9) fix intersection types breaking docs generation ([#&#8203;6401](https://github.com/anomalyco/sst/issues/6401)) ### [`v3.18.1`](https://github.com/anomalyco/sst/releases/tag/v3.18.1) [Compare Source](https://github.com/anomalyco/sst/compare/v3.18.0...v3.18.1) #### Changelog - [`f382b54`](https://github.com/anomalyco/sst/commit/f382b5487f8db730426d55a45e581108d46470e2) Add SSM permissions for tagging resources ([#&#8203;6280](https://github.com/anomalyco/sst/issues/6280)) - [`544c09d`](https://github.com/anomalyco/sst/commit/544c09d88be3ca3de5b2f593e75ad6a2a197a47c) Fix dev command timeout / restart ([#&#8203;6351](https://github.com/anomalyco/sst/issues/6351)) - [`1d92028`](https://github.com/anomalyco/sst/commit/1d920280c4eef55e38daef7bf083954a427e03cf) Fix public lambdas and sites returning 403 on new AWS accounts ([#&#8203;6400](https://github.com/anomalyco/sst/issues/6400)) - [`810ea48`](https://github.com/anomalyco/sst/commit/810ea48f5ab330df08dfacf1c5cdb02f344f593f) Fix race condition in basic mode server startup ([#&#8203;6318](https://github.com/anomalyco/sst/issues/6318)) - [`71f495b`](https://github.com/anomalyco/sst/commit/71f495b7cfbb42853a1e2a9ebde80e551d82c1a5) fix windows panic when copying template files ([#&#8203;6382](https://github.com/anomalyco/sst/issues/6382)) ### [`v3.18.0`](https://github.com/anomalyco/sst/releases/tag/v3.18.0) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.40...v3.18.0) #### Changelog - [`9f331d1`](https://github.com/anomalyco/sst/commit/9f331d1c70325269319e76c5b4d890bc12384dfa) Add `--exclude` flag to CLI commands ([#&#8203;6340](https://github.com/anomalyco/sst/issues/6340)) - [`306a216`](https://github.com/anomalyco/sst/commit/306a2166007937f50bcff1303da6f3977ea2ca81) Enable transform of nextjs lambda roles ([#&#8203;6106](https://github.com/anomalyco/sst/issues/6106)) - [`086111d`](https://github.com/anomalyco/sst/commit/086111d09be7c523ce14a6d23172b8e16e593087) feat: add base path support to TanStack Start ([#&#8203;6279](https://github.com/anomalyco/sst/issues/6279)) - [`7e40fe8`](https://github.com/anomalyco/sst/commit/7e40fe827437f02058066e87dfdd2109247a476e) fix function environment not updating on redeploy ([#&#8203;6338](https://github.com/anomalyco/sst/issues/6338)) - [`882af07`](https://github.com/anomalyco/sst/commit/882af0787c85c97b8bcae154bf2be4a87417f108) fix(router): respect path segment boundaries in route matching ([#&#8203;6277](https://github.com/anomalyco/sst/issues/6277)) - [`43ed883`](https://github.com/anomalyco/sst/commit/43ed883099852cbbd27dc4614bc51113083f9afa) fix: ReferenceError when AWS Router's viewerRequest injection uses await ([#&#8203;6331](https://github.com/anomalyco/sst/issues/6331)) ([#&#8203;6332](https://github.com/anomalyco/sst/issues/6332)) ### [`v3.17.40`](https://github.com/anomalyco/sst/releases/tag/v3.17.40) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.39...v3.17.40) #### Changelog - [`f917793`](https://github.com/anomalyco/sst/commit/f917793b5e5798acd85063e6849069749438457a) fix(Router): include x-forwarded-host in cache key to fix cross-domain content mismatch ([#&#8203;6384](https://github.com/anomalyco/sst/issues/6384)) ### [`v3.17.39`](https://github.com/anomalyco/sst/releases/tag/v3.17.39) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.38...v3.17.39) #### Changelog - [`c6c1b50`](https://github.com/anomalyco/sst/commit/c6c1b507cd9e363e30ec24c64c0042f43d755e7a) Handle failed type assertions gracefully ([#&#8203;6354](https://github.com/anomalyco/sst/issues/6354)) - [`c3bd046`](https://github.com/anomalyco/sst/commit/c3bd0465b48b9c361a03e80b515c191f6530f44e) Handle imported VPC and EIPs for tunnel ([#&#8203;6341](https://github.com/anomalyco/sst/issues/6341)) - [`3ea3ad6`](https://github.com/anomalyco/sst/commit/3ea3ad6dadbb40a0117a153063de6df095ce19e0) fix(ecs): upgrade docker-build provider to fix ECR image deletion ([#&#8203;6378](https://github.com/anomalyco/sst/issues/6378)) - [`1b06050`](https://github.com/anomalyco/sst/commit/1b060504abebfd6425083e24a661c186e8e1ffb9) fix: Component resource sending input args to pulumi breaks some sst components ([#&#8203;6361](https://github.com/anomalyco/sst/issues/6361)) - [`ffb33ba`](https://github.com/anomalyco/sst/commit/ffb33babb702a98b9548d801bbdda30e89c4d75e) remove ssr site duplicated lambda permission `statementId` ([#&#8203;6350](https://github.com/anomalyco/sst/issues/6350)) ### [`v3.17.38`](https://github.com/anomalyco/sst/releases/tag/v3.17.38) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.37...v3.17.38) #### Changelog - [`9440ed2`](https://github.com/anomalyco/sst/commit/9440ed26702aa8237fec66dfb8ca697b040f4059) Bumping default version of OpenNext to 3.9.8 ([#&#8203;6334](https://github.com/anomalyco/sst/issues/6334)) ### [`v3.17.37`](https://github.com/anomalyco/sst/releases/tag/v3.17.37) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.36...v3.17.37) #### Changelog - [`8b60ff4`](https://github.com/anomalyco/sst/commit/8b60ff4e66aaf432ebbe88d87d684891854fb90d) fix(Vpc): use self.natInstances in registerOutputs to fix Vpc.get() with bastion ([#&#8203;6347](https://github.com/anomalyco/sst/issues/6347)) ### [`v3.17.36`](https://github.com/anomalyco/sst/releases/tag/v3.17.36) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.35...v3.17.36) #### Changelog - [`4d1e3c5`](https://github.com/anomalyco/sst/commit/4d1e3c55b900ad4604128429239b3e9eabf14b02) Fix AWS `StaticSite` file upload order ([#&#8203;6289](https://github.com/anomalyco/sst/issues/6289)) - [`8541338`](https://github.com/anomalyco/sst/commit/854133839b45a9b98770486d226881cc716c90c8) Fix Cloudflare `StaticSite` file upload order ([#&#8203;6290](https://github.com/anomalyco/sst/issues/6290)) - [`36b4993`](https://github.com/anomalyco/sst/commit/36b499315bffa6109a1797851245474832c72b07) feat: add options to restrict ssr lambda functions to cloudfront-only access using OAC ([#&#8203;5581](https://github.com/anomalyco/sst/issues/5581)) ### [`v3.17.35`](https://github.com/anomalyco/sst/releases/tag/v3.17.35) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.34...v3.17.35) #### Changelog - [`fa6469f`](https://github.com/anomalyco/sst/commit/fa6469fc26307fb391954c5b17734732a61cd507) fix: pick correct bun on alpine arm64 ([#&#8203;5723](https://github.com/anomalyco/sst/issues/5723)) - [`c75408b`](https://github.com/anomalyco/sst/commit/c75408b0ab58fe42bf25bfc26dee9196dd2f66d4) sync: ci ### [`v3.17.34`](https://github.com/anomalyco/sst/releases/tag/v3.17.34) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.25...v3.17.34) #### Changelog - [`f931ac2`](https://github.com/anomalyco/sst/commit/f931ac27a935c6fdb1f4f3355b05041fcfe6b830) fix dynamodb subscription on existing tables ([#&#8203;5908](https://github.com/anomalyco/sst/issues/5908)) ### [`v3.17.25`](https://github.com/anomalyco/sst/releases/tag/v3.17.25) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.24...v3.17.25) #### Changelog - [`7b62ac3`](https://github.com/anomalyco/sst/commit/7b62ac33b0c4d8f27de71e3415807b740379ebfe) Fix ([#&#8203;5667](https://github.com/anomalyco/sst/issues/5667)): Do not run the dev command for static sites when passing dev as false. ([#&#8203;5698](https://github.com/anomalyco/sst/issues/5698)) - [`0f0ec1b`](https://github.com/anomalyco/sst/commit/0f0ec1bddacb4734bf2363ad19d86839b293cc37) Fix secret set command for files ([#&#8203;5870](https://github.com/anomalyco/sst/issues/5870)) - [`ee4f360`](https://github.com/anomalyco/sst/commit/ee4f36097a50ed7b11936dc4a82c630f60dd262f) feat: Add watch configuration for dev ([#&#8203;5652](https://github.com/anomalyco/sst/issues/5652)) - [`9e7cb95`](https://github.com/anomalyco/sst/commit/9e7cb9539ef1ae9fa39ef7d9ac5e65ce3044d6ab) fix .env.stage should override .env ([#&#8203;6081](https://github.com/anomalyco/sst/issues/6081)) - [`bd44133`](https://github.com/anomalyco/sst/commit/bd441337516563486fa6e8af7b84b49c0ff6640c) fix: update vpc examples to actual/correct usage ([#&#8203;5966](https://github.com/anomalyco/sst/issues/5966)) ### [`v3.17.24`](https://github.com/anomalyco/sst/releases/tag/v3.17.24) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.23...v3.17.24) #### Changelog - [`f25ab85`](https://github.com/anomalyco/sst/commit/f25ab85b154070ebe1999d1929bc3ceabcced353) Fix Redis invalid connection message ([#&#8203;6172](https://github.com/anomalyco/sst/issues/6172)) - [`a338483`](https://github.com/anomalyco/sst/commit/a338483f0350204ad43cf9d45a24421c6a1637bd) Fix Remix unused '[@&#8203;ts-expect-error](https://github.com/ts-expect-error)' directive ([#&#8203;6174](https://github.com/anomalyco/sst/issues/6174)) - [`432418a`](https://github.com/anomalyco/sst/commit/432418a2bb8d55584aace24982a90782e8b83431) Make target not found error visible ([#&#8203;6208](https://github.com/anomalyco/sst/issues/6208)) - [`13b5cc0`](https://github.com/anomalyco/sst/commit/13b5cc0ecb3e820d0aec1bbe951930d06c0c0abd) fix(cloudflare): fix cloudflare queue binding causing deployment error ([#&#8203;6226](https://github.com/anomalyco/sst/issues/6226)) ([#&#8203;6227](https://github.com/anomalyco/sst/issues/6227)) - [`8b60178`](https://github.com/anomalyco/sst/commit/8b60178728606bca229ca272c9354335fbbf87c6) fix(service): correct operator precedence in health check path normalization ([#&#8203;6185](https://github.com/anomalyco/sst/issues/6185)) ### [`v3.17.23`](https://github.com/anomalyco/sst/releases/tag/v3.17.23) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.22...v3.17.23) #### Changelog - [`722e70a`](https://github.com/anomalyco/sst/commit/722e70a7adb88c6af2b2330f9c87225388422ac7) cf: add namespace id to link properties ### [`v3.17.22`](https://github.com/anomalyco/sst/releases/tag/v3.17.22) [Compare Source](https://github.com/anomalyco/sst/compare/v3.17.21...v3.17.22) #### Changelog - [`14f6f95`](https://github.com/anomalyco/sst/commit/14f6f95538c0227908a8fcf4eff855a04a3c1c63) cf: add api retry </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "on the first day of the month" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNC45IiwidXBkYXRlZEluVmVyIjoiNDQuMTQuOSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
svc-renovate force-pushed renovate/dependencies from 86b9af066c to 6e47dc6fc0 2026-09-02 00:02:23 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from 6e47dc6fc0 to 66f9bf2365 2026-09-05 15:01:55 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from 66f9bf2365 to 65e8b842d9 2026-09-06 00:01:46 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from 65e8b842d9 to ba8b7d326b 2026-09-06 04:01:56 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from ba8b7d326b to 316a14d32e 2026-09-12 14:01:56 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from 316a14d32e to 5e1db5eb80 2026-09-14 02:01:39 +10:00 Compare
svc-renovate force-pushed renovate/dependencies from 5e1db5eb80 to baf41c613d 2026-09-15 00:02:05 +10:00 Compare
sophie merged commit 06d22ecb63 into main 2026-09-16 22:52:24 +10:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sophie/what.aboutthat.lol!3
No description provided.