Commit Graph

76 Commits

Author SHA1 Message Date
rpone c01aa2b44a refactor: separate document output from shared HTML playback 2026-10-12 23:47:46 +08:00
rpone 40b74b7fc1 feat: add HTML document output and reusable runtime workers 2026-10-12 23:11:22 +08:00
kashorin 68f1693645 refactor: publish video-domain packages independently for 0.3.1 2026-10-09 18:13:50 +08:00
kashorin 8bac90166a fix(release): identify package provenance 2026-10-09 04:05:46 +08:00
kashorin 91d98a1b2d refactor: unify Studio items and temporal inverses 2026-10-09 00:35:10 +08:00
kashorin a4c25ea76b refactor: make narrative projection an explicit author relation 2026-10-08 15:42:44 +08:00
kashorin 91fd9328f5 docs: align production guidance with the 0.3 model 2026-10-08 14:38:45 +08:00
kashorin 25520fecdf refactor: compose CLI and Studio from owned capabilities 2026-10-07 20:45:22 +08:00
kashorin 190c54c435 refactor: close temporal domain ownership 2026-10-07 20:44:28 +08:00
kashorin 205bfeb98d refactor: establish the adaptive composition model 2026-10-07 20:44:28 +08:00
kashorin 089c39a012 perf: localize build and render working sets
Preserve forwarded Result values without eager materialization, advance live Builds from disposable indexes, and bound HyperFrames resource, source-frame, and output work.
2026-09-26 06:38:25 +08:00
Sharky Wang 9ac471d108 feat(studio): add a light theme that follows the browser (#353)
Studio opens in the browser's color scheme and a top-bar button switches
between light and dark. A choice that differs from the browser is kept in
localStorage; choosing the browser's own scheme returns to following it.

Each theme-dependent color is written as light-dark(light, dark), with the
dark value unchanged, and data-theme on <html> sets color-scheme. The light
palette uses hypit.ai's warm neutrals. Timeline items tint their track hue
over white, with text and audio waveforms in a deep shade of the same hue.
2026-09-24 15:00:46 +08:00
Sharky Wang deb799be07 fix(studio): serve composition material in the ranges a media element asks for (#329) 2026-09-20 06:58:35 +08:00
kashorin a6f84f5564 feat(production): inspect frames and prepare retained performances 2026-09-19 06:50:37 +08:00
Qunlin Jin ccbc7a1f0c refine Studio mutation origin and process cleanup 2026-09-19 06:01:09 +08:00
alexqem 55141ed8fa fix(security,runtime): prevent CSRF in studio, make video download async and sanitize process signals 2026-09-18 12:52:07 +03:00
kashorin bd728d05b9 feat(script)!: delimit semantic markers and preserve caption spacing 2026-09-17 06:58:25 +08:00
kashorin b778509d9e fix(studio): sample preview video on the exact source frame 2026-09-17 02:50:42 +08:00
fetw a56576a49e fix: admit in-root paths whose basename starts with ..
path.relative of a workspace file named ..keep.svml is the string
..keep.svml. Treating any relative result that starts with .. as an
escape rejected that file as SOURCE_OUTSIDE_ROOT, and the same
predicate was copied into source discovery, Build Result project
paths, Studio writes and CLI short paths.

Use the repository's existing check: only `..` and `..${sep}` are
parent traversal. A Source still cannot import ../outside.svs.
2026-09-16 17:45:33 +08:00
kashorin d1168c1ba2 feat(studio): load interface languages from explicit JSON packs 2026-09-14 23:29:27 +08:00
kashorin 870fc33bc4 refactor: isolate build execution and complete production workflow 2026-09-14 18:48:45 +08:00
kashorin b679e32192 refactor: unify adaptive timeline and presentation composition
Place prepared Takes on an independent Timeline with gaps and overlaps. Present picture, sound and captions through explicit Use rules while preserving source timing and project-authored styles.

Unify Companion bands, parameter ownership and source writeback in Studio. Migrate components, examples and authoring guidance, remove retired Speech/Semantic Track interfaces, and retain protocol identifiers at @1.

Validation: repository suite (786 tests; six sandbox-blocked tests passed on permitted rerun), 43 Studio tests after audit fixes, TypeScript, public declarations, four example-package builds, chat Source check and npm file inventory.
2026-09-13 01:01:47 +08:00
kashorin 08589cafa8 fix(studio): stabilize script edits and rejected parameter values 2026-09-11 17:54:51 +08:00
kashorin 54cf1f32eb feat(studio): add author-directed time and parameter editing 2026-09-11 07:34:28 +08:00
kashorin df129a3c65 feat: preserve Result references and refine Studio workflows
Keep reused media as explicit references, publish Result changes only when needed, and replace Windows files without timed retries. Clarify environment selection and CLI output.

Refine Studio task and media browsing, editable display names, inline media previews, single-row track overlap, semantic ruler pinning, and Companion-owned Ranking selection.
2026-09-11 04:32:05 +08:00
kashorin bb1af2996f feat(distribution): publish under @hypit/hypit and unify studio command 2026-09-10 04:30:13 +08:00
kashorin e90b070c33 feat(composition): support authored clocks alongside semantic timelines 2026-09-09 23:38:46 +08:00
kashorin 1f203a4f9f refactor(composition): separate semantic performance from visual layout
Speech publishes semantic timing and original audio. Media Performance and project components consume the prepared material, preserving source offsets across Takes while controlling their own framing and motion.

Add explicit renderer programs for coordinated HTML/CSS/JavaScript scenes, with typed media children, backdrop filtering and blending. Remove stand-in and estimated-take preview paths, migrate Sources and documentation, and demonstrate a Moment-driven video-to-diagram handoff.
2026-09-09 17:30:30 +08:00
kashorin cdd087711d chore(protocol): keep unpublished formats at version 1 2026-09-09 17:26:39 +08:00
kashorin 6d5a56c043 feat: complete public extension and transparent media paths 2026-09-07 04:34:42 +08:00
kashorin f258b9923b feat(authoring): load reusable sources from installed packages 2026-09-07 04:25:49 +08:00
kashorin f15b1d46f8 refactor(studio): make authoring execution runtime-owned 2026-09-07 04:25:49 +08:00
kashorin 66747d84d8 feat(stand-in): the picture a generation would have made, drawn from its draft
A stand-in is an ordinary Run Candidate for a generated output that has not
been bought yet. It is derived, never restated: every exact-model package built
with model-kit now exports one <key>-stand-in Run Fragment that reads the
model's published draft (resolution, aspect ratio, duration, generateAudio),
the same prompt Text edge and the piece's clock, and asks the draw-card
capability of @hypit/stand-in for a card of exactly that frame and length. What
cannot be derived — an automatic duration, a video model without an aspect
ratio, an audio model — is refused with the reason.

media.local serves draw-card. The card is drawn in Node with a built-in 5x7
bitmap face (this machine's ffmpeg has no drawtext): a ground coloured by kind,
a thick border, a diagonal STAND-IN watermark, the kind in large type, the
model, frame and duration, a prompt excerpt, and for video a running timecode,
frame counter and progress bar composited frame by frame by ffmpeg; a model
that would have spoken leaves a silent track so A-roll recipes find their
audio stream. The card is a Blob of the output's type and goes through
inspect and normalize like the real thing; plan lists it at local price and
Studio executes it as a local Need.

Verified in a Studio session: the media-track preview with three stand-in
fragments and an estimated take displays in about two seconds. The empty
mock-media, preview-mock and semantic-take-preview directories are gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 04:25:49 +08:00
kashorin 82f5ce795b feat(studio): the display closure is everything the Run makes computable for free
Studio can only show media that has been normalized, and normalization is a
Need served by the Profile's local FFmpeg Endpoint. A Studio that installs no
Endpoint therefore rejects every file Candidate: satisfying the generated
output leaves inspect-media and normalize-media unresolved, and a file cannot
satisfy the normalized output's type. The deleted path-based preview bypass
answered this question with the wrong mechanism; this is the right one.

The Runtime Host gains localEndpoints(): every Endpoint the Profile selects
whose Provider declares local pricing, immediate capabilities only, with the
Profile's bindings applied. A capability bound to a priced Endpoint stays
unresolved rather than falling to a local one. Studio preflight and execution
resolve Needs through that registry, exactly as plan and a Build do minus every
priced Endpoint, and name the capability when a Need reaches nothing free.

Verified on the media-track preview with three file Candidates and an
estimated semantic take: normalized through media.local and displayed in
306 ms. Duplicate studio.svrun files that were byte-identical to a sibling Run
are removed; a Run's path carries no semantics.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 04:25:49 +08:00
kashorin 4c6af5860f refactor: remove hidden validation side paths 2026-09-07 04:25:42 +08:00
kashorin 03bc2e8664 refactor(studio): browse project results through distribution 2026-09-04 23:00:39 +08:00
kashorin 2bbbe0771c fix(cli): resolve project context before runtime selection 2026-09-04 23:00:27 +08:00
kashorin 7bab59726f refactor(studio): make preview an ordinary run 2026-09-04 22:22:49 +08:00
kashorin b7be4084fe perf(results): browse filesystem history by date 2026-09-03 13:29:02 +08:00
kashorin b834d45a09 fix(results): keep forwards on finished owners 2026-09-03 13:29:02 +08:00
kashorin c5dbb4defc refactor(cli): separate commands from storage details 2026-09-03 13:29:02 +08:00
kashorin f8fca3af0b fix(result): decode stored result data at repository boundary 2026-09-03 13:28:06 +08:00
kashorin fd2387b738 refactor(build): finalize result-oriented execution model 2026-09-03 13:28:06 +08:00
kashorin e8dc1d07b6 refactor(runtime): replace content-addressed artifacts with resources 2026-09-03 13:25:57 +08:00
rpone 1b64b2c05c fix(studio): give artifact cards a stable height 2026-08-31 15:26:12 +08:00
kashorin c40e9deada fix(studio): recover from source watcher errors 2026-08-29 18:58:22 +08:00
rponeawa 8cce11f636 fix: resolve a preview Run's local media capabilities in the Studio session
Studio installs the local FFmpeg endpoint for a preview Run and whitelists the
deterministic media capabilities it serves, but only in the startup preflight.
The session every browser request runs called inspectStudioRun without them, and
the endpoints threaded into studioPlugin never reached readStudioSession at all,
leaving its own endpoints field dead.

A preview Run therefore started and then refused each request with "the Studio
projection closure requires unresolved capabilities:
@hypit/media-pipeline@1#inspect-media, @hypit/media-pipeline@1#normalize-media".

Pass the endpoints through to the session and resolve the same capability set
there, named once beside inspectStudioRun rather than duplicated.
2026-08-28 04:20:19 +08:00
rpone 8a5b88ef75 fix: persist preview mock runs and route revisions 2026-08-27 23:48:53 +08:00
rponeawa dec74d09f8 feat: move preview mocks into native SVRun realization 2026-08-27 18:55:50 +08:00
kashorin 75c4f61be9 merge: integrate main reconstruction tooling 2026-08-26 19:06:02 +08:00