Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
6d59c26
build(deps-dev): bump @babel/plugin-transform-private-property-in-object
dependabot[bot] Jun 1, 2026
34925d7
Merge pull request #5811 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 1, 2026
be2edbf
build(deps-dev): bump @babel/plugin-transform-optional-chaining
dependabot[bot] Jun 1, 2026
c37476f
build: improved constants and docs
matteobruni Jun 1, 2026
e90d0d4
build: working on bundle size reduction without noticeable breaking c…
matteobruni Jun 2, 2026
14320c6
build: working on bundle size reduction without noticeable breaking c…
matteobruni Jun 2, 2026
370065e
build: working on bundle size reduction without noticeable breaking c…
matteobruni Jun 2, 2026
d9a3616
build: working on bundle size reduction without noticeable breaking c…
matteobruni Jun 2, 2026
ee8b4ca
Merge branch 'main' into v4
matteobruni Jun 2, 2026
9f00122
Merge pull request #5810 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 2, 2026
b3d2a27
build: working on bundle size reduction without noticeable breaking c…
matteobruni Jun 3, 2026
382ae7b
Merge branch 'hotfix' into v4
matteobruni Jun 3, 2026
b5d5b04
Merge branch 'hotfix' into v4
matteobruni Jun 3, 2026
f24e5a7
Merge branch 'main' into v4
matteobruni Jun 3, 2026
b54b5db
fix: various fixes after deeper review
matteobruni Jun 3, 2026
1286c03
Merge remote-tracking branch 'origin/v4' into v4
matteobruni Jun 3, 2026
8449b21
build(deps-dev): bump svelte-eslint-parser from 1.6.1 to 1.7.1
dependabot[bot] Jun 3, 2026
50db6ac
Merge pull request #5820 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 3, 2026
840c25e
build(deps-dev): bump express-rate-limit from 7.5.1 to 8.5.2
dependabot[bot] Jun 3, 2026
99fb7d8
build(deps-dev): bump eslint-plugin-svelte from 2.46.1 to 3.19.0
dependabot[bot] Jun 3, 2026
7f01bf2
feat: added positionX option to ribbons bundle, deprecating position …
matteobruni Jun 3, 2026
c39f664
Merge remote-tracking branch 'origin/v4' into v4
matteobruni Jun 3, 2026
8f07be3
docs: updated ribbons bundle docs
matteobruni Jun 4, 2026
fcdec1e
build(deps-dev): bump yauzl from 3.3.1 to 3.3.2
dependabot[bot] Jun 4, 2026
bd4a442
Merge pull request #5821 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 4, 2026
8b66a1b
Merge pull request #5822 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 4, 2026
ca72126
Merge pull request #5823 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 4, 2026
570a616
chore(engine): removed memoize since it was too much for the scope
matteobruni Jun 4, 2026
beee3af
build: plans for agents
matteobruni Jun 4, 2026
c233bf4
feat: working on an mcp server for AI integrations for creating optio…
matteobruni Jun 4, 2026
6829fd9
build: added mcp server to workspace
matteobruni Jun 4, 2026
1f4414d
build: improved package.json descriptions and keywords
matteobruni Jun 4, 2026
d610ecc
build: improved package.json descriptions and keywords
matteobruni Jun 4, 2026
fff00a1
docs: improved docs for handovers
matteobruni Jun 4, 2026
fd41abf
Merge branch 'heads/main' into v4
matteobruni Jun 4, 2026
18d002b
build(deps): bump @builder.io/qwik from 1.19.2 to 1.20.0
dependabot[bot] Jun 5, 2026
9374865
Merge pull request #5829 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 5, 2026
9174c1f
build(deps-dev): bump vite-plugin-dts from 5.0.1 to 5.0.2
dependabot[bot] Jun 5, 2026
9bb7ee5
Merge pull request #5828 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 5, 2026
d08a35f
Merge branch 'heads/main' into v4
matteobruni Jun 6, 2026
fd246ef
build: updated deps
matteobruni Jun 6, 2026
0e28456
fix: various fixes after deeper review
matteobruni Jun 6, 2026
da297e6
build: increased the concurrency on nx cloud
matteobruni Jun 6, 2026
aa99a3c
build: removed cache for websites since they had issues in CI
matteobruni Jun 6, 2026
7385240
docs: improved mcp server docs
matteobruni Jun 6, 2026
4fe2fc0
docs: improved mcp server docs
matteobruni Jun 6, 2026
dc15d30
feat: preparing create packages for the new templates structure
matteobruni Jun 6, 2026
32eda42
feat: after publish
matteobruni Jun 6, 2026
dea1fa5
docs: updated templates creation plan
matteobruni Jun 6, 2026
cbd16b5
docs: updated templates creation plan
matteobruni Jun 6, 2026
72b5998
chore(engine): reducing engine output size
matteobruni Jun 7, 2026
40ebd3e
docs: updated bundle reduction plan doc
matteobruni Jun 7, 2026
bde0a70
docs: updated bundle reduction plan doc
matteobruni Jun 7, 2026
683368b
build: updated deps and updated some docs
matteobruni Jun 7, 2026
11e89ab
build: added missing deps
matteobruni Jun 7, 2026
bc118ef
feat: adding templates to cli create
matteobruni Jun 8, 2026
bce1a7e
feat: completed adding templates plan
matteobruni Jun 9, 2026
468b67e
build: fix issue with website build
matteobruni Jun 9, 2026
122c70f
Merge branch 'website-updates' into v4
matteobruni Jun 9, 2026
a58a7f0
build: after build commit
matteobruni Jun 9, 2026
0360ec5
Merge branch 'website-updates' into v4
matteobruni Jun 9, 2026
6765d25
Merge branch 'heads/main' into v4
matteobruni Jun 9, 2026
0551736
build: updated to angular 22
matteobruni Jun 9, 2026
ad657dc
build: added missing files
matteobruni Jun 9, 2026
96f9dd8
build: lockfile updated
matteobruni Jun 9, 2026
9b66602
build: more templates
matteobruni Jun 9, 2026
febc2db
build(deps): bump @rollup/plugin-replace from 5.0.7 to 6.0.3
dependabot[bot] Jun 10, 2026
bb9c381
chore(options): improved options loading
matteobruni Jun 10, 2026
6dbc416
build: working on reducing the bundle size
matteobruni Jun 10, 2026
18c4e56
build: updated bundle reduction plan doc
matteobruni Jun 10, 2026
7a791f0
build: updated pnpm
matteobruni Jun 10, 2026
bb19fb8
Merge pull request #5837 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 10, 2026
4418b12
build(deps): bump webpack-cli from 5.1.4 to 7.0.3
dependabot[bot] Jun 10, 2026
e2720fc
fix: fixed hdr setup, and improved it too
matteobruni Jun 11, 2026
ee26e80
Merge pull request #5833 from tsparticles/dependabot/npm_and_yarn/v4/…
matteobruni Jun 11, 2026
e29b10d
chore(engine): improved hdr setup code a bit
matteobruni Jun 11, 2026
1305d86
chore(engine): updated bundle reduction plan
matteobruni Jun 11, 2026
7def36b
chore(engine): updated bundle reduction plan
matteobruni Jun 11, 2026
fc9b3d4
chore(engine): reordered a function in Particle.ts
matteobruni Jun 11, 2026
fc8303c
build: improved effect filter config
matteobruni Jun 11, 2026
fe4e562
docs: updated wrappers reaactivity plan
matteobruni Jun 11, 2026
b08813b
docs: updated wrappers reaactivity plan
matteobruni Jun 11, 2026
c1d9d50
docs: updated plans for agents
matteobruni Jun 11, 2026
bf113b7
docs: updated plans for agents
matteobruni Jun 12, 2026
ea7f830
docs: updated plans for agents
matteobruni Jun 12, 2026
5f97fff
docs: updated plans for agents
matteobruni Jun 12, 2026
99214f5
docs: updated plans for agents
matteobruni Jun 12, 2026
53482f1
fix: fixed vue 3 wrapper
matteobruni Jun 12, 2026
931d24e
docs: updated plans for agents
matteobruni Jun 13, 2026
7e1cd65
fix: fixed vue 2 wrapper
matteobruni Jun 13, 2026
e6b4e94
docs: updated plans for agents
matteobruni Jun 14, 2026
ab59ef1
fix: fixed angular wrapper
matteobruni Jun 14, 2026
472fbd4
fix: fixed angular wrapper
matteobruni Jun 14, 2026
10d09a8
fix: fixed angular wrapper
matteobruni Jun 14, 2026
fdd51c2
fix: fixed solid wrapper
matteobruni Jun 14, 2026
b3884a1
docs: updated plans for agents
matteobruni Jun 14, 2026
4d04ed9
fix: fixed qwik wrapper
matteobruni Jun 14, 2026
1edf67f
fix: fixed astro wrapper
matteobruni Jun 14, 2026
46e9e44
fix: fixed astro wrapper
matteobruni Jun 14, 2026
054a1a4
fix: fixed inferno wrapper
matteobruni Jun 14, 2026
08e8c87
fix: fixed lit wrapper
matteobruni Jun 14, 2026
3711e63
fix: fixed riot wrapper
matteobruni Jun 14, 2026
c9298f0
docs: updated plans for agents
matteobruni Jun 14, 2026
53bef05
fix: fixed webcomponents wrapper
matteobruni Jun 15, 2026
8c7d9f9
fix: fixed preact wrapper
matteobruni Jun 15, 2026
9667e21
fix: fixed svelte wrapper
matteobruni Jun 15, 2026
5d142f1
docs: updated plans for agents
matteobruni Jun 15, 2026
93d7b8b
fix: fixed some eslint configs and circular deps
matteobruni Jun 15, 2026
20e70f6
docs: fixed order in website
matteobruni Jun 15, 2026
4096a4a
fix: fixed stencil wrapper
matteobruni Jun 15, 2026
4d45d53
docs: updated plans for agents
matteobruni Jun 15, 2026
88b7b76
fix: fixed some circular deps
matteobruni Jun 15, 2026
ad417d8
fix: fixed ember wrapper
matteobruni Jun 15, 2026
0357222
[CodeFactor] Apply fixes to commit ad417d8
code-factor Jun 15, 2026
9423074
docs: updated plans for agents
matteobruni Jun 15, 2026
bf89f8f
Merge remote-tracking branch 'origin/v4' into v4
matteobruni Jun 15, 2026
e0620d7
fix: fixed jquery wrapper
matteobruni Jun 15, 2026
120fe5d
fix: fixed anglar secondary wrappers and their bundles with proper de…
matteobruni Jun 16, 2026
89603f5
docs: updated website after all the wrapper changes
matteobruni Jun 16, 2026
d711e47
docs: completed the wrapper reactivity plan
matteobruni Jun 16, 2026
0b0e5d5
build: updating deps and templates + scripts for versions
matteobruni Jun 16, 2026
52938d8
docs: completed the wrapper reactivity plan
matteobruni Jun 16, 2026
5780e6c
build: updated deps
matteobruni Jun 16, 2026
e50e933
build: updated lockfile
matteobruni Jun 17, 2026
77b1689
build: updated deps
matteobruni Jun 17, 2026
ea72259
build: updated deps and wordpress wrapper
matteobruni Jun 17, 2026
81542b7
build: updated website gitignore
matteobruni Jun 17, 2026
3f2b827
build: updated wordpress wrapper
matteobruni Jun 17, 2026
6410e49
build: fixed two demos
matteobruni Jun 17, 2026
985a346
chore(release): published new version
matteobruni Jun 17, 2026
0a0fbf8
build: updated wordpress wrapper version in readme
matteobruni Jun 17, 2026
1c50142
Merge pull request #5815 from tsparticles/v4
matteobruni Jun 17, 2026
37a1601
build: updated workspace version
matteobruni Jun 17, 2026
ac1f96a
Merge pull request #5860 from tsparticles/v4
matteobruni Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .agents/skills/nx-generate/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: nx-generate
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a ... app, create a ... lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a new app, create a new lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
---

# Run Nx Generator
Expand Down
3 changes: 2 additions & 1 deletion .agents/skills/nx-workspace/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,8 @@ Example output:
},
"dependencies": {
"my-app": [
{ "source": "my-app", "target": "shared-ui", "type": "static" }],
{ "source": "my-app", "target": "shared-ui", "type": "static" }
],
"shared-ui": []
}
}
Expand Down
2 changes: 1 addition & 1 deletion .cursor/skills/link-workspace-packages/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ yarn workspace @org/app add @org/ui
Result in `package.json`:

```json
{ "dependencies": { "@org/ui": "workspace:^" } }
{ "dependencies": { "@org/ui": "workspace:*" } }
```

---
Expand Down
2 changes: 1 addition & 1 deletion .github/skills/nx-generate/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: nx-generate
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a ... app, create a ... lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a new app, create a new lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
---

# Run Nx Generator
Expand Down
3 changes: 2 additions & 1 deletion .github/skills/nx-workspace/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,8 @@ Example output:
},
"dependencies": {
"my-app": [
{ "source": "my-app", "target": "shared-ui", "type": "static" }],
{ "source": "my-app", "target": "shared-ui", "type": "static" }
],
"shared-ui": []
}
}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
nx_cloud_started=false

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

if echo "$output" | grep -qiE "401|sufficient access|unauthorized"; then
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
run: pnpm install

- name: Initialize Nx Cloud
run: pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-medium-js"
run: pnpm exec nx-cloud start-ci-run --distribute-on="10 linux-medium-js"

- name: Build All Packages
run: pnpm run build:ci
Expand Down
2 changes: 1 addition & 1 deletion .opencode/skills/nx-generate/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: nx-generate
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a ... app, create a ... lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
description: Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps/libs, or setting up project structure. Trigger words - scaffold, setup, create a new app, create a new lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.
---

# Run Nx Generator
Expand Down
3 changes: 2 additions & 1 deletion .opencode/skills/nx-workspace/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,8 @@ Example output:
},
"dependencies": {
"my-app": [
{ "source": "my-app", "target": "shared-ui", "type": "static" }],
{ "source": "my-app", "target": "shared-ui", "type": "static" }
],
"shared-ui": []
}
}
Expand Down
58 changes: 58 additions & 0 deletions .planning/STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,61 @@ See: .planning/PROJECT.md (initialized)
**Core value:** Provide a small, high-performance, and extensible particle engine that developers can integrate into web projects with minimal configuration.

**Current focus:** Phase 1 — Developer Experience & Docs

## Session Status — 2026-06-14

### Objective
Plan and implement wrapper reactivity (options/url/theme prop changes) across Vue 3, Vue 2, Angular, Solid, Qwik, and Astro wrappers, plus fix Vue 3 docs describing nonexistent `:init`/`@particles-init` features.

### Outcome
**S1 (Vue 3 wrapper) completed**: wrapper reactivity implemented (`id`/`options`/`url` → destroy+reload, `theme` → safe `loadTheme`), demo aligned with reactive config switching, README fully documented. Plan remaining steps on `.planning/handovers/WRAPPER_REACTIVITY_PLAN.md`.

**S2 (Vue 2 wrapper) completed**: wrapper reactivity + `tsParticles.init()` fix in event-bus + `theme` prop + fixed `particlesLoaded` type + removed stale `IParticlesProps` export.

**S3 (Angular wrapper) completed**: added `OnChanges` for `id`/`options`/`url`/`theme` reactivity, `theme` `@Input()`, fixed `particlesLoaded` type to `Container | undefined`, added `tsParticles.init()` in service, demo has config switch button, README fully documented with API table and theme caveat.

**S4 (Solid wrapper) completed**: wrapper reactivity with `createEffect`/`on` tracking `id`/`options`/`url`; `theme` prop added; `particlesLoaded` callback signature fixed to `(container?: Container) => void`; demo aligned removing conditional mount.

**S5 (Qwik wrapper) completed**: wrapper reactivity implemented with `useVisibleTask$` + `track()` for prop changes; `theme` prop added; demo aligned (conditional removed, `initParticlesEngine` moved to module level); README fully documented with theme caveat.

**S6 (Astro wrapper) completed**: wrapper rewritten from constructor-only to `connectedCallback` + `attributeChangedCallback` + `disconnectedCallback` pattern with `observedAttributes` (`data-id`, `data-options`, `data-url`, `data-theme`). Race-condition guard via `#loadId` counter. `theme` prop added with safe `loadTheme` call. Demo has interactive "Switch Config" button demonstrating attribute-driven reactivity. README updated with `theme` prop, reactivity contract, and optional theme plugin caveat. Build passes.

**S11 (React docs) completed**: README props table updated with `particlesLoaded`, demo/template alignment verified.

**S12 (Preact wrapper) completed**: wrapper reactivity (`theme` prop, `loadTheme` in `loadParticles` + selective `componentDidUpdate` without refresh for theme-only changes), `container` ref type fixed to `Container | undefined`, `particlesLoaded` callback fixed with optional container param, demo keeps original constructor init + conditional render (module-level init + unconditional render causes Preact page freeze — Preact-specific limitation), README updated with `theme` prop and plugin caveat. Build passes.

### Key Findings (S22)
- `Container` type in `@tsparticles/engine` does not declare `loadTheme()` — it is injected at runtime by optional `@tsparticles/plugin-themes`. Any
theme-prop implementation must use a type cast (`as unknown as { loadTheme?: ... }`) or bracket access.
- `tsParticles.load()` returns `Container | undefined`. All `particlesLoaded` callbacks and
container-access code must guard against undefined.
- Six wrappers need modification: Vue 3 (Composition API), Vue 2 (class component + decorators), Angular (OnChanges), Solid (createEffect), Qwik (useVisibleTask$), Astro (custom element).
- Vue 3 guide (`websites/website/docs/guides/vue3.md`) references `:init`, `@particles-init`, and
`particlesInit` that do not exist on the wrapper component — these must be removed from both the English source and all 9 translations.
- `export type IParticlesProps = ISourceOptions` in `vue-particles.vue` (Vue 2) causes `TS2528: multiple default exports` in the SFC compiler context — must be removed or inlined.
- **S22 findings**: All 16 wrapper guide pages lack `theme` prop documentation (even though all wrappers now support it). Reactivity contracts (id/options/url → destroy+reload) are missing from 15/16 guides. Cleanup/teardown docs missing from 15/16 guides. Nuxt guide still documents stale `@particles-init`/`@particles-destroy` events removed in S18. Solid and Svelte guides describe reactivity incorrectly (as "targeted updates" or "without recreating the instance" vs actual destroy+reload).

### Next Steps
1. ✅ **S1 Vue 3** — done
2. ✅ **S2 Vue 2** — done
3. ✅ **S3 Angular** — done
4. ✅ **S4 Solid** — done
5. ✅ **S5 Qwik** — done
6. ✅ **S6 Astro** — done: wrapper rewritten from constructor-only to `connectedCallback` + `attributeChangedCallback` + `disconnectedCallback` + `observedAttributes`, `theme` prop added, demo has reactive config switch button, README has reactivity docs.
7. ✅ **S7 Inferno** — done (callback invocation + theme support)
8. ✅ **S8 Lit** — done (theme property + particlesLoaded event + selective reactivity in update())
9. ✅ **S9 Riot** — done (onUpdated/onUnmounted lifecycle hooks, theme support, loadId race guard, demo with config switch, README aligned)
10. ✅ **S10 WebComponents** — done (`data-id`/`data-theme` added to `observedAttributes`, `attributeChangedCallback` handles both, `id` setter syncs to `data-id`, deprecated `particlesInit` event removed, README documented with observed attributes table and theme caveat, build passes)
11. ✅ **S11 React docs** — README props table updated with `particlesLoaded`, demo/template check passed
12. ✅ **S12 Preact** — wrapper (theme prop, loadTheme, selective componentDidUpdate senza refresh per solo-theme), demo (constructor init + conditional render — module-level init freeze Preact, tenuto pattern originale), README aligned
13. ✅ **S13 Svelte** — wrapper reactivity (`theme` prop, `afterUpdate` → reactive `$:` statements with `loadKey`, `loadTheme` on initial load + theme change), demo alignment (`particlesInit` → `initParticlesEngine`, Svelte 5 `mount()` API, SSR-safe dynamic imports), README with props table, reactive behavior docs, theme plugin docs. Svelte demo + SvelteKit demo entrambi verificati funzionanti dall'utente.
14. ✅ **S14 Stencil** — done (`theme` prop + `particlesLoaded` event + `@Watch("theme")` + demo con theme toggle + `@tsparticles/plugin-themes` installato, build passa).
15. ✅ **S15 Ember** — done (`theme` prop, `#container` instance tracking per memory leak fix, `registerDestructor` chiamato una sola volta, `particlesLoaded` type corretto a `(container?: Container)`, template `particles.hbs` aggiornato con `theme=@theme`, demo con config switch + theme toggle buttons, README con tabella args e caveat plugin opzionale, build passa).
16. ✅ **S16 jQuery** — done (`setTheme` method added to `ParticlesResult` type, `WeakMap<Element, Container>` for per-element container tracking, `load`/`ajax` track containers, `setTheme` method with safe `loadTheme?.()` optional plugin invocation, README updated with `setTheme` docs and theme plugin caveat, build passes).
17. ✅ **S17 Angular-fireworks** — done: `OnChanges` implemented for `id`/`options` reactivity, `#destroyed` guard prevents post-destroy execution, `#startFireworks` stops previous instance before creating new one, `ngOnDestroy` calls `.destroy()` (not `.stop()`), demo N/A (no standalone demo dir), templates N/A (no templates dir), README updated with `OnChanges` behavior docs, build passes.
18. ✅ **S18 EN docs (vue3.md)** — done: removed stale `:init`, `@particles-init`, `particlesInit` from EN guide (all examples + API table); removed Component-Level Init section; fixed `useParticles` → `useParticlesProvider`; added `theme` prop to API table with optional plugin caveat; added `theme` prop docs in Theme Switching section. File reduced from 622→575 lines.
19. ✅ **S19 9 translations (vue3.md)** — done: mirrored all S18 changes across zh, ja, hi, ru, pt, fr, de, es, it. Each file reduced from 622→~576 lines. Zero stale patterns remaining across all 10 files.
20. ✅ **S20 Validation** — done: all 13 affected wrappers build successfully, stale-pattern grep on Vue3 guides (EN + 9 translations) returns zero hits for `:init`/`@particles-init`/`particlesInit`; README consistency scan completed. All contract points documented in all 16 wrapper READMEs.
21. ✅ **S21 Final handoff** — done: README documentation gaps fixed for preact (reload contract + cleanup), stencil (safe no-op + reactivity + cleanup), ember (cleanup), jquery (reload + loaded callback + cleanup), angular-fireworks (lifecycle). All builds pass.
22. ✅ **S22 EN wrapper guide audit** — completed: all 16 EN wrapper guide pages audited against wrapper READMEs. Gap matrix produced: all 16 guides have missing `theme` prop docs, missing reactivity contracts, missing cleanup docs, or stale patterns (see S22 gap matrix in conversation). Vue3.md already clean from S18. Nuxt guide has stale `@particles-init`/`@particles-destroy` events. Solid and Svelte guides have misleading reactivity descriptions.
23. ✅ **S23 Translation alignment** — completed: all 16 EN wrapper guides fixed with `theme` prop docs, reactivity contract, cleanup docs, fixed `Container | undefined` callback types, stale Nuxt events removed, misleading Solid/Svelte descriptions corrected. Changes mirrored to all 9 translation directories (zh, ja, hi, ru, pt, fr, de, es, it) — 144 translation files updated.
Loading
Loading