Skip to content

chore(deps): bump the production-dependencies group across 1 directory with 19 updates - #95

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/production-dependencies-bdf9bca0db
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/production-dependencies-bdf9bca0db

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the production-dependencies group with 19 updates in the / directory:

Package From To
chokidar 5.0.0 6.0.0
esbuild-sass-plugin 3.6.0 3.7.0
js-yaml 5.4.2 5.5.0
mdast-util-find-and-replace 3.0.2 3.0.4
pixi.js 8.21.0 8.22.0
preact 10.29.8 11.0.2
preact-render-to-string 6.7.0 6.8.1
pretty-bytes 7.1.3 7.2.0
satori 0.19.1 0.63.2
sharp 0.35.4 0.35.5
shiki 4.4.3 4.5.0
toml 5.0.0 5.0.1
unist-util-visit 5.1.0 5.2.0
ws 8.21.3 8.22.0
@types/ws 8.18.1 8.18.2
@types/node 26.6.2 26.6.5
@types/ws 8.18.1 8.18.2
esbuild 0.27.2 0.27.7
prettier 3.8.1 3.9.10
typescript 5.9.3 7.0.2

Updates chokidar from 5.0.0 to 6.0.0

Release notes

Sourced from chokidar's releases.

6.0.0

High-level changes

  • Rewrote the watcher around a single observation pipeline. Backend callbacks are treated as invalidations and confirmed with lstat, stat, or readdir before any event is emitted, so the final state after a burst of changes matches the filesystem.
  • Added native recursive watching through fs.watch({ recursive: true }). The default auto backend uses it on macOS and Windows and per-directory watching elsewhere.
  • Shared native handles across watchers and opened them per directory only: files no longer own handles. This fixes EBADF errors when watching many files on macOS (#1385, #1452).
  • Replaced fs.watchFile with Chokidar-owned stat polling. Poll loops are shared across watchers at the fastest requested interval.
  • Required Node.js 22.22 or later.

API changes

  • Added the backend option: 'auto' (default), 'native', 'native-recursive', or 'polling'.
    • usePolling: true remains as a deprecated alias for backend: 'polling'.
  • Renamed interval and binaryInterval to pollingInterval and pollingBinaryInterval.
    • The old names remain as deprecated aliases; the new names win when both are given.
  • Changed the atomic default to false with polling. An explicit value is preserved.
  • Made close() terminal: add() now throws once closing has started. Construct a new watcher instead.
  • Validated options in the constructor: invalid backend, atomic, depth, awaitWriteFinish, and polling intervals throw TypeError.
  • Emitted errors from add() as error events instead of unhandled rejections (#1378).
  • Made getWatched() return a null-prototype object, so a watched directory named __proto__ is listed (#1493). Use Object.hasOwn() instead of hasOwnProperty() on the result.
  • Stopped applying ignored to directories above a path passed to watch() or add(), so a missing path is still watched through its parent (#1374). Other entries in those directories are still filtered.

Fixes

  • Fixed a 100% CPU loop when the process working directory containing a relatively watched file was deleted (#1474).
  • Fixed watching a filesystem root, which emitted unlink and unlinkDir for every entry (#1184, #452).
  • Fixed UNKNOWN errors from fs.watch on macOS sockets, which prevented watching /var/run (#1391).
  • Fixed a symlink whose target passes through a regular file (ENOTDIR) disabling watching of its directory and preventing ready (#1476).
  • Fixed files created in a newly added directory between its scan and watch registration being missed (#1471).
  • Fixed watching a missing nested path stopping its parent directory's subtree from being watched (#1470).
  • Fixed false change events on Windows when many sibling files are written (#1466).
  • Fixed duplicate add events for unchanged files under directory activity (#1465).
  • Fixed replacing a watched directory with a file of the same name hanging the process (#1464).
  • Fixed persistent watching stopping after a watched directory was removed (#1463).
  • Fixed a deleted watched path not being reported when recreated: previously only a deleted file that was the sole watched path was watched for its return. Any path passed to watch() or add() is now awaited from its nearest existing parent.
  • Fixed event throttling discarding updates; the newest differing change is now replayed when the window closes (#1455).
  • Fixed relative ignored paths; relative strings now resolve against cwd or the process working directory (#1436).
  • Fixed files not being detected when their directory did not exist before watching (#1422).
  • Fixed removed files being reported as unlinkDir instead of unlink (#1421).
  • Fixed ignored files and directories still being watched in WSL (#1418).
  • Fixed change being reported for every file when one file changed under Deno (#1417).
  • Fixed changes not being detected after the second save (#1399).
  • Fixed renaming a watched directory that contains subdirectories on Windows (#1380, #1398).
  • Fixed re-watching a path not honoring ignoreInitial (#1386).
  • Fixed EISDIR errors during the initial scan of network drives (#1376).
  • Fixed watching an array of absolute file paths (#1366).
  • Fixed unwatching a deleted watched directory on Windows, contributed by @​sapphi-red in [pull request #1467](paulmillr/chokidar#1467).
  • Documented that unwatched paths stay ignored until they are added again (#1439).

Misc

... (truncated)

Changelog

Sourced from chokidar's changelog.

6.0.0 (2026-10-19)

High-level changes

  • Rewrote the watcher around a single observation pipeline. Backend callbacks are treated as invalidations and confirmed with lstat, stat, or readdir before any event is emitted, so the final state after a burst of changes matches the filesystem.
  • Added native recursive watching through fs.watch({ recursive: true }). The default auto backend uses it on macOS and Windows and per-directory watching elsewhere.
  • Shared native handles across watchers and opened them per directory only: files no longer own handles. This fixes EBADF errors when watching many files on macOS (#1385, #1452).
  • Replaced fs.watchFile with Chokidar-owned stat polling. Poll loops are shared across watchers at the fastest requested interval.
  • Required Node.js 22.22 or later.

API changes

  • Added the backend option: 'auto' (default), 'native', 'native-recursive', or 'polling'.
    • usePolling: true remains as a deprecated alias for backend: 'polling'.
  • Renamed interval and binaryInterval to pollingInterval and pollingBinaryInterval.
    • The old names remain as deprecated aliases; the new names win when both are given.
  • Changed the atomic default to false with polling. An explicit value is preserved.
  • Made close() terminal: add() now throws once closing has started. Construct a new watcher instead.
  • Validated options in the constructor: invalid backend, atomic, depth, awaitWriteFinish, and polling intervals throw TypeError.
  • Emitted errors from add() as error events instead of unhandled rejections (#1378).
  • Made getWatched() return a null-prototype object, so a watched directory named __proto__ is listed (#1493). Use Object.hasOwn() instead of hasOwnProperty() on the result.
  • Stopped applying ignored to directories above a path passed to watch() or add(), so a missing path is still watched through its parent (#1374). Other entries in those directories are still filtered.

Fixes

  • Fixed a 100% CPU loop when the process working directory containing a relatively watched file was deleted (#1474).
  • Fixed watching a filesystem root, which emitted unlink and unlinkDir for every entry (#1184, #452).
  • Fixed UNKNOWN errors from fs.watch on macOS sockets, which prevented watching /var/run (#1391).
  • Fixed a symlink whose target passes through a regular file (ENOTDIR) disabling watching of its directory and preventing ready (#1476).
  • Fixed files created in a newly added directory between its scan and watch registration being missed (#1471).
  • Fixed watching a missing nested path stopping its parent directory's subtree from being watched (#1470).
  • Fixed false change events on Windows when many sibling files are written (#1466).
  • Fixed duplicate add events for unchanged files under directory activity (#1465).
  • Fixed replacing a watched directory with a file of the same name hanging the process (#1464).
  • Fixed persistent watching stopping after a watched directory was removed (#1463).
  • Fixed a deleted watched path not being reported when recreated: previously only a deleted file that was the sole watched path was watched for its return. Any path passed to watch() or add() is now awaited from its nearest existing parent.
  • Fixed event throttling discarding updates; the newest differing change is now replayed when the window closes (#1455).
  • Fixed relative ignored paths; relative strings now resolve against cwd or the process working directory (#1436).
  • Fixed files not being detected when their directory did not exist before watching (#1422).
  • Fixed removed files being reported as unlinkDir instead of unlink (#1421).
  • Fixed ignored files and directories still being watched in WSL (#1418).
  • Fixed change being reported for every file when one file changed under Deno (#1417).
  • Fixed changes not being detected after the second save (#1399).
  • Fixed renaming a watched directory that contains subdirectories on Windows (#1380, #1398).
  • Fixed re-watching a path not honoring ignoreInitial (#1386).
  • Fixed EISDIR errors during the initial scan of network drives (#1376).
  • Fixed watching an array of absolute file paths (#1366).
  • Fixed unwatching a deleted watched directory on Windows, contributed by @​sapphi-red in [pull request #1467](paulmillr/chokidar#1467).
  • Documented that unwatched paths stay ignored until they are added again (#1439).

... (truncated)

Commits

Updates esbuild-sass-plugin from 3.6.0 to 3.7.0

Release notes

Sourced from esbuild-sass-plugin's releases.

v3.7.0 Hasta la vista

Commits

Updates js-yaml from 5.4.2 to 5.5.0

Changelog

Sourced from js-yaml's changelog.

[5.5.0] - 2026-10-16

Changed

  • Updated argparse to v3.
  • Updated development dependencies.

Fixed

  • Correct percent-encoding of shorthand and verbatim tags.
  • Reject ,, ], and } at the start of block plain scalars, #801.
  • Report the exact position of non-printable characters in errors, #801.

[5.4.3] - 2026-10-06

Fixed

  • Fixed loading a whitespace-only block scalar followed by a less indented line, #802.
Commits
  • cb62b2d 5.5.0 released
  • 87aed90 Deps bump
  • 3aec511 Fix error positions for non-printable characters, #801
  • 11aa483 Reject flow indicators at the start of block plain scalars, #801
  • 339d8e0 Refactor tag encoder and decoder to match the YAML specification
  • 7832624 5.4.3 released
  • 0cbb471 Fix whitespace-only block scalar followed by a less indented line, close #802
  • 30108cc Parse the first block mapping key once (#800)
  • See full diff in compare view

Updates mdast-util-find-and-replace from 3.0.2 to 3.0.4

Release notes

Sourced from mdast-util-find-and-replace's releases.

3.0.4

  • 2870b11 Refactor to improve performance

Full Changelog: syntax-tree/mdast-util-find-and-replace@3.0.3...3.0.4

3.0.3

  • d65a2ad Fix merging adjacent text nodes

Full Changelog: syntax-tree/mdast-util-find-and-replace@3.0.2...3.0.3

Commits

Updates pixi.js from 8.21.0 to 8.22.0

Release notes

Sourced from pixi.js's releases.

v8.22.0

💾 Download

Installation:

npm install pixi.js@8.22.0

Development Build:

Production Build:

Documentation:

Changed

pixijs/pixijs@v8.21.0...v8.22.0

🚨 Behavior Change

  • fix: tab cannot activate the accessibility layer on a fresh page by @​synath in pixijs/pixijs#12220
    • Pressing Tab now activates the accessibility layer on a fresh page when activateOnTab is left at its default of true. This restores the documented default, which regressed in v8.14.0. To keep Tab from activating it:
    await app.init({ accessibilityOptions: { activateOnTab: false } });
  • fix: apply accessibleText to button and recycled accessible elements by @​synath in pixijs/pixijs#12221
    • accessibleText now applies to the default button type and to accessible elements recycled from the pool.

🎁 Added

  • feat: add a federated contextmenu event by @​Zyie in pixijs/pixijs#12250
    • Containers now receive contextmenu and contextmenucapture events, also available as the oncontextmenu handler property. The event is a FederatedPointerEvent that PixiJS hit-tests and propagates like pointerdown, and eventFeatures.click gates it.
    sprite.eventMode = 'static';
    sprite.on('contextmenu', (event) =>
    {
        event.preventDefault(); // keeps the browser menu closed
        openMenuAt(event.global);
    });
  • feat: sRGB view formats and transient MSAA colour on WebGPU by @​GoodBoyDigital in pixijs/pixijs#12225
    • New transient renderer option (WebGPU, with antialias) discards the canvas's multisample depth/stencil buffer at the end of each pass, and its color buffer too on GPUs that aren't tile-based.
    await app.init({ preference: 'webgpu', antialias: true, transient: true });
  • feat: 3D textures, storage textures and 3D mipmaps by @​GoodBoyDigital in pixijs/pixijs#12248
  • feat: partial uploads for BufferImageSource via update(start, end) by @​GoodBoyDigital in pixijs/pixijs#12227

... (truncated)

Commits
  • 5b41ee3 v8.22.0
  • 9dc976d fix: skip the unread-attribute warning when the attribute has a format (#12267)
  • 1289ab7 docs: correct TilingSprite texture, width and height defaults (#12269)
  • b96fb4e fix: nested filters crash after renderer resize (#12257)
  • 082128a fix: blend filter backdrop when every parent filter is skipped (#12263)
  • f3d96db feat: add a federated contextmenu event (#12250)
  • 8dbbeb9 feat: 3D textures, storage textures and 3D mipmaps (#12248)
  • ef0c0a7 feat: sRGB view formats and transient MSAA colour on WebGPU (#12225)
  • 27071aa fix: integer texture formats on WebGL and WebGPU (#12230)
  • 0f8983f fix: declare accessibilityOptions on the public renderer options (#12222)
  • Additional commits viewable in compare view

Updates preact from 10.29.8 to 11.0.2

Release notes

Sourced from preact's releases.

11.0.2

Fixes

Types

Performance

Maintenance

11.0.1

Fixes

DX

Performance

Maintenance

11.0.0

https://preactjs.com/blog/preact-11

Read the upgrade-guide over at https://preactjs.com/guide/v11/upgrade-guide

... (truncated)

Commits
  • 7c23627 Merge pull request #5329 from preactjs/release/11.0.2
  • b1fffe6 11.0.2
  • 1a07083 Merge pull request #5328 from brevin-aq/fix/render-error-duplicate-children
  • 8ab86ea fix: keep LIS candidacy separate from old vnode matching
  • 82d8c66 fix: don't leave MATCHED on new vnodes when a child throws
  • 1dde7a8 fix: correct type of createRef (#5326)
  • 74df25e Merge pull request #5319 from preactjs/JoviDeCroock/golf-preact-core
  • b8e0ad9 Or isHydrating into the suspended flags
  • 1324976 Test newProps !== oldProps first in the cWRP guard
  • ba2598a Let setStyle default removed style values
  • Additional commits viewable in compare view

Updates preact-render-to-string from 6.7.0 to 6.8.1

Release notes

Sourced from preact-render-to-string's releases.

v6.8.1

Patch Changes

  • #482 a4b9e49 Thanks @​JoviDeCroock! - Encode attribute values after string coercion so arrays and objects are serialized consistently with string attributes.
Changelog

Sourced from preact-render-to-string's changelog.

6.8.1

Patch Changes

  • #482 a4b9e49 Thanks @​JoviDeCroock! - Encode attribute values after string coercion so arrays and objects are serialized consistently with string attributes.

6.8.0

Minor Changes

  • #472 2dff53d Thanks @​jacob-ebey! - Replaces the second context argument in our streaming functions with an options object, the context moves to the third position.

    Streaming is considered alpha so we're making this breaking change deliberately as part of a minor.

Patch Changes

Commits
  • 0519dc8 Merge pull request #483 from preactjs/changeset-release/main
  • 7277e10 Version Packages
  • 75291f2 Merge pull request #482 from preactjs/fix/escape-coerced-attribute-values
  • a4b9e49 fix: encode attribute values after string coercion
  • 55804f3 Merge pull request #481 from preactjs/fix/release-tag-git-identity
  • 085ec2e fix: don't create a local git tag when staging a release
  • 601e6c8 Merge pull request #465 from preactjs/changeset-release/main
  • 1c9c381 Version Packages
  • f26bd8c Merge pull request #479 from preactjs/fix/changesets-format
  • 3ecaa75 Fix Changesets release formatting
  • Additional commits viewable in compare view

Updates pretty-bytes from 7.1.3 to 7.2.0

Release notes

Sourced from pretty-bytes's releases.

v7.2.0

  • Fix formatting edge cases and validate options 4e800a3

sindresorhus/pretty-bytes@v7.1.3...v7.2.0

Commits

Updates satori from 0.19.1 to 0.63.2

Release notes

Sourced from satori's releases.

0.63.2

0.63.2 (2026-10-20)

Bug Fixes

  • Report invalid sizes, insets and margins like other invalid values (#950) (074f0b3)

0.63.1

0.63.1 (2026-10-20)

Bug Fixes

0.63.0

0.63.0 (2026-10-19)

Bug Fixes

  • Render variable fonts as their default instance (#946) (b9e5af5)

Features

  • Render selects and their options like Chrome (#947) (c66082d)

0.62.0

0.62.0 (2026-10-16)

Bug Fixes

  • Don't make lines of white space between blocks (#945) (7e8efab)
  • Hide closed dialogs, and draw open ones like browsers (#944) (5ae3a69)
  • Size SVGs without width and height like browsers (#942) (f725edd), closes #940 #939
  • Support -webkit-flex and -webkit-inline-flex (#941) (b7e86d9)

Features

0.61.0

0.61.0 (2026-10-16)

Bug Fixes

... (truncated)

Commits
  • 074f0b3 fix: Report invalid sizes, insets and margins like other invalid values (#950)
  • e1aa7be fix: Honor emoji and text presentation selectors (#948)
  • 5a9e32a docs(playground): Use the srcset sources browsers would use in screenshots (#...
  • c66082d feat: Render selects and their options like Chrome (#947)
  • b9e5af5 fix: Render variable fonts as their default instance (#946)
  • f725edd fix: Size SVGs without width and height like browsers (#942)
  • 7e8efab fix: Don't make lines of white space between blocks (#945)
  • 5ae3a69 fix: Hide closed dialogs, and draw open ones like browsers (#944)
  • b46e5ad feat: Render the labels of button inputs (#943)
  • b7e86d9 fix: Support -webkit-flex and -webkit-inline-flex (#941)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for satori since your current version.

Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


Updates sharp from 0.35.4 to 0.35.5

Release notes

Sourced from sharp's releases.

v0.35.5

https://github.com/lovell/sharp-libvips/releases/tag/v1.3.4

  • Add upper bounds check on length of linear and GIF delay arrays.

  • Improve error handing when WebAssembly fallback also fails. #4593 @​lazerg

  • TypeScript: Allow multi-frame options for JXL output. #4602 @​ramin-010

  • TypeScript: Remove non-existent named export. #4604

  • Increase accepted dimensions when extending an image. #4605

  • Improve gain map support for extract and rotate operations. #4606

  • Tests: Ensure composite tests pass on big endian platforms. #4609

v0.35.5-rc.1

https://github.com/lovell/sharp-libvips/releases/tag/v1.3.4-rc.1

  • Add upper bounds check on length of linear and GIF delay arrays.

  • Improve error handing when WebAssembly fallback also fails. #4593 @​lazerg

  • TypeScript: Allow multi-frame options for JXL output. #4602 @​ramin-010

  • TypeScript: Remove non-existent named export. #4604

  • Increase accepted dimensions when extending an image. #4605

  • Improve gain map support for extract operation. #4606

... (truncated)

Commits
  • 51a990f Release v0.35.5
  • 96de105 Upgrade to sharp-libvips v1.3.4
  • 3a61390 CI: Configure Dependabot with all package.json locations
  • 4940c50 Improve gain map support for rotate/flip/flop ops
  • 20654aa Prerelease v0.35.5-rc.1
  • ef4f934 CI: Upgrade to Ubuntu 26.04
  • 358df95 Upgrade to libvips v8.18.7
  • 49f4903 Improve gain map support for rotate-then-extract #4606
  • 0e2e55e Silence a couple of compiler/static analysis warnings
  • cef3b8c Improve gain map support for extract operation #4606
  • Additional commits viewable in compare view

Updates shiki from 4.4.3 to 4.5.0

Release notes

Sourced from shiki's releases.

v4.5.0

   🚀 Features

   🐞 Bug Fixes

   🏎 Performance

  • engine-js: Reuse each regex's last search while tokenizing a line  -  by @​issacgerges and @​antfu in shikijs/shiki#1314 (2ef5e)
  • stream: Gro...

    Description has been truncated


    Summary by cubic

    Updates 19 production dependencies in the production-dependencies group. Several packages include major version bumps: chokidar 6.0.0, preact 11.0.2, and typescript 7.0.2, plus a large jump for satori from 0.19.1 to 0.63.2.

    Migration

    • Verify chokidar usage against 6.0.0 API changes; it now requires Node 22.22+.
    • Review the preact 11 upgrade guide for breaking changes.
    • Confirm TypeScript 7 compiles the codebase cleanly.
    • Check preact-render-to-string streaming option changes introduced in 6.8.0.
    • Validate rendered output after the satori version jump.

    Written for commit ae72b5f. Summary will update on new commits.

    View guided diff Turn on auto-fix

…y with 19 updates

Bumps the production-dependencies group with 19 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [chokidar](https://github.com/paulmillr/chokidar) | `5.0.0` | `6.0.0` |
| [esbuild-sass-plugin](https://github.com/glromeo/esbuild-sass-plugin) | `3.6.0` | `3.7.0` |
| [js-yaml](https://github.com/nodeca/js-yaml) | `5.4.2` | `5.5.0` |
| [mdast-util-find-and-replace](https://github.com/syntax-tree/mdast-util-find-and-replace) | `3.0.2` | `3.0.4` |
| [pixi.js](https://github.com/pixijs/pixijs) | `8.21.0` | `8.22.0` |
| [preact](https://github.com/preactjs/preact) | `10.29.8` | `11.0.2` |
| [preact-render-to-string](https://github.com/preactjs/preact-render-to-string) | `6.7.0` | `6.8.1` |
| [pretty-bytes](https://github.com/sindresorhus/pretty-bytes) | `7.1.3` | `7.2.0` |
| [satori](https://github.com/vercel/satori) | `0.19.1` | `0.63.2` |
| [sharp](https://github.com/lovell/sharp) | `0.35.4` | `0.35.5` |
| [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) | `4.4.3` | `4.5.0` |
| [toml](https://github.com/BinaryMuse/toml-node) | `5.0.0` | `5.0.1` |
| [unist-util-visit](https://github.com/syntax-tree/unist-util-visit) | `5.1.0` | `5.2.0` |
| [ws](https://github.com/websockets/ws) | `8.21.3` | `8.22.0` |
| [@types/ws](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ws) | `8.18.1` | `8.18.2` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.2` | `26.6.5` |
| [@types/ws](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ws) | `8.18.1` | `8.18.2` |
| [esbuild](https://github.com/evanw/esbuild) | `0.27.2` | `0.27.7` |
| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.9.10` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `7.0.2` |



Updates `chokidar` from 5.0.0 to 6.0.0
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Changelog](https://github.com/paulmillr/chokidar/blob/main/CHANGELOG.md)
- [Commits](paulmillr/chokidar@5.0.0...6.0.0)

Updates `esbuild-sass-plugin` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/glromeo/esbuild-sass-plugin/releases)
- [Commits](https://github.com/glromeo/esbuild-sass-plugin/commits/v3.7.0)

Updates `js-yaml` from 5.4.2 to 5.5.0
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@5.4.2...5.5.0)

Updates `mdast-util-find-and-replace` from 3.0.2 to 3.0.4
- [Release notes](https://github.com/syntax-tree/mdast-util-find-and-replace/releases)
- [Commits](syntax-tree/mdast-util-find-and-replace@3.0.2...3.0.4)

Updates `pixi.js` from 8.21.0 to 8.22.0
- [Release notes](https://github.com/pixijs/pixijs/releases)
- [Commits](pixijs/pixijs@v8.21.0...v8.22.0)

Updates `preact` from 10.29.8 to 11.0.2
- [Release notes](https://github.com/preactjs/preact/releases)
- [Commits](preactjs/preact@10.29.8...11.0.2)

Updates `preact-render-to-string` from 6.7.0 to 6.8.1
- [Release notes](https://github.com/preactjs/preact-render-to-string/releases)
- [Changelog](https://github.com/preactjs/preact-render-to-string/blob/main/CHANGELOG.md)
- [Commits](preactjs/preact-render-to-string@v6.7.0...v6.8.1)

Updates `pretty-bytes` from 7.1.3 to 7.2.0
- [Release notes](https://github.com/sindresorhus/pretty-bytes/releases)
- [Commits](sindresorhus/pretty-bytes@v7.1.3...v7.2.0)

Updates `satori` from 0.19.1 to 0.63.2
- [Release notes](https://github.com/vercel/satori/releases)
- [Commits](vercel/satori@0.19.1...0.63.2)

Updates `sharp` from 0.35.4 to 0.35.5
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](lovell/sharp@v0.35.4...v0.35.5)

Updates `shiki` from 4.4.3 to 4.5.0
- [Release notes](https://github.com/shikijs/shiki/releases)
- [Commits](https://github.com/shikijs/shiki/commits/v4.5.0/packages/shiki)

Updates `toml` from 5.0.0 to 5.0.1
- [Changelog](https://github.com/BinaryMuse/toml-node/blob/main/CHANGELOG.md)
- [Commits](BinaryMuse/toml-node@v5.0.0...v5.0.1)

Updates `unist-util-visit` from 5.1.0 to 5.2.0
- [Release notes](https://github.com/syntax-tree/unist-util-visit/releases)
- [Commits](syntax-tree/unist-util-visit@5.1.0...5.2.0)

Updates `ws` from 8.21.3 to 8.22.0
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](websockets/ws@8.21.3...8.22.0)

Updates `@types/ws` from 8.18.1 to 8.18.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ws)

Updates `@types/node` from 26.6.2 to 26.6.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/ws` from 8.18.1 to 8.18.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ws)

Updates `esbuild` from 0.27.2 to 0.27.7
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md)
- [Commits](evanw/esbuild@v0.27.2...v0.27.7)

Updates `prettier` from 3.8.1 to 3.9.10
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.8.1...3.9.10)

Updates `typescript` from 5.9.3 to 7.0.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](microsoft/TypeScript@v5.9.3...v7.0.2)

---
updated-dependencies:
- dependency-name: chokidar
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: production-dependencies
- dependency-name: esbuild-sass-plugin
  dependency-version: 3.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: js-yaml
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: mdast-util-find-and-replace
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: pixi.js
  dependency-version: 8.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: preact
  dependency-version: 11.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: production-dependencies
- dependency-name: preact-render-to-string
  dependency-version: 6.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: pretty-bytes
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: satori
  dependency-version: 0.63.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: sharp
  dependency-version: 0.35.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: shiki
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: toml
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: unist-util-visit
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: ws
  dependency-version: 8.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@types/ws"
  dependency-version: 8.18.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@types/node"
  dependency-version: 26.6.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@types/ws"
  dependency-version: 8.18.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: esbuild
  dependency-version: 0.27.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: prettier
  dependency-version: 3.9.10
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: typescript
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 30, 2026
@gitnotebooks

gitnotebooks Bot commented Oct 30, 2026

Copy link
Copy Markdown

Review these changes at https://app.gitnotebooks.com/LAF-US/THE-GEMSTONE/pull/95

@code-genius-code-coverage

Copy link
Copy Markdown

The files' contents are under analysis for test generation.

@semanticdiff-com

semanticdiff-com Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  package-lock.json  37% smaller
  package.json  10% smaller

@codereviewbot-ai

Copy link
Copy Markdown

🤖 Review skipped: reviews for bot-created pull requests are not allowed on free accounts. Upgrade to a paid plan to enable bot reviews.

@gitginie gitginie Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dependabot[bot]
Thank you for your contribution to this repository! We appreciate your effort in opening pull request.
Happy coding!

@codeant-ai

codeant-ai Bot commented Oct 30, 2026

Copy link
Copy Markdown

Skipping PR review because a bot author is detected.

If you want to trigger CodeAnt AI, comment @codeant-ai review to trigger a manual review.

@codesherlock-ai

Copy link
Copy Markdown

We could not run your PR Review. We noticed that you are part of an Org. We require everyone who is part of an Org to SignUp via GitHub so we can track your individual usage and maximize on your usage capacity. Enroll into CodeSherlock system by signing up via GitHub using the SignUp link. Also, please note — every user pays for their own usage.

@coderabbitai

coderabbitai Bot commented Oct 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e00d00af-dc07-41ae-8722-5b30f271fc0c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@precogs-ai

precogs-ai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

✅ Precogs scan complete — No security issues found

Commit ae72b5f on dependabot/npm_and_yarn/production-dependencies-bdf9bca0db · 2 files scanned

🔴 Critical 🟠 High 🔵 Medium 🟢 Low 🎯 Risk Score
0 0 0 0 0.0

✅ All clear. We scanned for SQL injection, XSS, hardcoded secrets, vulnerable dependencies, IaC misconfigurations, and PII exposure. No security vulnerabilities were detected in this PR.

✅ Passed checks (3)
Check Status Details
Code scan (SAST) ✅ Passed No vulnerabilities detected
Secrets scan ✅ Passed No hardcoded credentials found
Dependency audit ✅ Passed No known CVEs

💬 @precogs-ai help for commands · 🔗 View report

Precogs.ai · Detect. Fix. Merge.

@coderifts

coderifts Bot commented Oct 30, 2026

Copy link
Copy Markdown

🔍 CodeRifts / issuer

No OpenAPI schemas found in this repository.

This App's check is CodeRifts / issuer; the contract-gate Action's is CodeRifts / contract-gate. A protected branch requires both. A required check still pinned to the old name CodeRifts — API Contract Check is posted by neither, so it waits until you re-pin it.

While no schema is found, this check completes neutral, which GitHub treats as non-blocking — so if CodeRifts is a required status check, it is not currently blocking anything on this branch.

To get started, either:

  • Name your OpenAPI schema file openapi.yaml (or openapi.json, swagger.yaml, etc.)
  • Or add a .coderifts.yml to specify the path:
schema:
  - path/to/your/openapi.yaml

📖 Documentation · 💬 Get help


☁️ You're on the Free plan. Everything is included during the public beta, at no cost and with nothing to upgrade.

@seoguard

seoguard Bot commented Oct 30, 2026

Copy link
Copy Markdown

✅ SEO Review - no issues introduced by this PR

This PR introduces no SEO issues. 20 pre-existing issues on main are folded below for reference - not caused by this PR.

📋 20 pre-existing issues on `main` - not from this PR (🔴 5 · 🟡 7 · 🔵 8)

🔴 Critical (5)

File Issue Fix
quartz/components/Head.tsx Missing <h1> tag
Every page must have exactly one <h1> tag. It signals the primary topic of the page to search engines.
Add exactly one <h1>Your Primary Topic</h1> tag to the page
quartz/components/renderPage.tsx Missing <title> tag
Every page must have a unique <title> tag. This is the primary signal search engines use to understand page topic and d…
Add <title>Your Page Title (50-60 chars)</title> inside <head>
quartz/components/renderPage.tsx Missing meta description
Meta descriptions are used as SERP snippets. Without one, Google auto-generates one from page content, which is typical…
Add <meta name="description" content="Your description here (150-160 chars)" /> inside <head>
quartz/components/renderPage.tsx Missing <h1> tag
Every page must have exactly one <h1> tag. It signals the primary topic of the page to search engines.
Add exactly one <h1>Your Primary Topic</h1> tag to the page
quartz/components/renderPage.tsx Missing viewport meta tag
Without a viewport meta tag, mobile browsers render the page at desktop width, causing poor mobile UX and hurting mobil…
Add <meta name="viewport" content="width=device-width, initial-scale=1" /> inside <head>

🟡 Warnings (7)

File Issue Fix
quartz/components/Head.tsx Missing canonical tag
Without a canonical tag, search engines may index duplicate versions of your page (e.g., with/without trailing slash, w…
Add <link rel="canonical" href="https://yourdomain.com/this-page" /> inside <head>. Use absolute URLs. For JavaScript pages, ensure this matches the canonical in the pre-rendered HTML.
quartz/components/renderPage.tsx Missing og:title
Open Graph title is required for proper social sharing previews on Facebook, LinkedIn, Slack, and others.
Add <meta property="og:title" content="Your Page Title" /> inside <head>
quartz/components/renderPage.tsx Missing og:description
Open Graph description is displayed when pages are shared on social platforms.
Add <meta property="og:description" content="Your description" /> inside <head>
quartz/components/renderPage.tsx Missing og:image
Social shares without og:image show no image, severely reducing engagement. Image should be at least 1200x630px. Google…
Add <meta property="og:image" content="https://yourdomain.com/og-image.jpg" /> inside <head>. Recommended size: 1200x630px.
quartz/components/renderPage.tsx Missing twitter:card
Without twitter:card, X (Twitter) will not show a rich preview when your page is shared.
Add <meta name="twitter:card" content="summary_large_image" /> inside <head>
quartz/components/renderPage.tsx Missing charset declaration
Without a charset declaration, browsers may misinterpret the page encoding, causing garbled text.
Add <meta charset="UTF-8" /> as the first tag inside <head>
quartz/components/renderPage.tsx Missing canonical tag
Without a canonical tag, search engines may index duplicate versions of your page (e.g., with/without trailing slash, w…
Add <link rel="canonical" href="https://yourdomain.com/this-page" /> inside <head>. Use absolute URLs. For JavaScript pages, ensure this matches the canonical in the pre-rendered HTML.

🔵 Info (8)

File Issue Fix
quartz/components/Footer.tsx (line 18) External link missing rel="noopener"
External links without rel="noopener noreferrer" expose users to tab-napping attacks and leak referrer information. Lin…
Add rel="noopener noreferrer" to <a href="https://quartz.jzhao.xyz/">
quartz/components/Head.tsx No structured data (JSON-LD) found
Structured data helps search engines understand your content and can unlock rich results (star ratings, breadcrumbs, et…
Add a JSON-LD script block: <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Page Title"}</script>
quartz/components/renderPage.tsx Missing og:url
og:url sets the canonical URL for social sharing, preventing duplicate content issues on social platforms.
Add <meta property="og:url" content="https://yourdomain.com/page" /> inside <head>
quartz/components/renderPage.tsx Missing og:type
og:type tells social platforms what kind of content this is (website, article, product, etc.).
Add <meta property="og:type" content="website" /> inside <head>. Use 'article' for blog posts.
quartz/components/renderPage.tsx Missing twitter:title
twitter:title overrides og:title specifically for X (Twitter) cards.
Add <meta name="twitter:title" content="Your Title" /> inside <head>
quartz/components/renderPage.tsx Missing twitter:image
twitter:image is shown in X (Twitter) card previews. Recommended minimum 1200x628px.
Add <meta name="twitter:image" content="https://yourdomain.com/twitter-image.jpg" /> inside <head>
quartz/components/renderPage.tsx Missing favicon
A favicon improves brand recognition in browser tabs and bookmarks. Google displays favicons in SERPs. Google requires …
Add <link rel="icon" href="/favicon.ico" type="image/x-icon" /> inside <head>. Ensure the favicon has a 1:1 aspect ratio and is at least 48x48px. Confirm Googlebot can crawl both the favicon file (via Googlebot-Image) and your home page (via Googlebot).
quartz/components/renderPage.tsx No structured data (JSON-LD) found
Structured data helps search engines understand your content and can unlock rich results (star ratings, breadcrumbs, et…
Add a JSON-LD script block: <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Page Title"}</script>
✅ 915 checks passed
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • missing-title
  • title-too-long
  • title-too-short
  • missing-meta-description
  • meta-description-too-long
  • meta-description-too-short
  • missing-og-title
  • missing-og-description
  • missing-og-image
  • missing-og-url
  • missing-og-type
  • missing-og-locale
  • missing-twitter-card
  • missing-twitter-title
  • missing-twitter-image
  • multiple-h1
  • heading-hierarchy
  • empty-heading
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • missing-viewport
  • missing-charset
  • accidental-noindex
  • missing-favicon
  • invalid-json-ld
  • missing-preload-lcp
  • faq-schema-deprecated
  • back-button-hijacking
  • robots-meta-outside-head
  • noindex-in-javascript
  • canonical-javascript-best-practice
  • favicon-aspect-ratio
  • inp-core-web-vital
  • image-preferred-source-metadata
  • breadcrumbs-desktop-only
  • video-transparency
  • structured-data-javascript-initial-html
  • mobile-version-links
  • review-snippet-requires-comment
  • practice-problem-schema-deprecated
  • special-announcement-schema-deprecated
  • missing-hreflang
  • json-ld-recommended-format
  • read-more-deeplink
  • javascript-non-200-rendering
  • javascript-paywall-detection
  • hreflang-no-combined-attributes
  • review-no-multiple-reviewed-entities
  • merchant-shipping-policy-schema
  • video-indexing-criteria
  • avif-image-format-supported
  • c2pa-metadata
  • ai-mode-search-console
  • loyalty-program-schema
  • merchant-return-policy-schema
  • product-structured-data-single-product
  • url-parameters-best-practice
  • safe-search-explicit-tagging
  • organization-markup
  • site-name-schema
  • preferred-sources-feature
  • event-structured-data-requirements
  • dataset-schema-phased-out
  • generative-ai-optimization
  • spam-policies-apply-to-ai-responses
  • follow-feature-removed
  • sitelinks-searchbox-removed
  • googlebot-file-size-limits
  • recipe-thumbnail-property
  • core-updates-continuous
  • south-africa-carousel-structured-data
  • llms-txt-not-required
  • ai-features-snippet-eligibility
  • agent-friendly-website
  • speakable-schema-deprecated
  • schema-org-shipping-vocabulary-updated
  • faq-rich-result-documentation-removed
  • html-standard-for-seo
  • oai-searchbot-crawl-eligibility
  • markdown-content-no-seo-advantage
  • google-video-schema-creator-property
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • canonical-relative-url
  • canonical-multiple
  • robots-meta-conflicting-directives
  • image-missing-dimensions
  • iframe-missing-title
  • mixed-content-http-resources
  • hreflang-x-default-missing
  • article-dates-missing
  • article-author-missing
  • og-image-alt-missing
  • twitter-description-missing
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • title-too-long
  • title-too-short
  • meta-description-too-long
  • meta-description-too-short
  • missing-og-locale
  • multiple-h1
  • heading-hierarchy
  • empty-heading
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • accidental-noindex
  • invalid-json-ld
  • missing-preload-lcp
  • faq-schema-deprecated
  • back-button-hijacking
  • robots-meta-outside-head
  • noindex-in-javascript
  • canonical-javascript-best-practice
  • favicon-aspect-ratio
  • inp-core-web-vital
  • image-preferred-source-metadata
  • breadcrumbs-desktop-only
  • video-transparency
  • structured-data-javascript-initial-html
  • mobile-version-links
  • review-snippet-requires-comment
  • practice-problem-schema-deprecated
  • special-announcement-schema-deprecated
  • missing-hreflang
  • json-ld-recommended-format
  • read-more-deeplink
  • javascript-non-200-rendering
  • javascript-paywall-detection
  • hreflang-no-combined-attributes
  • review-no-multiple-reviewed-entities
  • merchant-shipping-policy-schema
  • video-indexing-criteria
  • avif-image-format-supported
  • c2pa-metadata
  • ai-mode-search-console
  • loyalty-program-schema
  • merchant-return-policy-schema
  • product-structured-data-single-product
  • url-parameters-best-practice
  • safe-search-explicit-tagging
  • organization-markup
  • site-name-schema
  • preferred-sources-feature
  • event-structured-data-requirements
  • dataset-schema-phased-out
  • generative-ai-optimization
  • spam-policies-apply-to-ai-responses
  • follow-feature-removed
  • sitelinks-searchbox-removed
  • googlebot-file-size-limits
  • recipe-thumbnail-property
  • core-updates-continuous
  • south-africa-carousel-structured-data
  • llms-txt-not-required
  • ai-features-snippet-eligibility
  • agent-friendly-website
  • speakable-schema-deprecated
  • schema-org-shipping-vocabulary-updated
  • faq-rich-result-documentation-removed
  • html-standard-for-seo
  • oai-searchbot-crawl-eligibility
  • markdown-content-no-seo-advantage
  • google-video-schema-creator-property
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • canonical-relative-url
  • canonical-multiple
  • robots-meta-conflicting-directives
  • image-missing-dimensions
  • iframe-missing-title
  • mixed-content-http-resources
  • hreflang-x-default-missing
  • article-dates-missing
  • article-author-missing
  • og-image-alt-missing
  • twitter-description-missing
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-dimensions

SEOCode · Docs & troubleshooting

ℹ️ SEOCode reviewed 40 of 45 files in this repository. For full coverage of larger repositories, contact support@seocode.io.

@inspect-review inspect-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inspect review

Triage: 2 entities analyzed | 0 critical, 0 high, 2 medium, 0 low
Verdict: standard_review

Findings (0)


Reviewed by inspect | Entity-level triage found 0 high-risk changes

@secuarden-ai

secuarden-ai Bot commented Oct 30, 2026

Copy link
Copy Markdown

Invalid command format

To invoke the bot, use:

@secuarden-ai /command [arguments]

Available commands:

  • @secuarden-ai /fix SEC_ID - Generate a fix for a finding
  • @secuarden-ai /explain - Explain why this finding matters
  • @secuarden-ai /ignore SEC_ID [reason] - Suppress a finding
  • @secuarden-ai /rerun - Re-scan this PR
  • @secuarden-ai /review - Submit per-finding reassessment feedback (see review format below)

@qwed-security

qwed-security Bot commented Oct 30, 2026

Copy link
Copy Markdown

QWED Security Verification Report

2 files scanned | 0 blocked | 0 warnings | 0 info | 0 suppressed | 2 verified

Engines

  • dependency_scan: ✅
  • entropy_scan: ✅
  • lockfile_scan: ✅
  • pattern_scan: ✅
  • secret_scan: ✅

Verified Files

  • package-lock.json
  • package.json

Verified by QWED — deterministic security verification. No LLM used.

Verification Context v1.0
{
  "spec_version": "1.0",
  "object": {
    "formal_statement": "LAF-US/THE-GEMSTONE@ae72b5fe (PR #95) is safe to merge"
  },
  "context": {
    "interpretation": {
      "theory": "deterministic security verification",
      "logic": "evidence-context-policy pipeline"
    },
    "proof": {
      "verifier": "QWED Security",
      "verifier_version": "qwed-security-ruleset/14",
      "configuration": {
        "repo": "LAF-US/THE-GEMSTONE",
        "head_sha": "ae72b5fec1d7a496a5f1d3920cd7a3253068ab52",
        "files_scanned": 2
      },
      "theory_scope": "PR security scan against QWED deterministic rule set",
      "trusted_dependencies": [
        "qwed-security"
      ],
      "outcome_treatment": "unknown/timeout/error resolve to UNVERIFIABLE or BLOCKED"
    },
    "evidence": {
      "evidence": {
        "status": "VERIFIED",
        "agent_message": "VERIFIED against the QWED deterministic rule set: no security boundary violations detected in the scanned files. This attests to the absence of known-pattern violations for this rule set and commit \u2014 it is not a guarantee that the code is free of all vulnerabilities.",
        "developer_fields": {
          "total_findings": 0,
          "advisory_checks": []
        },
        "is_authoritative": true,
        "proof_ref": "sha256:c5005a744a118c37b8e94a8ca699cea368acf944c417620cc204f640fae81ebd",
        "scan_evidence": {
          "repo": "LAF-US/THE-GEMSTONE",
          "head_sha": "ae72b5fec1d7a496a5f1d3920cd7a3253068ab52",
          "pr_number": 95,
          "files_scanned": 2,
          "engine_results": 5,
          "conclusion": "success",
          "rule_set": "qwed-security-ruleset/14",
          "engines": [
            "dependency_scan",
            "entropy_scan",
            "lockfile_scan",
            "pattern_scan",
            "secret_scan"
          ]
        },
        "repo": "LAF-US/THE-GEMSTONE",
        "head_sha": "ae72b5fec1d7a496a5f1d3920cd7a3253068ab52",
        "files_scanned": 2
      },
      "proof_ref": "sha256:9463ebe3431266ab9582e1e1bd6f6a8851132499445f6c9af2aa428174067272"
    },
    "decision": {
      "admission": "ADMIT"
    }
  },
  "verdict": "VERIFIED"
}
Attestation (signed, binds the Verification Context above)
{
  "envelope": "qwed-security-attestation/1",
  "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjU2NWFkMDg2NGY3NWJkYmIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiIyNzU5NTA0IiwiYXVkIjoicXdlZC1hdHRlc3RhdGlvbiIsImlhdCI6MTc5MzMzNTUyMCwiZXhwIjoxNzkzMzM1ODIwLCJxd2VkIjp7InJlc3VsdCI6eyJzdGF0dXMiOiJWRVJJRklFRCIsImFnZW50X21lc3NhZ2UiOiJWRVJJRklFRCBhZ2FpbnN0IHRoZSBRV0VEIGRldGVybWluaXN0aWMgcnVsZSBzZXQ6IG5vIHNlY3VyaXR5IGJvdW5kYXJ5IHZpb2xhdGlvbnMgZGV0ZWN0ZWQgaW4gdGhlIHNjYW5uZWQgZmlsZXMuIFRoaXMgYXR0ZXN0cyB0byB0aGUgYWJzZW5jZSBvZiBrbm93bi1wYXR0ZXJuIHZpb2xhdGlvbnMgZm9yIHRoaXMgcnVsZSBzZXQgYW5kIGNvbW1pdCBcdTIwMTQgaXQgaXMgbm90IGEgZ3VhcmFudGVlIHRoYXQgdGhlIGNvZGUgaXMgZnJlZSBvZiBhbGwgdnVsbmVyYWJpbGl0aWVzLiIsImlzX2F1dGhvcml0YXRpdmUiOnRydWV9LCJwcm9vZl9oYXNoIjoic2hhMjU2OmM1MDA1YTc0NGExMThjMzdiOGU5NGE4Y2E2OTljZWEzNjhhY2Y5NDRjNDE3NjIwY2MyMDRmNjQwZmFlODFlYmQiLCJib3VuZGFyeSI6bnVsbCwiZW52ZWxvcGUiOiJxd2VkLXNlY3VyaXR5LWF0dGVzdGF0aW9uLzEiLCJqdGkiOiJmODY3YTk5ZWNlMThlYzliY2MwOTA1NTBhYjE2NzAzYiIsInZlcmlmaWNhdGlvbl9jb250ZXh0Ijp7InNwZWNfdmVyc2lvbiI6IjEuMCIsImZvcm1hbF9zdGF0ZW1lbnQiOiJMQUYtVVMvVEhFLUdFTVNUT05FQGFlNzJiNWZlIChQUiAjOTUpIGlzIHNhZmUgdG8gbWVyZ2UiLCJ2ZXJkaWN0IjoiVkVSSUZJRUQiLCJhZG1pc3Npb24iOiJBRE1JVCIsInZlcmlmaWVyIjoiUVdFRCBTZWN1cml0eSIsInZlcmlmaWVyX3ZlcnNpb24iOiJxd2VkLXNlY3VyaXR5LXJ1bGVzZXQvMTQiLCJwcm9vZl9yZWYiOiJzaGEyNTY6OTQ2M2ViZTM0MzEyNjZhYjk1ODJlMWUxYmQ2ZjZhODg1MTEzMjQ5OTQ0NWY2YzlhZjJhYTQyODE3NDA2NzI3MiJ9fX0.k705CLX6ArIoV2-QOuvWFeBjor5OGvYV98o0EisFSsRWGN-BuAVaTJfN_4Woirl4nSkYT7KbFocnoAdalTn6T3DsIqEGPdwF8SgFrPzG5AuPZ0BtXBOLbcibM5V5UNPLMD7AKmbgNTiimBJT4xKkC_EFzKXvfVKK1ZUVmx0gcGBvBsmha7f0yj_FaTe9L84gPhgr8c2hDcu_mft1wz1Wt6HIy9f8LNcoZq27ttK90rqZDPK4DbJiGkQ90ETFT7ZQ2zLTcmSiBNZn-ih0t8nk-Pdg7-JN2-u9AyzSizB_Ki19Qvc-ZxYDf4f05G0IpEAkQHvm7lroz0KcuxCZ9iX1KQ",
  "fingerprint": "c99b988d80ace44f",
  "jwks_url": "https://qwed-security-334760594829.us-central1.run.app/.well-known/jwks.json",
  "kid": "565ad0864f75bdbb"
}

@sieve-by-fendora

Copy link
Copy Markdown

Sieve Security Scan ✅

No likely vulnerabilities found in changed files.

0 real · 0 suppressed · 0 FP · 0 total

Comment thread package-lock.json
"remark-smartypants": "^3.0.3",
"rfdc": "^1.4.1",
"satori": "^0.19.1",
"satori": "^0.63.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ High: Suspicious major version jump in satori dependency

🎟️ Issue Explanation

The satori package version jumps from ^0.19.1 to ^0.63.2 — a leap of 44 minor versions. This is an unusually large version bump that does not follow normal semver progression for a package in the 0.x range. This pattern can indicate a dependency confusion or package takeover attack where a malicious actor publishes a high version to hijack projects using wide version ranges. The package is used in a public repository with payment and auth risk tags, increasing blast radius if a malicious build artifact is introduced.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_9ff94012f077

Comment thread package-lock.json
"prettier": "^3.9.10",
"tsx": "^4.23.15",
"typescript": "^5.9.3"
"typescript": "^7.0.2"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium: Suspicious major version jump in TypeScript devDependency

🎟️ Issue Explanation

TypeScript jumps from ^5.9.3 to ^7.0.2. As of the last known public release data, TypeScript 7.x does not exist in the official Microsoft/TypeScript npm registry. This could indicate a dependency confusion attack or a typosquatted/hijacked package. While TypeScript is a devDependency and does not ship to production directly, malicious code in a build tool can exfiltrate secrets from the CI/CD environment (e.g., npm tokens, cloud credentials) or inject backdoors into build output. The repository context flags CI/CD secrets as a risk area.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_6b6323f1ccaf

Comment thread package-lock.json
"preact-render-to-string": "^6.7.0",
"pretty-bytes": "^7.1.3",
"pixi.js": "^8.22.0",
"preact": "^11.0.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium: Major version bump in preact with potential breaking security changes

🎟️ Issue Explanation

preact jumps from ^10.29.8 to ^11.0.2. A major version bump (v10 → v11) can introduce breaking changes in how content is sanitized or how XSS protections are applied in the virtual DOM. If this version exists and contains regressions in escaping or sanitization, it could introduce XSS vulnerabilities in the rendered frontend. The companion package preact-render-to-string also bumps accordingly (^6.7.0 → ^6.8.1), which handles server-side rendering where improper escaping is a known XSS attack vector.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_285e5e4b6bf3

Comment thread package.json
"prettier": "^3.9.10",
"tsx": "^4.23.15",
"typescript": "^5.9.3"
"typescript": "^7.0.2"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium: Unverified Major Version Bump – TypeScript 7.x

🎟️ Issue Explanation

The version constraint is bumped from ^5.9.x to ^7.0.2, skipping the entire 6.x line. TypeScript 7 (as of the last public information) is not a stable, generally-available release. Pinning to a non-stable or pre-release major version via a caret range means the build toolchain will resolve to early/unstable releases that may contain unvetted changes, breaking type-safety guarantees relied upon by the rest of the security-sensitive codebase (auth, payment paths flagged in repo context). An adversary with access to the npm registry could also exploit the wider resolution window introduced by jumping two major versions.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_17be087e0431

Comment thread package.json
"remark-smartypants": "^3.0.3",
"rfdc": "^1.4.1",
"satori": "^0.19.1",
"satori": "^0.63.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Medium: Extremely Large Major Version Jump – satori ^0.19.1 → ^0.63.2

🎟️ Issue Explanation

The satori dependency jumps from ^0.19.1 to ^0.63.2, spanning 44 minor/major pre-1.0 versions. For a 0.x package each minor bump is technically breaking per semver convention. This extremely large range of skipped versions makes it impractical to audit changelog entries for security-relevant changes (e.g., SVG/font parsing vulnerabilities, prototype pollution). The caret on a 0.x package resolves only patch updates, but the explicit target 0.63.2 vs 0.19.1 represents a deliberate leap that warrants security review of all intermediate releases.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_6d0c19e44988

Comment thread package.json
"preact-render-to-string": "^6.7.0",
"pretty-bytes": "^7.1.3",
"pixi.js": "^8.22.0",
"preact": "^11.0.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Low: Major Version Bump – preact ^10.x → ^11.0.2

🎟️ Issue Explanation

Preact is bumped from ^10.29.8 to ^11.0.2, a new major version. The caret range will resolve to any 11.x release going forward, meaning future npm installs without a lockfile commit can pull in untested 11.x patch/minor releases. Given the repo uses preact-render-to-string for server-side rendering (line 66), regressions in HTML serialization or XSS sanitization behavior in the new major should be validated.

🛠️ Actions

  • @secuarden-ai /fix - Generate remediation code for this issue
  • @secuarden-ai /explain - Learn why this matters and potential impact
  • @secuarden-ai /ignore [reason] - Dismiss this finding
  • @secuarden-ai /review - Submit a reasoned assessment and request a rescan

🔐 Secuarden Security Review • Finding: SEC_51d374951f92

@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 1 high · 1 medium

Alerts:
⚠ 2 issues (≤ 0 issues of at least minor severity)

Results:
2 new issues

Category Results
Security 1 medium
1 high

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@llamapreview llamapreview Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LlamaPReview — Blocking issues found

TypeScript 7 breaks npm run check; required typecheck fails before tests run.

Exact-head CI remains unresolved (3 failed, 1 action required, 1 pending); no CI-dependent merge-safety claim is made.

Owner action: Migrate tsconfig.json to a TypeScript 7-supported resolution mode (for example bundler, or a compatible node16/nodenext pairing), or keep TypeScript on 5.x until that migration is complete; then rerun npm run check and npm test.

2 further items in details.

Risk path

The TypeScript 7 bump turns the existing moduleResolution: "node" config into a hard typecheck failure that stops CI before any test runs.

sequenceDiagram
participant PR as PR bump
participant CI as CI test job
participant TSC as tsc --noEmit
participant T as npm test
PR->>CI: npm ci
CI->>TSC: npm run check
note over TSC: PR change — TypeScript ^7.0.2 installed
critical TS 7 rejects removed moduleResolution=node10
TSC-->>CI: error TS5108 in tsconfig.json
end
CI-->>T: test step never runs
note over CI,T: Impact — required typecheck fails#59; PR cannot be validated
TSC-->>CI: fix config or stay on TS 5.x, then rerun
Loading
Review details and evidence
Priority File Finding Evidence
P1 package.json TypeScript 7 breaks npm run check; required typecheck fails before tests run. confirmed
P2 package.json Chokidar 6 requires Node >=22.22 but package.json still declares >=22. confirmed

Finding details

P1 · TypeScript 7 breaks npm run check; required typecheck fails before tests run.

package.json

Changed mechanism. package.json moves typescript from ^5.9.3 to ^7.0.2, and the lockfile resolves typescript@7.0.2. TypeScript 7 removed the legacy node10 resolution mode.

Reachable path. .github/workflows/test.yml runs npm ci, then npm run check, which is tsc --noEmit && npx prettier. --check. tsconfig.json still contains:

"module": "esnext",
"target": "esnext",
"moduleResolution": "node",

The PR-head test job fails at that exact step:

tsconfig.json(7,25): error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.

Consequence. The required typecheck fails; npm test never runs; the PR cannot be validated or merged as-is.

Strongest counterevidence. The tsconfig.json line is unchanged, so the delta is the compiler version, not a pre-existing TS 7 configuration. npm ci succeeded, so this is not an install-time dependency-resolution failure. The base used TypeScript 5.9.3, so there is no base-side TS 7 failure to attribute this to.

Verification boundary: confirmed; scope: changed region.

Material unknowns

  • Whether quartz/util/og.tsx contains additional Satori 0.63 contract dependencies beyond the exact satori(imageComponent, { width, height, fonts, loadAdditionalAsset }) call anchored in quartz/plugins/emitters/ogImage.tsx. Any additional Satori contract in that file would be a coverage gap in the major upgrade assessment, not a demonstrated defect; the current blocking posture is unchanged.
    • Check: Inspect quartz/util/og.tsx for Satori 0.63 contract usage and exercise an OG-image render.

LlamaPReview checks

  • Read the complete PR-head file tsconfig.json.
  • Read the complete PR-head file package.json.
  • Read the complete PR-head file .github/workflows/test.yml.
  • Read bounded PR-head context from package-lock.json.
  • Read bounded PR-head context from quartz/plugins/emitters/ogImage.tsx.
  • Inspected matching PR-head repository snippets in quartz/build.ts, quartz/cli/handlers.js.

Still coding alone? Open CarbonChat, a chat room right inside Codex.

Comment thread package.json
"ansi-truncate": "^1.4.0",
"async-mutex": "^0.5.0",
"chokidar": "^5.0.0",
"chokidar": "^6.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 | Confidence: High

Changed mechanism. package.json moves chokidar from ^5.0.0 to ^6.0.0. The lockfile entry for chokidar@6.0.0 declares engines.node: ">= 22.22", while package.json still declares:

"engines": {
 "npm": ">=10.9.2",
 "node": ">=22"
}

Reachable path. quartz/build.ts calls chokidar.watch(...) in the normal build/serve path. A developer or CI environment on Node 22.0–22.21 satisfies the project's declared engine but is outside Chokidar 6's supported range.

Consequence. npm ci can emit EBADENGINE or fail under engine-strict settings, and the runtime combination is unsupported by the dependency. The current workflow uses node-version: 22 and its npm ci step succeeded, so this is not the observed CI failure; it is a manifest support-contract defect introduced by the bump.

Strongest counterevidence. setup-node with node-version: 22 likely resolves a recent 22.x release, so the current CI run may not exercise the lower end of the declared range. No current Chokidar runtime crash is shown.

Owner action: Raise engines.node to >=22.22 and update any pinned CI image accordingly, or keep chokidar on 5.x.

Evidence: PR-head read of package.json; bounded PR-head context from package-lock.json; PR-head read of .github/workflows/test.yml.

@dependabot @github

dependabot Bot commented on behalf of github Nov 6, 2026

Copy link
Copy Markdown
Contributor Author

Looks like these dependencies are updatable in another way, so this is no longer needed.

@dependabot dependabot Bot closed this Nov 6, 2026
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/production-dependencies-bdf9bca0db branch November 6, 2026 04:44

@gitginie gitginie Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dependabot[bot]
Thank you for your contribution to this repository! We appreciate your effort in closing pull request.
Happy coding!

@devactivity-app

Copy link
Copy Markdown

Pull Request Summary by devActivity

Metrics

Cycle Time: 6d 23h 59m Review Time: 6d 23h 59m Comments: 10

null

@secuarden-ai

secuarden-ai Bot commented Nov 6, 2026

Copy link
Copy Markdown

Invalid command format

To invoke the bot, use:

@secuarden-ai /command [arguments]

Available commands:

  • @secuarden-ai /fix SEC_ID - Generate a fix for a finding
  • @secuarden-ai /explain - Explain why this finding matters
  • @secuarden-ai /ignore SEC_ID [reason] - Suppress a finding
  • @secuarden-ai /rerun - Re-scan this PR
  • @secuarden-ai /review - Submit per-finding reassessment feedback (see review format below)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code Security size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants