Bumps the docs-site group in /docs with 5 updates: | Package | From | To | | --- | --- | --- | | [@astrojs/markdown-remark](https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark) | `7.2.4` | `7.3.0` | | [@astrojs/sitemap](https://github.com/withastro/astro/tree/HEAD/packages/integrations/sitemap) | `3.7.3` | `3.7.4` | | [@astrojs/starlight](https://github.com/withastro/starlight/tree/HEAD/packages/starlight) | `0.41.9` | `0.42.0` | | [@expressive-code/core](https://github.com/expressive-code/expressive-code/tree/HEAD/packages/@expressive-code/core) | `0.44.1` | `0.44.2` | | [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) | `7.2.9` | `7.3.1` | Updates `@astrojs/markdown-remark` from 7.2.4 to 7.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/releases">@astrojs/markdown-remark's releases</a>.</em></p> <blockquote> <h2><code>@astrojs/markdown-remark</code><a href="https://github.com/7"><code>@7</code></a>.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17262">#17262</a> <a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a> Thanks <a href="https://github.com/Princesseuh"><code>@Princesseuh</code></a>! - Adds MDX rendering to the <code>unified()</code> and <code>satteri()</code> processors.</p> <p>Both processors now compile <code>.mdx</code> files themselves. You still need to install <code>@astrojs/mdx</code> to add MDX support to your project.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17262">#17262</a> <a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a> Thanks <a href="https://github.com/Princesseuh"><code>@Princesseuh</code></a>! - Adds a <code>recmaPlugins</code> option to <code>unified()</code> for adding recma (estree/JSX) plugins to the MDX compiler.</p> </li> </ul> <h3>Patch Changes</h3> <ul> <li>Updated dependencies [<a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a>]: <ul> <li><code>@astrojs/internal-helpers</code><a href="https://github.com/0"><code>@0</code></a>.11.0</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/blob/main/packages/markdown/remark/CHANGELOG.md">@astrojs/markdown-remark's changelog</a>.</em></p> <blockquote> <h2>7.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17262">#17262</a> <a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a> Thanks <a href="https://github.com/Princesseuh"><code>@Princesseuh</code></a>! - Adds MDX rendering to the <code>unified()</code> and <code>satteri()</code> processors.</p> <p>Both processors now compile <code>.mdx</code> files themselves. You still need to install <code>@astrojs/mdx</code> to add MDX support to your project.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17262">#17262</a> <a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a> Thanks <a href="https://github.com/Princesseuh"><code>@Princesseuh</code></a>! - Adds a <code>recmaPlugins</code> option to <code>unified()</code> for adding recma (estree/JSX) plugins to the MDX compiler.</p> </li> </ul> <h3>Patch Changes</h3> <ul> <li>Updated dependencies [<a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a>]: <ul> <li><code>@astrojs/internal-helpers</code><a href="https://github.com/0"><code>@0</code></a>.11.0</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/withastro/astro/commit/2fdf731428aa738d5dcf3041b4e78eb9d036968c"><code>2fdf731</code></a> [ci] release (<a href="https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark/issues/17849">#17849</a>)</li> <li><a href="https://github.com/withastro/astro/commit/f8e94585ab6c38e2702ee1e2e540858f72058a40"><code>f8e9458</code></a> feat: move MDX into the processors themselves (<a href="https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark/issues/17262">#17262</a>)</li> <li>See full diff in <a href="https://github.com/withastro/astro/commits/@astrojs/markdown-remark@7.3.0/packages/markdown/remark">compare view</a></li> </ul> </details> <br /> Updates `@astrojs/sitemap` from 3.7.3 to 3.7.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/releases">@astrojs/sitemap's releases</a>.</em></p> <blockquote> <h2><code>@astrojs/sitemap</code><a href="https://github.com/3"><code>@3</code></a>.7.4</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/withastro/astro/pull/17851">#17851</a> <a href="https://github.com/withastro/astro/commit/52d3f56999ecdf92510b2c16ed2a3a4785b9c73a"><code>52d3f56</code></a> Thanks <a href="https://github.com/apps/astro-factory"><code>@astro-factory</code></a>! - Fixes the sitemap outputting a URL with an empty path for the homepage (e.g. <code>https://example.com</code> instead of <code>https://example.com/</code>) when <code>trailingSlash</code> is set to <code>"never"</code> or <code>build.format</code> is set to <code>"file"</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/blob/main/packages/integrations/sitemap/CHANGELOG.md">@astrojs/sitemap's changelog</a>.</em></p> <blockquote> <h2>3.7.4</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/withastro/astro/pull/17851">#17851</a> <a href="https://github.com/withastro/astro/commit/52d3f56999ecdf92510b2c16ed2a3a4785b9c73a"><code>52d3f56</code></a> Thanks <a href="https://github.com/apps/astro-factory"><code>@astro-factory</code></a>! - Fixes the sitemap outputting a URL with an empty path for the homepage (e.g. <code>https://example.com</code> instead of <code>https://example.com/</code>) when <code>trailingSlash</code> is set to <code>"never"</code> or <code>build.format</code> is set to <code>"file"</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/withastro/astro/commit/2fdf731428aa738d5dcf3041b4e78eb9d036968c"><code>2fdf731</code></a> [ci] release (<a href="https://github.com/withastro/astro/tree/HEAD/packages/integrations/sitemap/issues/17849">#17849</a>)</li> <li><a href="https://github.com/withastro/astro/commit/52d3f56999ecdf92510b2c16ed2a3a4785b9c73a"><code>52d3f56</code></a> fix(<code>@astrojs/sitemap</code>): preserve root path <code>/</code> in sitemap URLs when trailingSl...</li> <li><a href="https://github.com/withastro/astro/commit/2bfb179545249786e9f395325c88a9dfef574acb"><code>2bfb179</code></a> chore: simpler package.json types (<a href="https://github.com/withastro/astro/tree/HEAD/packages/integrations/sitemap/issues/17229">#17229</a>)</li> <li>See full diff in <a href="https://github.com/withastro/astro/commits/@astrojs/sitemap@3.7.4/packages/integrations/sitemap">compare view</a></li> </ul> </details> <br /> Updates `@astrojs/starlight` from 0.41.9 to 0.42.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/withastro/starlight/releases">@astrojs/starlight's releases</a>.</em></p> <blockquote> <h2><code>@astrojs/starlight</code><a href="https://github.com/0"><code>@0</code></a>.42.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/3572">#3572</a> <a href="https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4"><code>292fb17</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Distributes package as JavaScript files with dedicated type declaration files instead of TypeScript source files.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4121">#4121</a> <a href="https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa"><code>2623ae6</code></a> Thanks <a href="https://github.com/delucis"><code>@delucis</code></a>! - Simplifies markup for Starlight’s mobile menu toggle</p> <p><strong>⚠️ Potentially breaking change:</strong> If you use a theme plugin, custom styles, or component overrides targeting the <code>MobileMenuToggle</code> button or <code>PageFrame</code> components, you may need to adjust these for the new markup. The button is no longer wrapped in a <code><starlight-menu-button></code> custom element and no longer uses the <code>aria-expanded</code> attribute. Instead, you can use the <code>.sl-menu-button</code> class name to target the button and the <code>:popover-open</code> pseudo-class to style the menu open state specifically.</p> <p>In the following example, custom styles for the menu button are updated for the new approach:</p> <pre lang="diff"><code>- starlight-menu-button button { + .sl-menu-button { color: var(--sl-color-text); } <ul> <li>starlight-menu-button[aria-expanded='true'] button {</li> </ul> <ul> <li>.sl-menu-button:has(~ :popover-open) { color: var(--sl-color-text-accent-high); } </code></pre></li> </ul> <p>See <a href="https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileMenuToggle.astro"><code>MobileMenuToggle.astro</code></a> and <a href="https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageFrame.astro"><code>PageFrame.astro</code></a> on GitHub for the full source code of the updated components.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/3572">#3572</a> <a href="https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4"><code>292fb17</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Removes the <code>tagline</code> configuration option, which was never used.</p> <p>If your configuration included a <code>tagline</code> option, you can safely remove it without any replacement.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4134">#4134</a> <a href="https://github.com/withastro/starlight/commit/6135f015b527453d7083ad01d2dc6c61d72fbefc"><code>6135f01</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Updates internal <code>@astrojs/mdx</code>, <code>@astrojs/markdown-satteri</code>, and <code>satteri</code> dependencies.</p> <p>⚠️ <strong>BREAKING CHANGE:</strong> The following minimum versions are now required:</p> <ul> <li><code>astro</code> v7.2.10 or later</li> <li><code>@astrojs/markdown-satteri</code> 0.4.0 or later (if you use it)</li> <li><code>@astrojs/markdown-remark</code> 7.3.0 or later (if you use it)</li> </ul> <p>Please update Starlight and Astro together:</p> <pre lang="sh"><code>npx @astrojs/upgrade </code></pre> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4121">#4121</a> <a href="https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa"><code>2623ae6</code></a> Thanks <a href="https://github.com/delucis"><code>@delucis</code></a>! - Refactors Starlight’s mobile menu toggle to work when JavaScript fails or is disabled</p> <p>⚠️ <strong>BREAKING CHANGE:</strong> This release drops official support for Chromium-based browsers prior to version 116 (released August 2023), Safari-based browsers prior to version 17.0 (released September 2023), and Firefox prior to version 125 (released April 2024). You can find a list of currently supported browsers and their versions using this <a href="https://browsersl.ist/#q=%3E+0.5%25%2C+not+dead%2C+Chrome+%3E%3D+116%2C+Edge+%3E%3D+116%2C+Firefox+%3E%3D+125%2C+Safari+%3E%3D+17.0%2C+iOS+%3E%3D+17.0%2C+not+op_mini+all">browserslist query</a>.</p> <p>This change also removes the <code>data-mobile-menu-expanded</code> attribute, which was previously added to <code><body></code> while the mobile menu is open. If you have custom code that was depending on this attribute, you will need to update it to use a new selector to check if the mobile menu is open.</p> <p>In the following example, a custom background colour for the site header while the menu is open is updated for the new approach:</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/withastro/starlight/blob/main/packages/starlight/CHANGELOG.md">@astrojs/starlight's changelog</a>.</em></p> <blockquote> <h2>0.42.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/3572">#3572</a> <a href="https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4"><code>292fb17</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Distributes package as JavaScript files with dedicated type declaration files instead of TypeScript source files.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4121">#4121</a> <a href="https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa"><code>2623ae6</code></a> Thanks <a href="https://github.com/delucis"><code>@delucis</code></a>! - Simplifies markup for Starlight’s mobile menu toggle</p> <p><strong>⚠️ Potentially breaking change:</strong> If you use a theme plugin, custom styles, or component overrides targeting the <code>MobileMenuToggle</code> button or <code>PageFrame</code> components, you may need to adjust these for the new markup. The button is no longer wrapped in a <code><starlight-menu-button></code> custom element and no longer uses the <code>aria-expanded</code> attribute. Instead, you can use the <code>.sl-menu-button</code> class name to target the button and the <code>:popover-open</code> pseudo-class to style the menu open state specifically.</p> <p>In the following example, custom styles for the menu button are updated for the new approach:</p> <pre lang="diff"><code>- starlight-menu-button button { + .sl-menu-button { color: var(--sl-color-text); } <ul> <li>starlight-menu-button[aria-expanded='true'] button {</li> </ul> <ul> <li>.sl-menu-button:has(~ :popover-open) { color: var(--sl-color-text-accent-high); } </code></pre></li> </ul> <p>See <a href="https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileMenuToggle.astro"><code>MobileMenuToggle.astro</code></a> and <a href="https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageFrame.astro"><code>PageFrame.astro</code></a> on GitHub for the full source code of the updated components.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/3572">#3572</a> <a href="https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4"><code>292fb17</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Removes the <code>tagline</code> configuration option, which was never used.</p> <p>If your configuration included a <code>tagline</code> option, you can safely remove it without any replacement.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4134">#4134</a> <a href="https://github.com/withastro/starlight/commit/6135f015b527453d7083ad01d2dc6c61d72fbefc"><code>6135f01</code></a> Thanks <a href="https://github.com/HiDeoo"><code>@HiDeoo</code></a>! - Updates internal <code>@astrojs/mdx</code>, <code>@astrojs/markdown-satteri</code>, and <code>satteri</code> dependencies.</p> <p>⚠️ <strong>BREAKING CHANGE:</strong> The following minimum versions are now required:</p> <ul> <li><code>astro</code> v7.2.10 or later</li> <li><code>@astrojs/markdown-satteri</code> 0.4.0 or later (if you use it)</li> <li><code>@astrojs/markdown-remark</code> 7.3.0 or later (if you use it)</li> </ul> <p>Please update Starlight and Astro together:</p> <pre lang="sh"><code>npx @astrojs/upgrade </code></pre> </li> <li> <p><a href="https://redirect.github.com/withastro/starlight/pull/4121">#4121</a> <a href="https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa"><code>2623ae6</code></a> Thanks <a href="https://github.com/delucis"><code>@delucis</code></a>! - Refactors Starlight’s mobile menu toggle to work when JavaScript fails or is disabled</p> <p>⚠️ <strong>BREAKING CHANGE:</strong> This release drops official support for Chromium-based browsers prior to version 116 (released August 2023), Safari-based browsers prior to version 17.0 (released September 2023), and Firefox prior to version 125 (released April 2024). You can find a list of currently supported browsers and their versions using this <a href="https://browsersl.ist/#q=%3E+0.5%25%2C+not+dead%2C+Chrome+%3E%3D+116%2C+Edge+%3E%3D+116%2C+Firefox+%3E%3D+125%2C+Safari+%3E%3D+17.0%2C+iOS+%3E%3D+17.0%2C+not+op_mini+all">browserslist query</a>.</p> <p>This change also removes the <code>data-mobile-menu-expanded</code> attribute, which was previously added to <code><body></code> while the mobile menu is open. If you have custom code that was depending on this attribute, you will need to update it to use a new selector to check if the mobile menu is open.</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/withastro/starlight/commit/88ad3c2630487ba227a7b4ccbffc01a2bdf623a5"><code>88ad3c2</code></a> [ci] release (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4172">#4172</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/74cb3f1a40985eed5f7974e2b1b994a2bdcfd8be"><code>74cb3f1</code></a> Update dependencies (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4173">#4173</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/6135f015b527453d7083ad01d2dc6c61d72fbefc"><code>6135f01</code></a> Use Sätteri 0.10 APIs (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4134">#4134</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa"><code>2623ae6</code></a> Refactor mobile menu to use Popover API (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4121">#4121</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/09af1c621e3bd48fa601d6ce47be181bb44d0e9b"><code>09af1c6</code></a> chore(deps): update <code>magic-string</code> to v1 (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4082">#4082</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4"><code>292fb17</code></a> [i18nIgnore] Transpile Starlight packages (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/3572">#3572</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/0138f22c04ab2a659b642526345ba53bef7e5033"><code>0138f22</code></a> [ci] release (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4169">#4169</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/32a5e29127c13946ce746c36d7cb194f35d11952"><code>32a5e29</code></a> Fix hidden heading anchor links (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4167">#4167</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/cdfafd8eedbbd6653cd6a1d3b1542b44ed1ba19e"><code>cdfafd8</code></a> perf: optimize route and sidebar lookups (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4148">#4148</a>)</li> <li><a href="https://github.com/withastro/starlight/commit/dd7fb9721e117337195fdfdb92a081d7dd23701e"><code>dd7fb97</code></a> chore: add benchmarks (<a href="https://github.com/withastro/starlight/tree/HEAD/packages/starlight/issues/4157">#4157</a>)</li> <li>Additional commits viewable in <a href="https://github.com/withastro/starlight/commits/@astrojs/starlight@0.42.0/packages/starlight">compare view</a></li> </ul> </details> <br /> Updates `@expressive-code/core` from 0.44.1 to 0.44.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/expressive-code/expressive-code/releases">@expressive-code/core's releases</a>.</em></p> <blockquote> <h2><code>@expressive-code/core</code><a href="https://github.com/0"><code>@0</code></a>.44.2</h2> <p>No release notes provided.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/expressive-code/expressive-code/blob/main/packages/@expressive-code/core/CHANGELOG.md">@expressive-code/core's changelog</a>.</em></p> <blockquote> <h2>0.44.2</h2> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/expressive-code/expressive-code/commit/5c5b4522e0db357f453e2e6c9a46790e83ef6322"><code>5c5b452</code></a> [CI] Release (<a href="https://github.com/expressive-code/expressive-code/tree/HEAD/packages/@expressive-code/core/issues/469">#469</a>)</li> <li>See full diff in <a href="https://github.com/expressive-code/expressive-code/commits/@expressive-code/core@0.44.2/packages/@expressive-code/core">compare view</a></li> </ul> </details> <br /> Updates `astro` from 7.2.9 to 7.3.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/releases">astro's releases</a>.</em></p> <blockquote> <h2>astro@7.3.1</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/withastro/astro/pull/17899">#17899</a> <a href="https://github.com/withastro/astro/commit/03896405717471f7d6ff54986ed6beaec0cac94f"><code>0389640</code></a> Thanks <a href="https://github.com/ematipico"><code>@ematipico</code></a>! - Fixes an error that prevented projects using <code>astro:assets</code> from starting or building</li> </ul> <h2>astro@7.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17767">#17767</a> <a href="https://github.com/withastro/astro/commit/ce7c91f77dbd7be03c04bc13f87af9d01fef6cef"><code>ce7c91f</code></a> Thanks <a href="https://github.com/apps/astro-factory"><code>@astro-factory</code></a>! - Adds <code>--ignore-lock</code> flag to <code>astro preview</code>, allowing multiple preview servers to run simultaneously on different ports. This is useful for E2E testing workflows (e.g., Playwright) that need to run several preview servers at once.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17818">#17818</a> <a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> Thanks <a href="https://github.com/florian-lefebvre"><code>@florian-lefebvre</code></a>! - Adds a <code>logger</code> parameter to image services hooks</p> <p>Custom image services now receive Astro's runtime logger as an extra argument. Messages logged with it are routed through the destination configured in <code>logger</code> and respect your log level, instead of being written straight to the console:</p> <pre lang="ts"><code>import type { LocalImageService } from 'astro'; <p>const service: LocalImageService = { // ... async transform(inputBuffer, transform, imageConfig, logger) { logger.warn(<code>Could not optimize &quot;${transform.src}&quot;. Passing it through unchanged.</code>); return { data: inputBuffer, format: 'png' }; }, }; </code></pre></p> <p>Astro's built-in Sharp service now uses this logger for the warnings it emits when it encounters an unexpected or unsupported source format.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17818">#17818</a> <a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> Thanks <a href="https://github.com/florian-lefebvre"><code>@florian-lefebvre</code></a>! - Adds <code>logger</code> to the context object passed to cache providers</p> <p>Custom cache providers now receive Astro's runtime logger on the context passed to <code>onRequest()</code>. Messages logged with it are routed through the destination configured in <code>logger</code> and respect your log level, instead of being written straight to the console:</p> <pre lang="ts"><code>import type { CacheProvider } from 'astro'; <p>const provider: CacheProvider = { name: 'my-cache', async onRequest({ request, url, logger }, next) { logger.warn(<code>Skipping cache for ${url.pathname} because the response sets a cookie.</code>); return next(); }, // ... }; </code></pre></p> <p>Astro's built-in <code>memoryCache()</code> provider now uses this logger for the warnings it emits when it skips caching a response that sets cookies, and when a background revalidation fails.</p> </li> </ul> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/withastro/astro/pull/17818">#17818</a> <a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> Thanks <a href="https://github.com/florian-lefebvre"><code>@florian-lefebvre</code></a>! - Updates Astro's remaining internal warnings and errors to be written through the configured logger instead of directly to the console, when possible</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md">astro's changelog</a>.</em></p> <blockquote> <h2>7.3.1</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/withastro/astro/pull/17899">#17899</a> <a href="https://github.com/withastro/astro/commit/03896405717471f7d6ff54986ed6beaec0cac94f"><code>0389640</code></a> Thanks <a href="https://github.com/ematipico"><code>@ematipico</code></a>! - Fixes an error that prevented projects using <code>astro:assets</code> from starting or building</li> </ul> <h2>7.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17767">#17767</a> <a href="https://github.com/withastro/astro/commit/ce7c91f77dbd7be03c04bc13f87af9d01fef6cef"><code>ce7c91f</code></a> Thanks <a href="https://github.com/apps/astro-factory"><code>@astro-factory</code></a>! - Adds <code>--ignore-lock</code> flag to <code>astro preview</code>, allowing multiple preview servers to run simultaneously on different ports. This is useful for E2E testing workflows (e.g., Playwright) that need to run several preview servers at once.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17818">#17818</a> <a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> Thanks <a href="https://github.com/florian-lefebvre"><code>@florian-lefebvre</code></a>! - Adds a <code>logger</code> parameter to image services hooks</p> <p>Custom image services now receive Astro's runtime logger as an extra argument. Messages logged with it are routed through the destination configured in <code>logger</code> and respect your log level, instead of being written straight to the console:</p> <pre lang="ts"><code>import type { LocalImageService } from 'astro'; <p>const service: LocalImageService = { // ... async transform(inputBuffer, transform, imageConfig, logger) { logger.warn(<code>Could not optimize &quot;${transform.src}&quot;. Passing it through unchanged.</code>); return { data: inputBuffer, format: 'png' }; }, }; </code></pre></p> <p>Astro's built-in Sharp service now uses this logger for the warnings it emits when it encounters an unexpected or unsupported source format.</p> </li> <li> <p><a href="https://redirect.github.com/withastro/astro/pull/17818">#17818</a> <a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> Thanks <a href="https://github.com/florian-lefebvre"><code>@florian-lefebvre</code></a>! - Adds <code>logger</code> to the context object passed to cache providers</p> <p>Custom cache providers now receive Astro's runtime logger on the context passed to <code>onRequest()</code>. Messages logged with it are routed through the destination configured in <code>logger</code> and respect your log level, instead of being written straight to the console:</p> <pre lang="ts"><code>import type { CacheProvider } from 'astro'; <p>const provider: CacheProvider = { name: 'my-cache', async onRequest({ request, url, logger }, next) { logger.warn(<code>Skipping cache for ${url.pathname} because the response sets a cookie.</code>); return next(); }, // ... }; </code></pre></p> <p>Astro's built-in <code>memoryCache()</code> provider now uses this logger for the warnings it emits when it skips caching a response that sets cookies, and when a background revalidation fails.</p> </li> </ul> <h3>Patch Changes</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/withastro/astro/commit/92f23cc121d3a1a03c6fb901a519309662b333de"><code>92f23cc</code></a> [ci] release (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17900">#17900</a>)</li> <li><a href="https://github.com/withastro/astro/commit/03896405717471f7d6ff54986ed6beaec0cac94f"><code>0389640</code></a> fix: dont use internal paths (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17899">#17899</a>)</li> <li><a href="https://github.com/withastro/astro/commit/f800de13ffab9542f8d1bd13a8f4481c5f5c083a"><code>f800de1</code></a> [ci] release (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17881">#17881</a>)</li> <li><a href="https://github.com/withastro/astro/commit/1e0b7e6023128ad25a79ac125f6d33e5936a3def"><code>1e0b7e6</code></a> [ci] format</li> <li><a href="https://github.com/withastro/astro/commit/4671a5c2d215545d8d7f763381ec1084dce9b7d1"><code>4671a5c</code></a> chore(deps): update react to v19 in <code>0-css</code> fixture (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17888">#17888</a>)</li> <li><a href="https://github.com/withastro/astro/commit/31b886b75259e5a8d50dc750e587ee9bc97ee099"><code>31b886b</code></a> Update bundled Zod to 4.5 (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17862">#17862</a>)</li> <li><a href="https://github.com/withastro/astro/commit/e747cba07fcd2b9e7fb03c02ed42abfe2079daa2"><code>e747cba</code></a> Skip unsupported Vary responses in the memory cache (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17886">#17886</a>)</li> <li><a href="https://github.com/withastro/astro/commit/fb5b0d0a952b50c48908a262a702f43dcf42f9e7"><code>fb5b0d0</code></a> [ci] format</li> <li><a href="https://github.com/withastro/astro/commit/ce7c91f77dbd7be03c04bc13f87af9d01fef6cef"><code>ce7c91f</code></a> Add <code>--ignore-lock</code> flag support to <code>astro preview</code> (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17767">#17767</a>)</li> <li><a href="https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1"><code>c0b6581</code></a> feat: use logger instead of console where possible (<a href="https://github.com/withastro/astro/tree/HEAD/packages/astro/issues/17818">#17818</a>)</li> <li>Additional commits viewable in <a href="https://github.com/withastro/astro/commits/astro@7.3.1/packages/astro">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
Worktrunk
September 2026: Worktrunk was released at the start of the year, and has quickly become the most popular git worktree manager. It's built with love (there's no slop!). Please let me know any frictions at all; I'm intensely focused on continuing to make Worktrunk excellent, and the biggest help is folks posting problems they perceive.
Worktrunk is a CLI for git worktree management, designed for running AI agents in parallel.
Worktrunk's three core commands make worktrees as easy as branches. Plus, Worktrunk has a bunch of quality-of-life features to simplify working with many parallel changes, including hooks to automate local workflows.
A quick demo:
📚 Full documentation at worktrunk.dev 📚
Context: git worktrees
AI agents like Claude Code and Codex can handle longer tasks without supervision, such that it's possible to manage 5-10+ in parallel. Git's native worktree feature gives each agent its own working directory, so they don't step on each other's changes.
But the git worktree UX is clunky. Even a task as small as starting a new
worktree requires typing the branch name three times: git worktree add -b feat ../repo.feat, then cd ../repo.feat.
Worktrunk makes git worktrees as easy as branches
Worktrees are addressed by branch name; paths are computed from a configurable template. Commands that take a branch also accept the path of the worktree it is checked out in.
Start with the core commands
Core commands:
| Task | Worktrunk | Plain git |
|---|---|---|
| Switch worktrees | wt switch feat |
cd ../repo.feat |
| Create + start Claude | wt switch -c -x claude feat |
|
| Clean up | wt remove |
|
| List with status | wt list |
git worktree list (paths only) |
Expand into the more advanced commands as needed
Workflow automation:
- Hooks — run commands on create, pre-merge, post-merge, etc
- LLM commit messages — generate commit messages from diffs
- Merge workflow — squash, rebase, merge, clean up in one command
- Interactive picker — browse worktrees with live diff and log previews
- Share build caches — ten worktrees get
target/,node_modules/, etc without building or copying them (on APFS, btrfs, and XFS) wt list --full— CI status and AI-generated summaries per branch- PR checkout —
wt switch pr:123to jump straight to a PR's branch - Dev server per worktree —
hash_porttemplate filter gives each worktree a unique port - Aliases & per-branch variables — custom
wt <name>commands and branch-scoped state for hook templates - ...and lots more
Multiple parallel agents, same simple commands:
Install
Homebrew (macOS & Linux):
brew install worktrunk && wt config shell install
Shell integration allows commands to change directories.
Cargo:
cargo install worktrunk && wt config shell install
Windows & other
Windows. wt defaults to Windows Terminal's command, so Winget additionally installs Worktrunk as git-wt to avoid the conflict:
winget install max-sixty.worktrunk
git-wt config shell install
Alternatively, disable Windows Terminal's alias (Settings → Apps → Advanced app settings → App execution aliases → "Terminal"/"Terminal Preview") to use wt directly.
Free code signing provided by SignPath.io, certificate by SignPath Foundation — policy.
Arch Linux:
sudo pacman -S worktrunk && wt config shell install
Conda / Pixi (community-maintained feedstock):
conda install -c conda-forge worktrunk && wt config shell install
Or with Pixi: pixi global install worktrunk && wt config shell install.
Quick start
Create a worktree for a new feature:
$ wt switch --create feature-auth
✓ Created branch feature-auth from main and worktree @ ~/repo.feature-auth
This creates a new branch and worktree, then switches to it. Do your work, then check all worktrees with wt list:
$ wt list
Branch Status HEAD± main↕ main…± Remote⇅ Commit Age Message
@ feature-auth + ↑ +27 -8 ↑1 +31 4bc72dc 2h Add authenticati…
^ main ^⇡ ⇡1 0e631ad 1d Initial commit
○ Showing 2 worktrees, 1 with changes, 1 ahead, hidden: Path
The @ marks the current worktree. + means staged changes, ↑1 means 1 commit ahead of main, ⇡ means unpushed commits.
When done, either:
PR workflow — commit, push, open a PR, merge via GitHub/GitLab, then clean up:
wt step commit # commit staged changes
gh pr create # or glab mr create
wt remove # after PR is merged
Local merge — squash, rebase onto main, fast-forward merge, clean up:
$ wt merge main
◎ Generating commit message and committing changes... (2 files, +53, no squashing needed)
Add authentication module
✓ Committed changes @ a1b2c3d
◎ Merging 1 commit to main @ a1b2c3d (no rebase needed)
* a1b2c3d Add authentication module
auth.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
lib.rs | 2 ++
2 files changed, 53 insertions(+)
✓ Merged to main (1 commit, 2 files, +53)
◎ Removing feature-auth worktree & branch in background (same commit as main, _)
○ Switched to worktree for main @ ~/repo
For parallel agents, create multiple worktrees and launch an agent in each:
wt switch -x claude -c feature-a -- 'Add user authentication'
wt switch -x claude -c feature-b -- 'Fix the pagination bug'
wt switch -x claude -c feature-c -- 'Write tests for the API'
The -x flag runs a command after switching; arguments after -- are passed to it. Configure post-start hooks to automate setup (install deps, start dev servers).
Next steps
- Learn the core commands:
wt switch,wt list,wt merge,wt remove - Set up hooks for automated setup
- Explore LLM commit messages, interactive picker, Claude Code integration, CI status & PR links
- Browse tips & patterns for recipes: aliases, dev servers, databases, agent handoffs, and more
- Extending Worktrunk — customize workflows with hooks & aliases
- Run
wt --helporwt <command> --helpfor quick CLI reference
Further reading
- Claude Code: Best practices for agentic coding — Anthropic's official guide, including the worktree pattern
- Shipping faster with Claude Code and Git Worktrees — incident.io's workflow for parallel agents
- Git worktree pattern discussion — Community discussion in the Claude Code repo
- @DevOpsToolbox's video on Worktrunk
- git-worktree documentation — Official git reference
Contributing
- ⭐ Star the repo
- Tell a friend about Worktrunk
- Open an issue — feedback, feature requests, even a small friction or imperfect user message, or a worktree pain not yet solved
- Share: X · Reddit · LinkedIn
Running the tests
cargo test
The shell integration tests need bash, zsh, fish, nushell, and pwsh, plus jq:
cargo test --test integration --features shell-integration-tests
📚 Full documentation at worktrunk.dev 📚

