Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
13dfcc1
feat(live2d)!: read models from product manifests and their object ta…
nichinichisou0609 Oct 15, 2026
6f46864
feat(live2d): read model manifests of format 2
nichinichisou0609 Oct 15, 2026
6ff2f3d
feat(live): load a live from its product manifest and its parts
nichinichisou0609 Oct 15, 2026
d197e3e
feat(live)!: read the scene and the note highway from their products
nichinichisou0609 Oct 15, 2026
9bc3335
feat(data): draw atlas-packed sprites and read mesh submeshes by topo…
nichinichisou0609 Oct 15, 2026
f063721
feat(tools)!: validate and test lives from their products
nichinichisou0609 Oct 15, 2026
7dc915e
fix(data): merge product object roles and read localized live parts
nichinichisou0609 Oct 17, 2026
8068e6d
ci: check pull requests targeting any branch
nichinichisou0609 Oct 17, 2026
6a312bc
feat(story): load and play shared object products
nichinichisou0609 Oct 17, 2026
beeaefa
test(story): assert missing blur feature diagnostic
nichinichisou0609 Oct 17, 2026
60253d0
feat(ui): preview libraries through shared object products
nichinichisou0609 Oct 18, 2026
4a80fc8
feat(data): load and validate split product snapshots
nichinichisou0609 Oct 18, 2026
05f775f
feat(site): load chart variants and audio-disabled story products
nichinichisou0609 Oct 18, 2026
b15e49a
fix(story): complete missing product cues as silence
nichinichisou0609 Oct 18, 2026
fe26c8c
chore(release): prepare ournotes-player v0.2.0
nichinichisou0609 Oct 18, 2026
f7154a0
feat(schema): describe prefab and media product documents
nichinichisou0609 Oct 18, 2026
bef05c6
fix: validate product metadata and regional model aliases
nichinichisou0609 Oct 18, 2026
9f55157
docs: explain product playback and hosting
nichinichisou0609 Oct 19, 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
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ name: ci
# step when either changes.
on:
pull_request:
branches: [main]
push:
branches: [main]

Expand Down
1 change: 0 additions & 1 deletion .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ name: lint-commits
# Enforces conventional commit titles so git-cliff can drive the release notes. See cliff.toml for the type groups.
on:
pull_request:
branches: [main]
push:
branches: [main]

Expand Down
41 changes: 38 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,44 @@

All notable changes to this package. Versions follow [Semantic Versioning](https://semver.org/).

## [0.2.0](https://github.com/empty-sekai/ournotes-player/compare/v0.1.8...v0.2.0) - 2026-10-19

### Product loading and compatibility

- Read shared object resources from `nnnotes.product/1` manifests through typed texture, material, mesh, prefab, animation and shader accessors.
- Play Live2D model format 3, live products and UI packs through the shared object layer.
- Read format 2 chart and Live2D model sites through the same rendering interfaces.
- Story and UI inputs use the product formats generated by nnnotes 0.3.x.
- Route story cue volumes by CRI category names while retaining sound-row stop and crossfade behavior.

### Data validation

- Check product chart listings against manifest metadata and the complete unique asset closure.
- Validate chat status text values in story UI documents.
- Validate prefab hierarchy documents against their published transform and component schema.
- Describe room, spot, sound, video and CRI Lips documents, and accept null localization on native text records.

### Site products

- Select regional model aliases by region and localize standalone chart band names.
- Expose chart metadata for standalone live products and site aliases.
- Load live variants from entry manifests and accept variant paths in read-set requests.
- Validate product chart aliases, language-indexed UI references and offered variants.
- Honor audio-disabled story products and select an available playback language from story listings.

### Story products

- Story loading, playback and authoring use `nnnotes.product/1` manifests with shared object resources and language-specific UI and fonts.
- Home and live-result stories resolve their host prefabs, room geometry, Spine materials and animation bindings by object identity.
- Data validation checks the story product graph, font bindings, shader variants, audio files and model dependencies. `--lang` selects an explicit language scope.
- Node story loading accepts a manifest or a product layout containing exactly one story.

### Bug fixes

- Keep Spine index uploads from changing another renderer's vertex array.
- Keep model and shared-object validation caches independent.
- Clear loading text after language changes and display configured audio volumes in the controls.

## [0.1.8](https://github.com/empty-sekai/ournotes-player/compare/v0.1.7..v0.1.8) — 2026-10-16

### Features
Expand Down Expand Up @@ -174,6 +212,3 @@ All notable changes to this package. Versions follow [Semantic Versioning](https
- install from GitHub until the package is on npm
- add performance.md: the CPU cost of a frame
- a file holds each controller and clip once; the validator checks every reference _(story)_



13 changes: 7 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,11 @@ schemas.
- `tests/unit/`: `node --test`, synthetic inputs only. Test behaviour the code documents: an expected value should come
from the definition the module states (an easing formula, Unity's matrix convention, a documented algorithm), not
from the current output of the code.
- `tests/data/` (opt-in): runs the player in Node with a no-op WebGL2 context and a no-op AudioContext over a real
chart site, and checks that charts play to the end, that seeking, speed changes, pause and late frames keep the
chart state exact, and that a Live settings change during a chart gives the state of a session started with the
settings. It is skipped unless `OURNOTES_DATA` names a site directory:
- `tests/data/` (opt-in): runs the player in Node with a no-op WebGL2 context and a no-op AudioContext over real
data, the lives of a product layout and the charts of a chart site, and checks that charts play to the end, that
seeking, speed changes, pause and late frames keep the chart state exact, and that a Live settings change during a
chart gives the state of a session started with the settings. It is skipped unless `OURNOTES_DATA` names the data's
directory (a chart id names `lives/<id>.json`, else `charts/<id>.json`):

```sh
OURNOTES_DATA=/path/to/site npm run test:data
Expand All @@ -50,8 +51,8 @@ schemas.
process for many charts) answers every chart in both modes as the chart's own process does;
`OURNOTES_READSET_CHARTS=all OURNOTES_JOBS=<n>` checks every chart of the site, `n` at a time.

- `npm run validate-data -- <site dir> [chart id ...]` checks a site against the data format and the schemas in
`schema/`.
- `npm run validate-data -- <site dir> [live id | chart id | model id ...]` checks a directory of products and chart
sites against the data format and the schemas in `schema/`.

Rendering changes cannot be verified by the tests alone; describe how you checked them in the pull request.

Expand Down
Loading
Loading