@kieransimkin/dance-rudiments 0.1.2 → 0.1.3

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.
Files changed (2) hide show
  1. package/README.md +43 -0
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -4,6 +4,27 @@ DanceRudiments is a small C++17 library of deterministic rhythmic position funct
4
4
 
5
5
  Outputs are dimensionless offsets, normally in `[-1, 1]`. The caller chooses pixels, CSS units, metres, or another scale. There is deliberately no time interpolation in the public API: renderers advance with integer pips and get one exact sample per pip.
6
6
 
7
+ ## DanceFlow ecosystem
8
+
9
+ DanceRudiments is the reusable motion-vocabulary layer in Kieran Simkin's DanceFlow BPM and motion-response ecosystem:
10
+
11
+ - **StemLab** is the music-understanding layer. It analyses audio to produce BPM, beat, structure, stem, lyric, harmony, and related timing evidence.
12
+ - **DanceRudiments** turns integer musical positions at 64 pips per beat into deterministic 1D, 2D, or 3D position offsets.
13
+ - **DanceMoves** is the WordPress EPK motion runtime. It schedules and applies BPM-, cue-, and lyric-timed effects on public pages.
14
+
15
+ The three components can also be used independently. They exchange explicit timing and analysis data rather than depending directly on one another. DanceRudiments' 64-pips-per-beat sampling convention is intentionally higher resolution and is not the same unit as DanceMoves' 16-ticks-per-beat runtime clock.
16
+
17
+ ## Which package should I use?
18
+
19
+ | You are building | Install or download | What you get |
20
+ | --- | --- | --- |
21
+ | Python application | `pip install dancerudiments` from [PyPI](https://pypi.org/project/dancerudiments/) | Native Python extension and the catalogue/sample API |
22
+ | TypeScript or JavaScript application | `npm install @kieransimkin/dance-rudiments` from [npm](https://www.npmjs.com/package/@kieransimkin/dance-rudiments) | TypeScript declarations, JavaScript wrapper, and WebAssembly module |
23
+ | C++ application using a listed release platform | Download the matching `DanceRudiments-cpp-<version>-<platform>-static.zip` from [GitHub Releases](https://github.com/kieransimkin/DanceRudiments/releases) | Headers, static library, CMake package files, licence, platform manifest, and instructions |
24
+ | C++ application using another toolchain or architecture | Build from source or use `conan create` with `conanfile.py` | A library compiled for your own settings |
25
+
26
+ GitHub automatically adds “Source code” ZIP and tar.gz links to every release; those are repository snapshots, not precompiled packages. Python wheels belong on PyPI and the TypeScript/WASM package belongs on npm, so GitHub's manually attached assets are intentionally C++-only.
27
+
7
28
  ## Included rudiments
8
29
 
9
30
  The general motions are `bounce`, `sway`, `circle`, `figure_eight`, `step_touch`, `box_step`, `helix`, and `clay_background`.
@@ -68,6 +89,28 @@ Apply an output to a bounded subject. DanceRudiments changes position only; it m
68
89
 
69
90
  ## Potential problems
70
91
 
92
+ ### GitHub release assets are ambiguous or incomplete
93
+
94
+ - **Symptom (28 September 2026):** the first C++ ZIPs were named only by platform, opened into a `stage/` directory, contained no licence or instructions, and installed exported targets without the `DanceRudimentsConfig.cmake` file needed by the documented `find_package` workflow. The release page also did not explain where Python and npm packages lived.
95
+ - **Cause:** the release job archived its temporary install directory verbatim and treated all language build artifacts as potential GitHub attachments instead of giving each package ecosystem one canonical destination.
96
+ - **Corrective action:** publish Python on PyPI and TypeScript/WASM on npm; reserve manually attached GitHub assets for C++. Name each archive `DanceRudiments-cpp-<version>-<platform>-static.zip`, use a versioned root directory, include the MIT licence, C++ usage guide, platform manifest, complete CMake config/version files, and publish `SHA256SUMS.txt`.
97
+ - **Verification:** ordinary CI builds a separate consumer against the installed CMake package on Linux, Windows, and macOS. Release QA must inspect archive names and contents, verify the checksum file, and confirm the README's package table links to PyPI, npm, and GitHub Releases.
98
+
99
+ ### Installed-package smoke test assumes the wrong motion coordinate
100
+
101
+ - **Symptom (28 September 2026):** the first installed-package consumer compiled and linked on Linux, Windows, and macOS, but its runtime assertion failed on every platform.
102
+ - **Cause:** the test incorrectly expected `circle(64)` to return `(1, 0)`. The 64-pip motion wraps that input to pip 0, whose documented phase starts at approximately `(0, -1)`.
103
+ - **Corrective action:** test the public modulo contract by comparing `circle(64)` with `circle(0)` using a small floating-point tolerance, rather than duplicating an assumed trajectory coordinate.
104
+ - **Verification:** require the separate installed-package consumer to pass on all three CI platforms.
105
+
106
+ ### GitHub release attachment job has no Git checkout
107
+
108
+ - **Symptom (28 September 2026):** all `v0.1.2` package builds and both registry publications succeeded, but `attach-github-release` failed with `failed to run git: fatal: not a git repository (or any of the parent directories): .git`.
109
+ - **Cause:** that job intentionally downloaded build artifacts without checking out the repository, while `gh release upload` was invoked without `--repo` and therefore tried to infer its repository from local Git metadata.
110
+ - **Corrective action:** pass `--repo "${{ github.repository }}"` explicitly. A checkout is unnecessary because the upload only needs downloaded artifacts, the release tag, and the workflow token.
111
+ - **Verification:** upload the completed run's artifacts to `v0.1.2`, confirm them on the release page, and retain the explicit repository argument for future releases.
112
+ - **Research:** [GitHub CLI `gh release upload` manual](https://cli.github.com/manual/gh_release_upload), accessed 28 September 2026.
113
+
71
114
  ### MSVC core and Python import libraries have the same filename
72
115
 
73
116
  - **Symptom (28 September 2026):** after excluding 32-bit wheels, the `v0.1.1` Windows wheel still failed at `cp39-win_amd64` with `LINK : fatal error LNK1114: cannot overwrite the original file '.../Release/dancerudiments.lib'; error code 5`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kieransimkin/dance-rudiments",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Integer-pip rhythmic position functions with C++/WASM bindings.",
5
5
  "license": "MIT",
6
6
  "type": "module",