Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
7e8dd70
build(deps): bump typescript-eslint from 8.59.3 to 8.59.4
dependabot[bot] May 19, 2026
6e93357
Merge pull request #5781 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 19, 2026
726a3a1
build(deps-dev): bump @angular/language-service from 21.2.8 to 21.2.13
dependabot[bot] May 19, 2026
939f6d0
build: updated some deps and removed some cdns from confetti website
matteobruni May 20, 2026
ff06bdc
build(deps): bump lit from 2.8.0 to 3.3.3
dependabot[bot] May 20, 2026
b74ae1d
build: updated some deps and ci workflow
matteobruni May 20, 2026
74a8e3b
build(deps): bump preact-render-to-string from 6.6.7 to 6.7.0
dependabot[bot] May 20, 2026
74688f4
fix: fixed color managers
matteobruni May 20, 2026
11427ac
build: updated some deps
matteobruni May 21, 2026
48df7c8
Merge pull request #5782 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 21, 2026
23dd01b
Merge pull request #5783 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 21, 2026
1144e3a
Merge pull request #5785 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 21, 2026
2bd3ff1
build(deps): bump @tootallnate/once from 2.0.0 to 2.0.1
dependabot[bot] May 21, 2026
4e7f906
feat: added stencil wrapper
matteobruni May 22, 2026
4fb7c84
build(deps-dev): bump stylus from 0.62.0 to 0.64.0
dependabot[bot] May 22, 2026
14ef852
build(deps-dev): bump helmet from 7.2.0 to 8.1.0
dependabot[bot] May 22, 2026
bc5e842
docs: updated docs and websites for the stencil wrapper
matteobruni May 22, 2026
651687b
fix: fixed stencil demo and wrapper
matteobruni May 22, 2026
c2d3cb1
build: after build updates
matteobruni May 22, 2026
29aec1b
docs: updated confetti website
matteobruni May 22, 2026
8cc91df
Merge branch 'heads/main' into v4
matteobruni May 22, 2026
594f2c4
build: updated deps
matteobruni May 22, 2026
b4050ba
Merge pull request #5790 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 22, 2026
c644f0a
Merge pull request #5789 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 22, 2026
ac102c5
Merge pull request #5787 from tsparticles/dependabot/npm_and_yarn/too…
matteobruni May 22, 2026
44c3eb5
Merge branch 'main' into v4
matteobruni May 22, 2026
6984506
build(deps): bump zone.js from 0.16.1 to 0.16.2
dependabot[bot] May 22, 2026
8466173
build: try fixing build
matteobruni May 22, 2026
fbfd39d
Merge remote-tracking branch 'origin/v4' into v4
matteobruni May 22, 2026
3692493
Merge pull request #5791 from tsparticles/v4
matteobruni May 22, 2026
2c4d047
build(deps): bump serialize-javascript from 4.0.0 to 7.0.5
dependabot[bot] May 22, 2026
4f83fb0
fix: fixed stencil wrapper (improved init) and demo
matteobruni May 22, 2026
00050a6
Merge pull request #5788 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni May 22, 2026
e6a34b2
Merge pull request #5792 from tsparticles/dependabot/npm_and_yarn/ser…
matteobruni May 22, 2026
8b204fe
Merge branch 'heads/main' into v4
matteobruni May 22, 2026
809d80e
build: updated some deps
matteobruni May 22, 2026
8124acc
Potential fix for pull request finding
matteobruni May 22, 2026
dad5f09
fix: some fixes in stencil particles
matteobruni May 22, 2026
d2d8a90
Merge remote-tracking branch 'origin/v4' into v4
matteobruni May 22, 2026
b500e35
Merge pull request #5793 from tsparticles/v4
matteobruni May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ jobs:

- name: Initialize Nx Cloud or fall back to local
run: |
set +e

if [ -z "$NX_CLOUD_ACCESS_TOKEN" ]; then
echo "NX Cloud token missing — using local nx execution"
echo "NX_NO_CLOUD=true" >> $GITHUB_ENV
Expand All @@ -49,17 +51,16 @@ jobs:
fi

echo "NX Cloud token present — attempting distributed execution"
npx nx-cloud --version || echo "nx-cloud --version not available"

retries=0
max_retries=3
nx_cloud_started=false

until [ "$retries" -ge "$max_retries" ]; do
output=$(npx nx-cloud start-ci-run --distribute-on="5 linux-medium-js" 2>&1)
while [ "$retries" -lt "$max_retries" ]; do
output=$(npx --yes nx-cloud start-ci-run --distribute-on="5 linux-medium-js" 2>&1)
exit_code=$?

if echo "$output" | grep -q "401\|sufficient access\|unauthorized\|Unauthorized"; then
if echo "$output" | grep -qiE "401|sufficient access|unauthorized"; then
echo "NX Cloud auth failed (401) — falling back to local nx immediately"
echo "NX_NO_CLOUD=true" >> $GITHUB_ENV
echo "NX_CLOUD_STARTED=false" >> $GITHUB_ENV
Expand All @@ -71,7 +72,7 @@ jobs:
break
fi

echo "nx-cloud start failed (attempt $((retries + 1))/${max_retries}). Retrying in $((2 ** retries))s..."
echo "nx-cloud start failed (attempt $((retries + 1))/$max_retries). Retrying in $((2 ** retries))s..."
sleep $((2 ** retries))
retries=$((retries + 1))
done
Expand All @@ -80,7 +81,7 @@ jobs:
echo "NX_CLOUD_DISTRIBUTED_EXECUTION=true" >> $GITHUB_ENV
echo "NX_CLOUD_STARTED=true" >> $GITHUB_ENV
else
echo "nx-cloud start failed after ${max_retries} attempts — falling back to local nx"
echo "nx-cloud start failed after $max_retries attempts — falling back to local nx"
echo "NX_NO_CLOUD=true" >> $GITHUB_ENV
echo "NX_CLOUD_STARTED=false" >> $GITHUB_ENV
fi
Expand Down
1 change: 0 additions & 1 deletion bundles/pjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@
},
"devDependencies": {
"@tsparticles/cli-build": "workspace:^",
"@tsparticles/cli-command-build": "workspace:^",
"@tsparticles/plugin-interactivity": "workspace:*"
},
"publishConfig": {
Expand Down
2 changes: 1 addition & 1 deletion cli/utils/browserslist-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
},
"devDependencies": {
"browserslist": "^4.28.2",
"cpx2": "^8.0.2"
"cpx2": "^9.0.0"
},
"peerDependencies": {
"browserslist": "^4"
Expand Down
6 changes: 3 additions & 3 deletions cli/utils/depcruise-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,16 @@
"@stylistic/eslint-plugin": "^5.10.0",
"@tsparticles/eslint-config": "workspace:^",
"@tsparticles/prettier-config": "workspace:^",
"@types/node": "^25.8.0",
"@types/node": "^25.9.1",
"dependency-cruiser": "^17.4.0",
"eslint": "^10.4.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-jsdoc": "^63.0.0",
"eslint-plugin-tsdoc": "^0.5.2",
"prettier": "^3.8.3",
"prettier-plugin-multiline-arrays": "^4.1.8",
"tsup": "^8.5.1",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.3"
"typescript-eslint": "^8.59.4"
}
}
6 changes: 3 additions & 3 deletions cli/utils/eslint-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,17 @@
"@stylistic/eslint-plugin": "^5.10.0",
"@tsparticles/prettier-config": "workspace:^",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-jsdoc": "^63.0.0",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-tsdoc": "^0.5.2",
"jiti": "^2.7.0",
"prettier": "^3.8.3",
"prettier-plugin-multiline-arrays": "^4.1.8",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.3"
"typescript-eslint": "^8.59.4"
},
"devDependencies": {
"@types/node": "^25.8.0",
"@types/node": "^25.9.1",
"eslint": "^10.4.0"
}
}
2 changes: 1 addition & 1 deletion cli/utils/prettier-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"prettier-plugin-multiline-arrays": "^4.1.8"
},
"devDependencies": {
"cpx2": "^8.0.2",
"cpx2": "^9.0.0",
"prettier": "^3.8.3"
}
}
6 changes: 3 additions & 3 deletions cli/utils/rollup-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,17 @@
"@tsparticles/prettier-config": "workspace:^",
"eslint": "^10.4.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-jsdoc": "^63.0.0",
"eslint-plugin-tsdoc": "^0.5.2",
"prettier": "^3.8.3",
"prettier-plugin-multiline-arrays": "^4.1.8",
"rollup-plugin-visualizer": "^7.0.1"
},
"devDependencies": {
"@rollup/plugin-typescript": "^12.3.0",
"@types/node": "^25.8.0",
"@types/node": "^25.9.1",
"rimraf": "^6.1.3",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.3"
"typescript-eslint": "^8.59.4"
}
}
8 changes: 4 additions & 4 deletions cli/utils/webpack-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,22 +48,22 @@
"browserslist": "^4.28.2",
"eslint": "^10.4.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-jsdoc": "^63.0.0",
"eslint-plugin-tsdoc": "^0.5.2",
"prettier": "^3.8.3",
"prettier-plugin-multiline-arrays": "^4.1.8",
"swc-loader": "^0.2.7",
"terser-webpack-plugin": "^5.6.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.3",
"typescript-eslint": "^8.59.4",
"webpack-bundle-analyzer": "^5.3.0",
"webpack-cli": "^7.0.2"
},
"devDependencies": {
"@types/node": "^25.8.0",
"@types/node": "^25.9.1",
"@types/webpack-bundle-analyzer": "^4.7.0",
"@types/webpack-env": "^1.18.8",
"rimraf": "^6.1.3",
"webpack": "^5.106.2"
"webpack": "^5.107.1"
}
}
4 changes: 2 additions & 2 deletions demo/jquery/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@
"eslint-config-prettier": "^10.1.8",
"express": "^4.18.2",
"express-rate-limit": "^7.1.5",
"helmet": "^7.1.0",
"helmet": "^8.1.0",
"jsoneditor": "^10.0.0",
"lodash": "^4.17.21",
"prettier": "^3.1.1",
"pug": "^3.0.2",
"stats.ts": "^1.1.0",
"stylus": "^0.62.0",
"stylus": "^0.64.0",
"typescript": "^5.3.3"
}
}
2 changes: 1 addition & 1 deletion demo/lit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"dependencies": {
"@tsparticles/engine": "workspace:^",
"@tsparticles/lit": "workspace:^",
"lit": "^2.6.1",
"lit": "^3.3.3",
"tsparticles": "workspace:^"
},
"devDependencies": {
Expand Down
26 changes: 26 additions & 0 deletions demo/stencil/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "@tsparticles/stencil-demo",
"version": "4.0.5",
"private": true,
"description": "Stencil demo for @tsparticles/stencil",
"repository": {
"type": "git",
"url": "git+https://github.com/tsparticles/tsparticles.git",
"directory": "demo/stencil"
},
"scripts": {
"start": "stencil build --dev --watch --serve",
"build": "stencil build",
"build:ci": "stencil build"
},
"dependencies": {
"@tsparticles/configs": "workspace:^",
"@tsparticles/engine": "workspace:^",
"@tsparticles/slim": "workspace:^",
"@tsparticles/stencil": "workspace:^"
},
"devDependencies": {
"@stencil/core": "^4.43.4",
"typescript": "^6.0.3"
}
}
37 changes: 37 additions & 0 deletions demo/stencil/src/components.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/* eslint-disable */
/* tslint:disable */
/**
* This is an autogenerated file created by the Stencil compiler.
* It contains typing information for all components that exist in this project.
*/
import { HTMLStencilElement, JSXBase } from "@stencil/core/internal";
export namespace Components {
interface AppRoot {
}
}
declare global {
interface HTMLAppRootElement extends Components.AppRoot, HTMLStencilElement {
}
var HTMLAppRootElement: {
prototype: HTMLAppRootElement;
new (): HTMLAppRootElement;
};
interface HTMLElementTagNameMap {
"app-root": HTMLAppRootElement;
}
}
declare namespace LocalJSX {
interface AppRoot {
}
interface IntrinsicElements {
"app-root": AppRoot;
}
}
export { LocalJSX as JSX };
declare module "@stencil/core" {
export namespace JSX {
interface IntrinsicElements {
"app-root": LocalJSX.IntrinsicElements["app-root"] & JSXBase.HTMLAttributes<HTMLAppRootElement>;
}
}
}
131 changes: 131 additions & 0 deletions demo/stencil/src/components/app-root/AppRoot.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
import { Component, type JSX, State, h } from "@stencil/core";
import type { ISourceOptions } from "@tsparticles/engine";
import { defineCustomElements } from "@tsparticles/stencil/loader";
import { loadSlim } from "@tsparticles/slim";

@Component({
tag: "app-root",
styleUrl: "app-root.css",
})
export class AppRoot {
private static elementsDefined = false;
private readonly options: ISourceOptions = {
background: {
color: {
value: "#0f172a",
},
},
fullScreen: {
enable: false,
zIndex: 0,
},
fpsLimit: 120,
interactivity: {
events: {
onClick: {
enable: true,
mode: "push",
},
onHover: {
enable: true,
mode: "repulse",
},
resize: {
enable: true,
},
},
modes: {
push: {
quantity: 3,
},
repulse: {
distance: 140,
duration: 0.4,
},
},
},
particles: {
paint: {
color: {
value: "#fde68a",
},
},
links: {
color: "#f8fafc",
distance: 150,
enable: true,
opacity: 0.25,
width: 1,
},
move: {
direction: "none",
enable: true,
outModes: {
default: "bounce",
},
random: false,
speed: 2,
straight: false,
},
number: {
density: {
enable: true,
width: 900,
height: 900,
},
value: 80,
},
opacity: {
value: 0.5,
},
shape: {
type: "circle",
},
size: {
value: {
min: 1,
max: 4,
},
},
},
detectRetina: true,
};
@State() private engineReady = false;
@State() private initError?: string;

componentWillLoad(): void {
if (!AppRoot.elementsDefined) {
defineCustomElements();
AppRoot.elementsDefined = true;
}

this.engineReady = true;
}

render(): JSX.Element {
return (
<main>
<h1>tsParticles + Stencil</h1>
<p class="status">{this.engineReady ? "Engine ready" : "Initializing engine..."}</p>
{this.initError ? <p class="error">Init error: {this.initError}</p> : null}
{this.engineReady ? (
<stencil-particles
container-id="tsparticles"
options={this.options}
//url="/assets/default.json"
init={async engine => {
try {
await loadSlim(engine);
} catch (error: unknown) {
const message = error instanceof Error ? error.message : "Unknown initialization error";

this.initError = message;
console.error("[stencil-demo] component init failed", error);
}
}}
></stencil-particles>
) : null}
</main>
);
}
}
Loading
Loading