@kieransimkin/dancemoves 3.0.4 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,9 +3,11 @@
3
3
  **DanceFlow musical motion by Kieran Simkin.** One JavaScript runtime for plain
4
4
  websites, React, Next.js and the separately packaged WordPress adapter.
5
5
 
6
- **3.0.4 release candidate** based on the published 3.0.3 shared-library release.
7
- It adds the shared three-slot lyric stage used by existing WordPress EPKs without
8
- restoring the duplicate raw-script layout removed in 3.0.
6
+ **3.0.5 release candidate** based on the published 3.0.4 shared-library release.
7
+ It preserves the shared three-slot lyric stage used by existing WordPress EPKs
8
+ without restoring the duplicate raw-script layout removed in 3.0. Public ready
9
+ events now bubble, and WordPress compatibility mode can find the body-level
10
+ lyric popover while ordinary module and React mounts stay scoped.
9
11
 
10
12
  ## Shared JavaScript library and WordPress
11
13
 
@@ -881,6 +883,7 @@ shell errors or resolved development incidents.
881
883
  | Cues or lyrics do not appear | Verify the selected UTF-8 timing attachment, bracketed timestamps, successful fetch and master-duration match. Call `discoverAudio()` for deliberately inserted players. A final status of `none` can mask a fetch failure: inspect the request and entry counts. | [Audio discovery](docs/api/javascript.md#audio-discovery-and-playback) |
882
884
  | A chapter landing or resumed section has the wrong visual state | Core LRC subscriptions arm one cue within 50 ms. Shared timelines instead reconstruct active intervals and default to no landing callbacks; use their render state for persistent section styling. Do not replay skipped transient cues to restore a section. | [Cue timelines](docs/api/effects.md#cuetimelineoptions) |
883
885
  | Custom lyric styling fails, or remains visible on pause | The generated layer is a direct child of `body`, not `.ks-epk`. Use `nextVisible*` only for a nonblank preview; preserve blank clear cues. Custom renderers must handle pause/end separately. | [Lyric styling](docs/api/styling.md), [lyric events](docs/api/javascript.md) |
886
+ | A document-level adapter never mounts, or `lyricStage()` stays `waiting-for-popover` while the popover exists | Versions before 3.0.5 could keep scoped readiness events from document listeners and could confine WordPress compatibility lookups to the EPK root even though the lyric popover is under `body`. Use 3.0.5 or later; verify a bubbling `dance-moves-*-ready` event, native document lookup in WordPress mode, three generated lyric lines and the adapter-specific ready marker. | [Shared effects loading](docs/api/effects.md#loading-and-ready-event) |
884
887
  | Phone motion is absent | Check the adapter's root, mobile/sensor/secure-context gates, user permission and reduced-motion state. Verify real sensor events on the intended device; a synthetic event is not physical-device evidence. | [Orientation runtime](docs/api/adapters.md) |
885
888
  | Paper planes are absent or obscure the hero | Save Ambient effect = Paper planes, provide `.ks-epk .epk-hero`, verify the atlas request and hero containment/stacking. Reduced-motion and forced-colour CSS intentionally hide decoration; offscreen/hidden state pauses flight. | [Paper-plane requirements](docs/api/paper-planes.md) |
886
889
  | Animation slows down or quality appears stuck | Measure the full visible page after load, inspect the active controller's snapshot and remove duplicate effect owners. Shared `quality()` and Clay/Stars use different thresholds and recovery rules; neither is a physical refresh-rate detector. | [Shared quality](docs/api/effects.md#qualityoptions), [Clay/Stars](docs/api/adapters.md) |
@@ -4,7 +4,7 @@
4
4
  [Release adapters](adapters.md) · [CSS/HTML](styling.md)
5
5
 
6
6
  Source: [assets/dance-moves-effects.js](../../assets/dance-moves-effects.js).
7
- Current shared-library baseline: **3.0.4**. Historical 2.7/2.8 notes below
7
+ Current shared-library baseline: **3.0.5**. Historical 2.7/2.8 notes below
8
8
  identify when the earlier primitives were introduced.
9
9
 
10
10
  This is the reusable, page-independent layer introduced in 2.7 and extended with
@@ -21,9 +21,11 @@ catalogue adopter. The module installs only if `window.DanceMoves` already exist
21
21
  and `window.DanceMovesEffects` does not. It does not retry a missing dependency.
22
22
  Its `version` property copies `DanceMoves.version`.
23
23
 
24
- After installation it dispatches **`dance-moves-effects-ready`** on **`document`**
25
- with `detail: { api: window.DanceMovesEffects, version: string }`. It is a native
26
- `CustomEvent` with default `bubbles: false` and `cancelable: false`. It fires once
24
+ After installation it dispatches **`dance-moves-effects-ready`** from the scoped
25
+ EPK root, or from `document` in WordPress compatibility mode, with
26
+ `detail: { api: window.DanceMovesEffects, version: string }`. It is a native
27
+ `CustomEvent` with `bubbles: true` and `cancelable: false`, so established
28
+ document-level adapters receive it in either mode. It fires once
27
29
  per successful installation; a late listener does not receive a replay.
28
30
 
29
31
  ```js
@@ -3,7 +3,7 @@
3
3
  [Documentation index](../README.md) · [JavaScript](javascript.md) ·
4
4
  [Adapters](adapters.md)
5
5
 
6
- Current shared-library baseline: DanceMoves 3.0.4.
6
+ Current shared-library baseline: DanceMoves 3.0.5.
7
7
  Sources: [core JavaScript](../../assets/dance-moves-core.js),
8
8
  [core stylesheet](../../assets/dance-moves-core.css),
9
9
  [catalogue adopter](../../assets/dance-moves-catalogue-timing.js),
@@ -1,6 +1,6 @@
1
1
  # Shared JavaScript API
2
2
 
3
- Package: `@kieransimkin/dancemoves`, release candidate 3.0.4.
3
+ Package: `@kieransimkin/dancemoves`, release candidate 3.0.5.
4
4
  This guide describes the public shared module; [WordPress](wordpress-shared-runtime.md)
5
5
  loads the same runtime through its adapter.
6
6
 
@@ -24,7 +24,7 @@ if ($LASTEXITCODE -ne 0) { throw "WordPress build failed" }
24
24
  ```
25
25
 
26
26
  The build machine needs Node, npm and Python. The WordPress server needs neither
27
- Node, npm, a C++ compiler nor an external CDN. Install `dist/DanceMoves-wordpress-3.0.4.zip`
27
+ Node, npm, a C++ compiler nor an external CDN. Install `dist/DanceMoves-wordpress-3.0.5.zip`
28
28
  through Plugins → Add New → Upload Plugin, preserving a backup and the prior
29
29
  working archive. Do not upload the npm tarball, web ZIP, repository source ZIP
30
30
  or a downloaded patch bundle.
@@ -71,6 +71,11 @@ the compatibility path for existing three-line lyric treatments: the plugin owns
71
71
  the LRC/audio clock and all lifecycle listeners while page code owns only the
72
72
  release-scoped render callbacks and CSS.
73
73
 
74
+ From 3.0.5, public `dance-moves-*-ready` events bubble for compatibility with
75
+ document-level page adapters. WordPress compatibility mode also keeps native
76
+ document-wide selectors, allowing the body-level lyric popover to be found from
77
+ the scoped runtime. Root-scoped module and React mounts remain isolated.
78
+
74
79
  ```php
75
80
  add_action('wp_enqueue_scripts', function () {
76
81
  if (!is_page(260)) { return; } // Your actual Arcadians Page ID.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "dancemoves-library-build/v1",
3
3
  "name": "@kieransimkin/dancemoves",
4
- "version": "3.0.4",
4
+ "version": "3.0.5",
5
5
  "homepage": "https://kieransimkin.co.uk/my-songs/",
6
6
  "files": [
7
7
  {
@@ -31,13 +31,13 @@
31
31
  },
32
32
  {
33
33
  "path": "dancemoves.min.js",
34
- "bytes": 168118,
35
- "sha256": "211a06f8b21fbc12340dd060ac6d36bbbb5cbda6dfc3f45e3cecacda4cc9e8be"
34
+ "bytes": 168228,
35
+ "sha256": "2ea4074d6f31f8d9527c13a4379bb6832a760641b900493449840935e0b65cb1"
36
36
  },
37
37
  {
38
38
  "path": "index.cjs",
39
- "bytes": 276097,
40
- "sha256": "bad26ca5d24335e344695dac673559ed2ff7693af0068ad0f21d5996fc5979da"
39
+ "bytes": 276314,
40
+ "sha256": "4e7a6049c0dd68dd9d78836ceb4fe14216c27132ac3264b4d53b27c633e8c597"
41
41
  },
42
42
  {
43
43
  "path": "index.d.ts",
@@ -46,8 +46,8 @@
46
46
  },
47
47
  {
48
48
  "path": "index.mjs",
49
- "bytes": 275012,
50
- "sha256": "1dcd67e089e11e5e0358e8981df1e16c5a02aea7897f7cce7a53c258e7249a93"
49
+ "bytes": 275229,
50
+ "sha256": "ad1b4c0a98f3461d6e3d98db3dc8eff7fac2ea6d437ee1650f26341e9bd9eb9c"
51
51
  },
52
52
  {
53
53
  "path": "react.cjs",
@@ -111,8 +111,8 @@
111
111
  },
112
112
  {
113
113
  "path": "wordpress.js",
114
- "bytes": 166906,
115
- "sha256": "074fc65dfa819c11ac7fd3f4e713d7b00639e9f59768f2778c43733f1e396e24"
114
+ "bytes": 167016,
115
+ "sha256": "c6ee5db0eddcc4ea605ed5e091384c857ff888ee062e9f81dd73feaa21ee8bd4"
116
116
  }
117
117
  ]
118
118
  }