Commit Graph

58 Commits

Author SHA1 Message Date
kashorin db4e545d1e refactor: rebuild the domain-neutral language host 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 66a35294ad fix(oauth): return sign-in through the hosted callback page (#349)
fix(oauth): return sign-in through the hosted callback page (#349)
2026-09-23 17:09:46 +08:00
kashorin 870fc33bc4 refactor: isolate build execution and complete production workflow 2026-09-14 18:48:45 +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 e3a20e42e5 fix(hyperframes): bound rendering and resource I/O by one deadline 2026-09-08 22:06:16 +08:00
kashorin 59b17e777b feat(runtime): expose provider pricing and request support 2026-09-08 17:20:20 +08:00
kashorin 6c2fae51b0 fix(credentials): rotate OAuth through declared endpoint slots 2026-09-07 04:25:49 +08:00
kashorin 1ed40edd6f refactor(runtime): separate endpoint actions from durable operations 2026-09-07 04:25:49 +08:00
kashorin bd39ef50ca fix(runtime): keep durable builds progressing under load 2026-09-07 04:25:49 +08:00
kashorin efc8bd56e7 feat(runtime): render selected ranges with weighted capacity
Let HyperFrames render explicit frame intervals with independent browser workers, and make Runtime account for request-dependent resource units across Builds. Preserve external Operations while stopped executions settle so capacity is released only after real work ends.
2026-09-07 04:25:49 +08:00
kashorin 293ccd177d refactor(runtime): model shared limits as capacity, not queues 2026-09-04 21:12:22 +08:00
kashorin c5dbb4defc refactor(cli): separate commands from storage details 2026-09-03 13:29:02 +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
kashorin d1e40ef0a7 feat(runtime): make build result storage pluggable 2026-09-03 13:23:52 +08:00
kashorin 0664b5bac0 feat(runtime): add project-owned build results 2026-09-03 13:23:52 +08:00
rpone 54409aa4bb fix(runtime): take back Dispatches abandoned by a stopped Worker
`claim` selects only `queued` and `waiting` Dispatches, and a Dispatch carries no
worker identity or lease, so nothing separates one whose Worker is alive from one
whose Worker is gone. A Worker stopped between claiming a Dispatch and finishing it
therefore left it `running` for good, still holding the lane capacity it reserved —
capacity that is deliberately retained across a `pending` result and released only by
the same Worker observing the operation end.

Every later Build then queued behind a slot nobody held, and `cancel` could not clear
it either, because cancelling runs on a claimed Dispatch. The visible state was a
queue that never moved while `Active Operations` stayed `0`, and restarting the Worker
— the one repair that suggests itself — could not help.

One Worker owns a Runtime, so a `running` Dispatch at startup is abandoned by
construction: release its capacity and return it to `queued`, where it is claimable
and its cancellation can run.

The runtime reference gains the reading that distinguishes this state, and the
project-`package.json` requirement that keeps package discovery inside the project.
2026-08-24 19:56:29 +08:00
kashorin 4a733d8efd refactor: separate projects from on-demand machine runtimes 2026-08-23 22:36:00 +08:00
rpone df23c73d97 refactor: rebrand Narratage as Hypit 2026-08-19 15:51:58 +08:00
kashorin 4256db2fca refactor: simplify runtime state and scheduling 2026-08-17 14:03:54 +08:00
kashorin 68ceaeb47b refactor: remove redundant runtime infrastructure 2026-08-17 14:03:54 +08:00
kashorin 7638d03e81 refactor: remove remaining defensive runtime residue 2026-08-17 14:03:54 +08:00
kashorin adc463908d refactor: remove stale runtime scaffolding 2026-08-17 14:03:54 +08:00
kashorin 9903588b26 fix: admit concurrent builds to compatible workers 2026-08-17 14:03:54 +08:00
kashorin 6db26a983a refactor: make the local runtime one implementation 2026-08-17 14:03:54 +08:00
kashorin 859a053f93 refactor: use installed runtime endpoints directly 2026-08-17 14:03:53 +08:00
kashorin 7683e38c0e refactor: remove defensive execution scaffolding 2026-08-17 14:03:53 +08:00
kashorin e3c61ed530 perf: linearize compilation and runtime lookup 2026-08-17 14:03:52 +08:00
kashorin 3a7c60f8cb refactor: simplify package loading and runtime execution 2026-08-17 14:03:52 +08:00
kashorin fdc17b4194 refactor: separate workspace from runtime hosts 2026-08-15 18:58:06 +08:00
kashorin 8e01877a3e feat: make runtime execution observable 2026-08-15 17:04:33 +08:00
kashorin 6564b3f3dd refactor: separate runtime archive from artifacts 2026-08-14 01:29:14 +08:00
kashorin 75f3e752b7 refactor: simplify extension boundaries and runtime presentation 2026-08-13 23:25:19 +08:00
kashorin a2531a6c53 refactor: keep module identity in manifests 2026-08-13 21:07:55 +08:00
kashorin 52379a1735 refactor: validate records once per data gate 2026-08-13 20:59:31 +08:00
kashorin 849ac2a76f refactor: simplify modular compilation and runtime state 2026-08-13 18:53:05 +08:00
kashorin 0bf63a0efe fix: make project package inventories composable 2026-08-13 12:17:44 +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 4a66600116 feat(runtime): make local execution revision-aware 2026-08-12 04:25:52 +08:00
kashorin 98e0e35a0b refactor(runtime): schedule provider authorities and routes 2026-08-11 17:45:07 +08:00
kashorin ff72abd565 refactor(runtime): finish portable local execution 2026-08-11 13:41:28 +08:00
kashorin 439b1503f7 fix(runtime): harden durable execution control 2026-08-11 01:54:40 +08:00
kashorin c04e0eb08a feat(runtime): add durable local execution control 2026-08-11 01:54:40 +08:00
kashorin 6a00528064 refactor: fold speaker authoring into Seedance kits 2026-08-10 14:46:42 +08:00
kashorin b06b6b9442 test: remove redundant pre-release coverage 2026-08-09 03:26:59 +08:00
kashorin 359d199b13 refactor: remove client branding and freeze pre-release identities 2026-08-09 03:16:57 +08:00
kashorin 999e37bd47 fix: repair the comments my alias deletion orphaned, and name the resolver
Deleting the aliases in 99fccf8 removed the declarations but left their
doc comments, which slid onto whatever followed. Two live functions were
left marked @deprecated — selectedSatisfaction, which the plan compiler
calls, and operationResultRecord, which is unrelated to either word — and
a third comment trailed at the end of plan.ts above nothing. A comment
that lies is worse than the alias it described.

Two more aliases survived that pass because it scanned `export const` and
these are `export type`: NodeComponentPackage and
LocalBuildSchedulerOptions, both marked deprecated, neither with a
consumer outside its own file.

On the words themselves: Candidate and Satisfaction are not two names for
one thing. A Candidate is supply — a way the graph can produce a value. A
Satisfaction is the request's choice of which Candidate answers which
Logical Output, and how faithfully. Both are needed and both are wire
types.

The friction was one function. selectedSatisfaction promised a
Satisfaction and returned the Candidate that a Satisfaction names, which
is presumably why someone once aliased it to selectedCandidate. It is now
satisfiedCandidate, which says what comes back, and a comment states the
distinction so the alias has no reason to reappear.
2026-08-09 01:50:51 +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