Commit Graph

37 Commits

Author SHA1 Message Date
kashorin 6314a9e79e merge: absorb SVS closing-text fix into recipe 2026-10-09 01:36:24 +08:00
Chi-Wei Lee ef62b07e15 fix: allow sheet closing text in SVS recipes (#377)
* fix: cover SVS text template rendering

* fix: detect the SVS sheet close between recipes

parseSvs searched the raw text for </sheet> before parsing, so a quoted
recipe value containing that text was either taken as the close or, with
lastIndexOf, guessed at. Check for the close tag only between recipes
instead, since closingBrace already skips quoted text. A missing close now
reports SVS_ROOT_UNCLOSED and a second close SVS_TRAILING, as on main.

Co-authored-by: Sharky Wang <65097782+rponeawa@users.noreply.github.com>

---------

Co-authored-by: Sharky Wang <65097782+rponeawa@users.noreply.github.com>
2026-10-09 01:33:14 +08:00
kashorin 836349e8e8 refactor: separate temporal anchors from audiovisual composition 2026-10-07 20:44:29 +08:00
kashorin 205bfeb98d refactor: establish the adaptive composition model 2026-10-07 20:44:28 +08:00
kashorin bb1af2996f feat(distribution): publish under @hypit/hypit and unify studio command 2026-09-10 04:30:13 +08:00
kashorin 6d5a56c043 feat: complete public extension and transparent media paths 2026-09-07 04:34:42 +08:00
rpone 03d0257b0b Rename the Playground to Studio wherever a reader is sent
`b32e8253` replaced both Playgrounds with `packages/studio`, but the rename
stopped at `examples/`. The skill and the docs still named the tool, the
command and the recipe sheet that no longer exist.

`studio.svs` becomes `recipes.svs` with its import alias, in the 39 files the
examples rename had left behind — docs, the `docs/zh` mirrors, the skill
references and the package manifests whose authoring snippets show the alias.
The old name was already loose, since an `.svs` file is a parameter-recipe
sheet rather than anything Studio reads; once `studio` names the application
it reads as Studio's own config file, which it is not. Two test fixtures keyed
the alias as a plain string rather than inside `{}`, so they moved with it —
`packages/text` had a real reference to `recipes.shot` resolving against a
`studio.shot` fixture.

`pnpm svml:playground -- --source main.svml` becomes `pnpm studio -- --run
build.svrun` throughout. The Run Source is not an optional extra any more:
Studio's unit of work is the Run, and it reads the Author SVML back out of it.

`preview-check.mjs` imported `svml-playground/src/pipeline/preview.js`, which
this branch deleted, so the skill's own build gate had been dead since
`b32e8253`. It is rebuilt on Studio's real entry path — `loadStudioDomain`,
`loadStudioRun`, `inspectStudioRun`, `readStudioSession` — and reports
`provenance.errors` and unresolved Candidates instead of the `waiting` and
`stand-in` fields Studio no longer has. It stays in URL space for Windows, as
`e0ecccb9` established, and closes the archive before exiting rather than
leaving it open behind a `process.exit` in a `try`.

The preview pages are rewritten rather than renamed, because what they
describe is gone. Studio has no stand-ins, no black frames and no estimated
timing; it refuses to open and names what is missing. So the pages document
the five refusals verbatim, and say plainly that a Source still declaring
ungenerated shots will not open — including the warning that no example in
this repository currently does. Running the ported check over all nine
committed Run Sources: six refuse on unresolved capabilities or a target that
is not a Film, and three on footage under the gitignored `examples/**/assets/`.
Claiming otherwise would have shipped a quickstart whose first command fails.

`pnpm check` clean; `pnpm test` 510 pass, 0 fail; `pnpm test:release` 8 pass.
2026-08-21 00:40:42 +08:00
rpone 47c7dff9ba refactor: remove the ranking Typewriter family
TierBoard, Column and TopThree remain. The Typewriter variant's Types,
Producers, Surface, schedule, render, fragment and Style paths are gone, along
with the helpers that only it used: grapheme splitting, its stage fit, the
package's only text-flow element, and the prefix and defaults generality of the
typography decoder.

Three chains had the Typewriter branch as their terminal else. Each one now
ends on a surviving variant with an explicit failure for an unknown one, rather
than relying on a fall-through. The browser visual test's canvas shrinks to the
content that remains.
2026-08-19 20:47:39 +08:00
rpone f11f6bf8d5 feat: publish Hypit element declarations 2026-08-19 17:35:00 +08:00
rpone df23c73d97 refactor: rebrand Narratage as Hypit 2026-08-19 15:51:58 +08:00
kashorin 7683e38c0e refactor: remove defensive execution scaffolding 2026-08-17 14:03:53 +08:00
kashorin 3a7c60f8cb refactor: simplify package loading and runtime execution 2026-08-17 14:03:52 +08:00
kashorin 2abc991691 refactor: slim authoring graph values 2026-08-13 20:20:05 +08:00
kashorin dcaf24ecb4 refactor: remove redundant compilation wrappers 2026-08-13 19:53:35 +08:00
kashorin 849ac2a76f refactor: simplify modular compilation and runtime state 2026-08-13 18:53:05 +08:00
rpone c4216c4b4c chore: declare licensing accurately before the public release
Every workspace manifest omitted a license field, so a scanner reading
the published repository would resolve all 90 of them as unknown. Both
Python services went further and declared plain Apache-2.0, which is
looser than the LICENSE they actually ship under.

Package bytes feed the example package locks, so adding the field
invalidated all three; refreshed them. Only closureDigest and artifacts
move — same 31 selected packages, nothing added or removed.

Also record what the READMEs never said: ffmpeg is a real prerequisite
for a Build and had zero mentions, and the media Lambda layer is a GPL
FFmpeg build. That build is deliberate — libx264 is GPL-only and the
encode path requires it — and it stays lawful only because the operator
builds and deploys it into their own account. Publishing a prebuilt
layer would break that, so the boundary is now written down.
2026-08-13 00:21:27 +08:00
kashorin 39ff01aeca refactor: simplify graph realization and local workflow 2026-08-12 15:38:06 +08:00
kashorin 45739bab73 feat: add data-only Seedance author kits 2026-08-10 13:41:56 +08:00
kashorin 76cae8eaab refactor: separate markup text and typography
Rename the author frontend around Markup, replace PromptKit with graph-native Text templates, and keep video typography in its own package. Wire ordinary Text through explicit graph edges into model and visible consumers, refresh examples, locks, tests, and architecture documentation.
2026-08-10 10:55:46 +08:00
kashorin 81aeb2d169 Normalize logical identities and migration docs 2026-08-10 03:58:39 +08:00
kashorin a3114f992b refactor: make caption planning atom-safe 2026-08-09 07:14:59 +08:00
kashorin f3d47a43c2 refactor: separate caption planning from style rendering 2026-08-09 05:22:35 +08:00
kashorin 359d199b13 refactor: remove client branding and freeze pre-release identities 2026-08-09 03:16:57 +08:00
kashorin 1a5b0e4ca7 refactor: decompose video-contracts into owned domain modules
The umbrella video-contracts package collapsed eight unrelated
vocabularies into one release unit. Public video communication now
lives in small, independently versioned contract packages: narrative,
media, program-space, speech, speech-evidence, semantic-map, visual-ir
and composition. Speech implementation packages are renamed for what
they do (speech-spine, speech-basis, speech-alignment), realization
folds into run, and hyperframes-render becomes render-hyperframes with
a renderer-neutral Visual IR spec. Every model package gains a direct
activation entry, and shared video test fixtures move to test-support.

Example package locks are regenerated for the decomposed closure; the
graph-check, live, echo-pro-aroll and bootstrap sources all compile
against the new package set.
2026-08-08 01:35:22 +08:00
kashorin e3ef14b50a refactor: rename contracts to video-contracts
The package holds Narrative, Media, ProgramSpace, Speech, SemanticTime,
Track, Composition and HyperFrames Visual IR contracts — all video
domain vocabulary. A domain-neutral name overstated its scope and
collided with the repository's own naming discipline. Example locks are
regenerated for the new package identity.

Also removes three empty untracked directories left from earlier
package drafts (provider-kit, prelude-video, video-fragments).
2026-08-07 23:21:53 +08:00
kashorin a6686b0bad feat: rename the project to Narratage
Narratage (narration + montage) is the project, framework, npm scope
(@narratage/*) and CLI command. SVML remains the name of its markup
language, so file suffixes (.svml/.svs/.svrun), source Headers and
svml.* wire format ids are intentionally unchanged. Example locks are
regenerated because package manifests participate in artifact digests.
2026-08-07 22:29:26 +08:00
kashorin d8d7e38c1f chore: reset every wire format version to @1
The @0/@2/@4 numbers were rewrite-internal draft counters, not released
format versions. No external consumer or persisted data depends on them,
so the first public format of every id is @1. Negative-format tests use
@9 as the deliberately unknown version. Example package and runtime
locks are regenerated because format ids participate in digests.
2026-08-07 22:12:53 +08:00
kashorin 6b4137deca feat(v2): make sources self-described and require run graphs 2026-08-07 14:24:26 +08:00
kashorin 71f50ead3f refactor(v2): separate host and video distribution boundaries 2026-08-07 12:10:33 +08:00
kashorin 93458649d9 refactor(v2): separate candidates from satisfactions 2026-08-07 04:54:02 +08:00
kashorin 0a0d2aebf6 feat(v2): close the talking-film author graph 2026-08-07 01:46:30 +08:00
kashorin a820db63ee feat(v2): add author media surfaces and graph-first contracts 2026-08-06 22:21:02 +08:00
kashorin 987274b161 feat: bind source assets into compilation 2026-08-06 16:03:58 +08:00
kashorin 1320b2c77f feat: assemble modular v2 compiler and runtime 2026-08-05 21:45:52 +08:00
kashorin c763ce44f1 feat: implement graph-native v2 compilation 2026-08-05 03:22:35 +08:00
kashorin f57ac143c4 feat: make external capabilities explicit and verifiable 2026-08-04 05:24:39 +08:00
kashorin 39392a5d10 feat: add modular text and script surfaces 2026-08-03 18:47:51 +08:00