Skip to content

vos pull --check and --since reach the take path; a directory is a take or a program by its document - #132

Merged
hblee12294 merged 1 commit into
mainfrom
fix/pull-check-render-sniff
Sep 3, 2026
Merged

vos pull --check and --since reach the take path; a directory is a take or a program by its document#132
hblee12294 merged 1 commit into
mainfrom
fix/pull-check-render-sniff

Conversation

@hblee12294

Copy link
Copy Markdown
Member

The two gaps left open by #130, closed.

vos pull <take> --check and --since

The plugin help listed both, but the take path parsed neither: --check demanded a value and --since was ignored. pullTake now takes both. --since <versionId> walks the changelog from the base you name instead of the tracked one; --check prints the changelog and returns the report (versions behind, the changes, the protected nodes) without writing doc.json, pulling media or repointing vos.json. A take linked with --vos and no base still reports the head and says what --since is for. The done line reads N versions behind — run without --check to sync, or up to date.

A directory is a take or a program by its document

Every engine verb sniffed a take by the presence of doc.json, so a program directory carrying a program document (doc.json without source, config.json as its config) was routed to the take renderer and died on a missing meta.json. One sniff now lives in loadConfig.ts (directoryKind): a doc.json carrying source is a take, a config.json is a program directory. render, still, info and check all accept a program directory, composed with the program document beside it through lowerProgramDoc with the tween overlay baked, so the render is what the studio and vos.so play. A take handed to still, info or check is refused in words that name the take pipeline; a directory holding neither is refused in words instead of a bare EISDIR. The plugin's isTakeDir reads the same sniff, so push, pull and validate agree with render.

Note: vos check on a composed program directory reports the studio entry's own determinism warnings (its onFrame names timers and network for fonts and media). They are warnings, not errors, and they describe the entry the platform ships, not the user's program.

Tests

  • loadConfig.test.ts: directoryKind over take, program, program + document, an unparsable doc.json, an empty directory, a file, a missing path; loading a program directory, composing one with its document (the vosso.studio stack entry carries the overlay), refusing a take and an empty directory in words.
  • pullTake.test.ts: against a local HTTP server, --check reports one version behind and leaves doc.json and vos.json untouched; --since walks from the named base; --since naming the head is up to date without a changelog call; --check with no base reports the head and no count; a plain pull still syncs and repoints.

Smoked the built binary: vos render <program dir with doc> produced a webm with the overlay, vos info reports the composition, and check/still/info on a take or an empty directory answer in words.

pnpm build, typecheck, lint, test (202), check green.

…ke or a program by its document

Two gaps between the help text and the binary.

`vos pull <take> --check` and `--since <versionId>` were listed in the
plugin help but the take path parsed neither: --check demanded a value and
--since was ignored. pullTake now walks the changelog from the tracked base
or the one named, and under --check returns the report (versions behind,
the changes, the protected nodes) without writing doc.json, pulling media
or repointing vos.json. A take linked with --vos and no base still reports
the head and says what --since is for.

Every engine verb sniffed a take by the presence of doc.json, so a program
directory that carried a program document (doc.json without `source`,
config.json as its config) was routed to the take renderer and died on a
missing meta.json. One sniff now lives in loadConfig (`directoryKind`):
a take is a doc.json carrying `source`, a program directory is a
config.json. render, still, info and check all take a program directory,
composed with the program document beside it through lowerProgramDoc with
the tween overlay baked, so the render is what the studio and vos.so play.
A take handed to still, info or check is refused in words that name the
take pipeline; a directory holding neither is refused instead of reading
as EISDIR. The plugin's isTakeDir reads the same sniff.

Tests: directoryKind and the directory loads (program, program + document,
take, empty); pullTake --check/--since against a local server (report
without writes, the named base, head-as-base, no-base, and the plain sync).
@hblee12294
hblee12294 merged commit 4dbb8ed into main Sep 3, 2026
3 checks passed
@hblee12294
hblee12294 deleted the fix/pull-check-render-sniff branch September 3, 2026 18:22
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