5 hours ago
astro

astro@7.1.0

Minor Changes

  • #17302 5f4dc03 Thanks @astrobot-houston! - Adds a new deferRender option to the glob() content loader

    When set to true, renderable entries (such as Markdown) are not rendered during content sync. Instead, rendering is deferred until the entry is actually rendered in a page, using the same on-demand path that .mdx files already use.

    This reduces memory usage during astro build for large collections whose rendered output is much larger than the source — for example, Markdown that uses heavy rehype plugins like rehype-katex. Such builds could previously run out of memory while storing the eagerly-rendered HTML for every entry.

    // src/content.config.ts
    import { defineCollection } from 'astro:content';
    import { glob } from 'astro/loaders';
    
    const docs = defineCollection({
      loader: glob({ pattern: '**/*.md', base: 'src/content/docs', deferRender: true }),
    });

    By default deferRender is false, preserving the existing behavior of rendering entries eagerly during sync so their rendered HTML can be cached across builds.

  • #17296 30698a2 Thanks @ematipico! - Adds a new experimental collectionStorage option for controlling how the content layer persists its data store

    By default, Astro serializes the entire content layer data store to a single file (.astro/data-store.json). For very large content collections, this file can grow large enough to hit platform file-size limits.

    Set experimental.collectionStorage: 'chunked' to instead split the data store across many smaller, content-addressed files inside a .astro/data-store/ directory, described by a manifest:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        collectionStorage: 'chunked',
      },
    });

    Because each part file is named by a hash of its contents, unchanged parts keep the same name across builds and are not rewritten, and identical parts are deduplicated. The default value is 'single-file', which preserves the current behavior.

  • #17214 44c4989 Thanks @ematipico! - Adds support for the more specific CSP directives script-src-elem, script-src-attr, style-src-elem, and style-src-attr through a new kind option.

    Previously, CSP was only scoped to generic script-src/style-src directives. Now each source or hash can be scoped to a narrower directive — for example, to allow inline style attributes (such as those from define:vars or Shiki) without loosening the policy for your <style> and <link> elements.

    Scoping sources and hashes in your config

    Each entry in resources and hashes can be an object with a kind property. Depending on whether you use scriptDirective or styleDirective, "element" targets script-src-elem or style-src-elem, "attribute" targets script-src-attr or style-src-attr, and "default" (the same as a bare string or hash) targets script-src or style-src.

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      security: {
        csp: {
          scriptDirective: {
            resources: [{ resource: 'https://cdn.example.com', kind: 'element' }],
          },
          styleDirective: {
            resources: [{ resource: "'unsafe-inline'", kind: 'attribute' }],
          },
        },
      },
    });

    Scoping at runtime

    The same kind option is available on the runtime CSP API, where the existing methods now also accept an object:

    ctx.csp.insertScriptResource({ resource: 'https://cdn.example.com', kind: 'element' });
    ctx.csp.insertStyleResource({ resource: "'unsafe-inline'", kind: 'attribute' });
  • #17258 84814d4 Thanks @astrobot-houston! - Adds a new format() option to the paginate utility. The format() option is a function that accepts the current URL of the page, and returns a new URL.

    For example, when your host only supports URLs using the .html extension, you can use format() to add it to the generated URLs:

    ---
    export async function getStaticPaths({ paginate }) {
      // Load your data with fetch(), getCollection(), etc.
      const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`);
      const result = await response.json();
      const allPokemon = result.results;
    
      // Return a paginated collection of paths for all items
      return paginate(allPokemon, {
        pageSize: 10,
        format: (url) => `${url}.html`,
      });
    }
    
    const { page } = Astro.props;
    ---
  • #17331 7db6420 Thanks @matthewp! - Adds a --ignore-lock flag to astro dev for starting a dev server without checking or writing the lock file, so it can run alongside an already-running dev server for the same project.

    The new instance is not tracked by astro dev stop, astro dev status, or astro dev logs. --ignore-lock cannot be combined with --background (or an auto-detected AI agent environment, which runs dev servers in the background automatically) or --force, since those rely on the lock file.

    astro dev --ignore-lock
  • #17389 16de021 Thanks @florian-lefebvre! - Allows passing URL entrypoints when configuring the logger

    Matching other APIs like session drivers or font providers, the logger entrypoint can now be a URL:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      logger: {
        entrypoint: new URL('./logger.js', import.meta.url),
      },
    });

Patch Changes

  • #17332 4407483 Thanks @astrobot-houston! - Fixes the JSON logger crashing with process is not defined in non-Node runtimes like Cloudflare's workerd. The JSON logger now uses console.log/console.error instead of process.stdout/process.stderr, matching the pattern already used by the console logger.

  • #17391 186a1e7 Thanks @florian-lefebvre! - Fixes a case where an integration could not update the logger with updateConfig()

  • #17394 d9f99e1 Thanks @matthewp! - Fixes element-specific CSP directives to preserve the existing behavior of configured script and style resources

  • #17374 b2d1b3e Thanks @astrobot-houston! - Fixes dev server returning 404 for ?url imported assets when accessed via browser navigation

  • #17390 ed71eaf Thanks @florian-lefebvre! - Removes an unused and undocumented generic from the AstroLoggerDestination type

  • #17393 092da56 Thanks @matthewp! - Hardens generated transition styles, development metadata, and server island URLs when embedding dynamic values

5 hours ago
drawio
5 hours ago
tdesign-vue-next

@tdesign-vue-next/chat@0.6.0

🌈 0.6.0 2026-07-16

🚀 Features

  • ChatEngine: 支持新版 AGUI 协议,同时兼容旧版 AGUI 协议 @lLzhengH

🐞 Bug Fixes

  • ChatMarkdown:
    • 修复 markdown 组件默认挂载全局实例冲突的缺陷 @RSS1102 @uyarn (#6791)
  • ChatContent: 修复组件 XSS 漏洞的问题 @uyarn (#6698)
  • ChatSender: 修复在 Safari 中混合输入时回车会直接触发发送的问题 @goldjunkrat (#6808)

🚀 Features

  • ChatEngine: Supports the latest AGUI protocol @lLzhengH

🐞 Bug Fixes

  • ChatMarkdown:
    • Fixed the issue of conflicts arising from the default global instance usage of markdown components @RSS1102 @uyarn (#6791)
  • ChatContent: Fixed the XSS vulnerability in this component @uyarn (#6698)
  • ChatSender: Fixed the problem where pressing Enter while using mixed input modes in the Safari browser would trigger sending immediately @goldjunkrat (#6808)
6 hours ago
quasar

@quasar/cli-v5.0.3

This is the optional globally-installed part of the Quasar CLI

Changes

  • feat(cli): upgraded deps
  • fix(cli): upgrade cmd should correctly install selected packages (if any selection changes)
  • fix(cli): banner when using the deprecated "create" cmd
  • fix(cli): configured npm registry detection; also, make registry requests robust

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

6 hours ago
tailwindcss

v4.3.3

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)
7 hours ago
use-local-storage-state

v20.0.0

  • 🐛 isPersistent remains true when localStorage is disabled in Firefox, resolve #80 b1b1dae
  • ✨ reduce bundle size f324d84
v19.5.0 v20.0.0 Δ
minified 1.65 kB 1.53 kB −120 B (−7.3%)
minified + brotli 704 B 677 B −27 B (−3.8%)

Note: This is a new major release because the isPersistent prop is changing behavior — previously when the defaultValue was equal to the returning value isPersistent was always true. Now isPersistent is true only when localStorage is saving the value.


https://github.com/astoilkov/use-local-storage-state/compare/v19.5.0...v20.0.0

9 hours ago
socket.io

socket.io-parser@3.3.6

Bug Fixes

  • reject binary packets with zero attachments (9c6323e)
10 hours ago
Babylon.js

9.17.0

Addons

Core

  • Preserve antialiased edges when writing depth - [Bug Fix] by VicenteCartas (#18696)
  • refactor(splats): Expose safe-orbit camera limits on Gaussian Splatting meshes - by raymondyfei (#18685)

GUI

  • fix(gui): InputText paste replaces highlighted selection - by RaananW (#18694)

Inspector

  • Inspector v2: Allow FBX files in Project Authoring asset add/swap - by PatrickRyanMS (#18698)

Loaders

  • refactor(splats): Expose safe-orbit camera limits on Gaussian Splatting meshes - by raymondyfei (#18685)
  • fix(loaders): retry deferred GaussianSplattingStream LOD switch after cooldown expires - by raymondyfei (#18693)
10 hours ago
vite

v8.1.5

Please refer to CHANGELOG.md for details.

10 hours ago
vite

plugin-legacy@8.2.1

Please refer to CHANGELOG.md for details.