Repository navigation
feat(pipeline): add the story and story.chat products - #84
Merged
Merged
Conversation
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
force-pushed
the
redesign/story
branch
from
October 15, 2026 17:27
7bc8b7b to
8310906
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
storyproduct (subject aMasterAdvid, manifeststories/<id>.json):episode.json(the episode asexport episodewrites it, each resource given by its kind and address) andstory.json(format 1: the episode's chat rows, its effect instances andparts, the manifests of the products it plays with). Its roots are the episode key, its shard keys and the ADV player settings; itsmasterinput is the episode's master record.story.chatproduct (subjectdefault, manifeststorychat/default.json):chat.jsonwith the rows of the three shared chat shards.export storyasks for the story, reads itsstory.json, then asks for the story and every productpartsnames (scene, assets, Live2D models, cue sheets, chat, CRI Lips) and places them as theproductlayout. 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-leveland the product flags.pipeline.assemble.master_input); the shard parsing moves tocontent.adv, so planning the story stages does not import UnityPy.site buildtakes its models from the site's model manifests only; the unused model directory source is removed.export story.Test plan
part_paths/part_products, and the two-run export hook.episode.jsonequals theexport episodedocument field by field (resources without the presence flag), every Live2D address is a model key, and every manifestpartsnames is placed.🤖 Generated with Claude Code