@feralfile/cli 2.10.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feralfile/cli",
3
- "version": "2.10.0",
3
+ "version": "2.10.1",
4
4
  "description": "CLI for building, signing, and playing DP-1 playlists of digital art on Feral File devices",
5
5
  "repository": {
6
6
  "type": "git",
@@ -65,7 +65,7 @@
65
65
  "chalk": "^4.1.2",
66
66
  "commander": "^11.1.0",
67
67
  "dotenv": "^16.3.1",
68
- "dp1-js": "2.3.1",
68
+ "dp1-js": "2.4.1",
69
69
  "ff1": "^1.0.0",
70
70
  "fuzzysort": "^3.1.0",
71
71
  "viem": "^2.56.3"
@@ -41,10 +41,11 @@ exports.findCommand = new commander_1.Command('find')
41
41
  .option('-o, --output <path>', 'Save the playlist to this file (default: ./<slug>.json)')
42
42
  .option('-l, --limit <n>', 'Max tokens to include from the series (default: all)')
43
43
  .option('-p, --play', 'Play the playlist on an FF1 device after building')
44
+ .option('--no-play', 'Never cast to a device; combine with -y to build and save without playing')
44
45
  .option('-d, --device <name>', 'Device to play on (used with --play; default: first configured)')
45
46
  .option('--publish', 'Publish the playlist to a configured feed server')
46
47
  .option('-s, --server <index>', 'Feed server index (used with --publish)')
47
- .option('-y, --yes', 'Skip interactive prompts; defaults to Play unless --output or --publish is set')
48
+ .option('-y, --yes', 'Skip interactive prompts. Without --output or --publish, -y plays the playlist on a device; add --no-play to skip casting')
48
49
  .option('--skip-verify', 'Skip signature verification before --play (mirrors `ff-cli play --skip-verify`)')
49
50
  .action(async (input, options) => {
50
51
  try {
@@ -478,9 +479,16 @@ async function confirmMakePlaylist(count, hasMore) {
478
479
  * Precedence: explicit flags (--play / --publish) win and may combine. If no
479
480
  * flag is set, fall back to --yes default (Play) or an interactive 3-way
480
481
  * prompt. Save is unconditional and already done before this is called.
482
+ *
483
+ * `--no-play` (commander sets `play === false`) is an opt-out that removes
484
+ * casting from every path, including the `--yes` default and the interactive
485
+ * prompt. It is additive: `--yes` alone keeps its deliberate "max-satisfaction
486
+ * default for scripted use" of Play, and this must not change that. Because
487
+ * `--no-play` already states the user's intent, it never opens the prompt.
481
488
  */
482
489
  async function decideActions(options) {
483
490
  const flagActions = [];
491
+ const noPlay = options.play === false;
484
492
  if (options.play) {
485
493
  flagActions.push('play');
486
494
  }
@@ -491,7 +499,8 @@ async function decideActions(options) {
491
499
  return flagActions;
492
500
  }
493
501
  // --output alone (with or without --yes) means "save mode" — the save was the action.
494
- if (options.output) {
502
+ // --no-play likewise means the save was the action; never prompt or default to Play.
503
+ if (options.output || noPlay) {
495
504
  return [];
496
505
  }
497
506
  // --yes without --output defaults to Play (max-satisfaction default for scripted use).
package/docs/EXAMPLES.md CHANGED
@@ -64,6 +64,9 @@ npm run dev -- find https://objkt.com/tokens/hicetnunc/111068 --publish
64
64
 
65
65
  # Build, play on a named device, and skip interactive prompts
66
66
  npm run dev -- find https://objkt.com/tokens/hicetnunc/111068 --play -d "Living Room Display" -y
67
+
68
+ # -y alone also plays (the scripted default); add --no-play to build and save without casting
69
+ npm run dev -- find https://objkt.com/tokens/hicetnunc/111068 -y --no-play
67
70
  ```
68
71
 
69
72
  OpenSea and Verse accept both item and collection/series URLs:
package/docs/README.md CHANGED
@@ -122,7 +122,7 @@ Both paths run the same deterministic pipeline: fetch metadata, assemble a DP-1
122
122
  - Sources: Art Blocks, Objkt, fxhash, OpenSea, SuperRare, Feral File, Neort, Verse, raw on-chain coordinates, and wallet addresses
123
123
  - OpenSea forms: `/assets/ethereum/{contract}/{tokenId}`, `/item/ethereum/{contract}/{tokenId}`, and `/collection/{slug}` (Ethereum collections; the slug is resolved from the public collection page, no API key needed)
124
124
  - Verse forms: `/items/ethereum/{contract}/{tokenId}` and `/series/{slug}`
125
- - Options: `-o, --output <path>`, `-l, --limit <n>`, `-p, --play`, `-d, --device <name>`, `--publish`, `-s, --server <index>`, `-y, --yes`, `--skip-verify`
125
+ - Options: `-o, --output <path>`, `-l, --limit <n>`, `-p, --play`, `--no-play` (never cast; combine with `-y` to build and save without playing), `-d, --device <name>`, `--publish`, `-s, --server <index>`, `-y, --yes` (skip prompts; without `-o` or `--publish` it plays the playlist on a device, so add `--no-play` to skip casting), `--skip-verify`
126
126
  - `enrich <file>` – Add missing artist, title, and thumbnail metadata to a playlist that already exists. Resolves each item by its `provenance.contract` and writes an inline Ref Manifest; `source`, `duration`, `title`, and `id` are never touched. Drops the signature when it changes anything, so re-sign afterwards
127
127
  - DP-1 `evm` names a chain family rather than a network, so those items are skipped unless `--assume-ethereum` asserts which one they are. Getting that wrong attaches another artwork's metadata
128
128
  - Options: `-o, --output <file>`, `--force` (replace existing manifests), `--assume-ethereum`, `-v, --verbose`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feralfile/cli",
3
- "version": "2.10.0",
3
+ "version": "2.10.1",
4
4
  "description": "CLI for building, signing, and playing DP-1 playlists of digital art on Feral File devices",
5
5
  "repository": {
6
6
  "type": "git",
@@ -65,7 +65,7 @@
65
65
  "chalk": "^4.1.2",
66
66
  "commander": "^11.1.0",
67
67
  "dotenv": "^16.3.1",
68
- "dp1-js": "2.3.1",
68
+ "dp1-js": "2.4.1",
69
69
  "ff1": "^1.0.0",
70
70
  "fuzzysort": "^3.1.0",
71
71
  "viem": "^2.56.3"