Skip to content

Make CLI downloads match the Assembly's results #593

Closed

Description

@kvz

Why

Writing blog posts around one-command CLI examples (2025 ship-audit sweep) hit these output problems in @transloadit/node@6.1.2. Each makes a documented example fail or produce unusable files. File extensions are tracked separately in #587.

  • HLS output doesn't play after download: results are written flat, so master.m3u8 points at 640x360_…/640x360_….m3u8 that isn't there. Repro: /video/encode hls/360p → /video/adaptive technique: hls, bundle_steps: true, -o out/. Keep the result paths.
  • -o dir/ without -i (import-only or prompt-only Assemblies, e.g. /vimeo/import, /image/generate) fails with "You must provide an input to output to a directory" plus a stack trace.
  • -i <URL> fails with ENOENT … stat 'https://…' although --help says URLs are accepted.
  • Non-TTY stdin without -i (agent shells, CI) crashes with an unhandled ENXIO on /dev/stdin.
  • Bundled outputs are named after the last input (a bundled /image/generate result landed as logo.png).
  • Input folders leak into the output tree (deferred to Offer an opt-in CLI layout without input parent folders #621 to preserve compatibility): -i ../inputs/x.jpg -o out/ writes out/inputs/x/<step>/…; <dir>/in/file lands in out/in/file.

Verified on current main: #595 fixed directory downloads without uploads and the non-TTY stdin crash. Live CLI imports succeeded with /dev/null and socket-backed fd 0; the existing stdin command regression tests pass.

Implementation is in #611, rebased onto main after #610 and #612 merged. Kevin’s 2026-10-23 decision keeps existing working directory layouts and time-based skipping, and ships the fixes as a minor release. HLS paths, result names/extensions (#587), URL inputs, and stdin are covered. Removing input parent folders is deferred to #621 as an opt-in layout. Local checks, two live freshness tests, and the live JPEG extension check pass. Final CI passes all 14 checks on 1d5bb2aa; the single blocking watch exited 0. Local checks pass with 1,119 Node tests and 60 download-layout cases.

The two authorized scoped rework review rounds are complete (DSP-473, option B, 2026-10-23), with all four retained findings fixed using red-then-green behavior tests. These preserve intent input folders, omit transient staging paths, retain watch updates, and restore stable mapped-output freshness after input changes. No further round was run. Broader follow-ups are #615, #619, and #621. Unmerged implementation items stay unchecked until #611 merges.

🤖 Claimed by kvz on studio1/node-sdk since 2026-10-23 · resume: codex resume 01a16a73-d73f-7e11-83fe-db48d62fa526

Activity

  1. self-assigned this
    on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions