Skip to content

chore(release): 0.1.1 - #2

Merged
nichinichisou0609 merged 5 commits into
mainfrom
dev
Sep 27, 2026
Merged

nichinichisou0609 merged 5 commits into
mainfrom
dev

Conversation

@nichinichisou0609

Copy link
Copy Markdown
Collaborator
  • nnnotes config init/set/unset/check/path; the config template ships with the package; a per-user config file.
  • Site assets stored gzip encoded by default (web --compress gzip|br|none); chart and model manifests format 3.
  • Stories reference their Live2D models (ournotes.story-manifest/2); story -o DIR --models.
  • room glTF: equal images shared; objects keyed by their file.

`nnnotes config init` writes the config template, which now ships with the package. In a
terminal it asks for each setting, reading the keys without echo; otherwise it takes
`--set SECTION.KEY=VALUE` values and asks nothing. `config set` / `config unset` change one
value in place and keep the file's comments; a value `-` is read from standard input.
`config check [--json]` reports each setting's origin and status (ok, unset, invalid, not
found, unknown) without its value, and `config path [--json]` lists where the config file is
looked up. A per-user config file (%APPDATA% on Windows, $XDG_CONFIG_HOME elsewhere) is read
after ./nnnotes.toml, and a missing setting's error points to `config init` when no config
file was read.
`nnnotes web` writes the compressible assets (json, glsl, moc3, atlas, skel, bin, wav, glb)
gzip encoded by default, and brotli with `--compress br`; `--compress none` keeps them as
they are. An asset is encoded only when that makes it smaller. Its name stays the sha256 of
the decoded bytes, with `.gz` or `.br` appended, and its manifest entry gains `stored`, the
byte length on disk, next to the decoded `size`; split JSON parts gain it as a fourth item.
The gzip bytes carry a fixed header, so the same data gives the same file on every Python
version with the same zlib. An existing encoded file that decodes to the same data is kept.
Chart manifests become format 3, and the site summary reports the decoded and stored bytes.

BREAKING CHANGE: chart manifests are format 3 and may name encoded assets; a player must
decode them.
A room's glTF now holds one image per distinct PNG, shared by the textures that draw it; each
texture keeps its own sampler and gets its Unity name. Textures, materials, mesh filters and
renderers are keyed by their serialized file and path id, so two files that reuse a path id no
longer share an entry. room.json `textures` lists one name per glTF texture, and the home host's
room materials use the same keys.
…ng them

A story no longer exports its Live2D models into its own directory. `nnnotes web` builds the models
the selected stories use once, as models of the site (listed in models.json), and each story
manifest (`ournotes.story-manifest/2`) names them in `models` and gives the site root in `root`.
`nnnotes story -o DIR` exports the models into a shared models directory (`--models`, default
`live2d/` next to DIR), where a model already exported is reused. A model's model.json (format 2)
records `motionSync`, and its shaders include the variants the story renderer draws with at the
best quality. The story's shaders and scene no longer carry the models' shaders and mask
materials. A model manifest of an older format is rebuilt by the next build; model manifests are
format 3.

BREAKING CHANGE: story manifests are `ournotes.story-manifest/2` and story.json `models` maps a
model key to a model id.
@nichinichisou0609
nichinichisou0609 merged commit 650020c into main Sep 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant