Skip to content

feat(pipeline): add the story and story.chat products - #84

Merged
nichinichisou0609 merged 5 commits into
redesign/depotfrom
redesign/story
Oct 15, 2026
Merged

nichinichisou0609 merged 5 commits into
redesign/depotfrom
redesign/story

Conversation

@nichinichisou0609

Copy link
Copy Markdown
Collaborator

Summary

  • story product (subject a MasterAdv id, manifest stories/<id>.json): episode.json (the episode as export episode writes it, each resource given by its kind and address) and story.json (format 1: the episode's chat rows, its effect instances and parts, the manifests of the products it plays with). Its roots are the episode key, its shard keys and the ADV player settings; its master input is the episode's master record.
  • story.chat product (subject default, manifest storychat/default.json): chat.json with the rows of the three shared chat shards.
  • export story asks for the story, reads its story.json, then asks for the story and every product parts names (scene, assets, Live2D models, cue sheets, chat, CRI Lips) and places them as the product layout. It stops with a usage error before the second run when a key of such a product is not in the catalog. Flags: --format, --flac-level and the product flags.
  • Product stages share one master-record input (pipeline.assemble.master_input); the shard parsing moves to content.adv, so planning the story stages does not import UnityPy.
  • The story builder of site build takes its models from the site's model manifests only; the unused model directory source is removed.
  • Docs: products, stages, commands, export, quickstart and configuration describe the story products and export story.

Test plan

  • Unit tests: story and story.chat stages (selection, keys, manifests, master input, assembly), part_paths / part_products, and the two-run export hook.
  • Full test suite and ruff pass locally.
  • Exported episodes with and without chat from real data: episode.json equals the export episode document field by field (resources without the presence flag), every Live2D address is a model key, and every manifest parts names is placed.

🤖 Generated with Claude Code

nichinichisou0609 and others added 5 commits October 16, 2026 00:41
assemble.master_input stores a product's master record as its input
"master" (assemble.MASTER_INPUT); the live and spot stages use it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
story (stories/<advId>.json) holds an ADV episode: episode.json, the
command list with its text, sounds, videos and resource closure, and
story.json, which carries the episode's chat rows and effect instances
and names in `parts` the manifests of the products it plays with: the
story scene, a story asset per stage, still, frame, effect, post
effect, timeline, transition and chat asset, a Live2D model per
character, a story sound per cue sheet, the chat product and the CRI
Lips data when a voice is lip-synced.

story.chat (storychat/default.json) holds the rows of the shared chat
shards.

The parts depend on the episode's content, so `export story` runs the
story first and then the products its story.json names. It takes the
web audio format of the cue sheets (--format) and the FLAC level.

The ADV shard parsers and the effect instances are part of
content.adv, so planning a story reads no bundle code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…un export

Add tests for the story product (selection by episode key, keys, manifest,
the episode's master record input, episode.json and story.json from an object
table), the story.chat product (its single subject and the rows of the three
chat shards), part_paths and part_products on the parts of a story.json, and
the expand hook of the asset export: the request it returns runs once more and
only the last run is placed. The synthetic episode lives in tests/helpers/story
and the content tests share it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The story builder takes its Live2D models from the site's model manifests
(SiteModels) only; ModelDir and its install helper have no caller and are
removed with their tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
products.md and stages.md describe story and story.chat: their subjects,
roots and inputs, chat.json, episode.json, the story.json fields and how a
command asks for a story and then for the products its parts name.
commands.md, export.md, quickstart.md and configuration.md describe export
story as it is: the product layout it places, --format and --flac-level, and
what it needs. The story UI text record moves to the site build section,
whose stories carry that UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nichinichisou0609
nichinichisou0609 merged commit 6633cc6 into redesign/depot Oct 15, 2026
8 checks passed
@nichinichisou0609
nichinichisou0609 deleted the redesign/story branch October 15, 2026 17:29
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