@hypersocial/decks-cli 0.1.10 → 0.1.12
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/README.md +14 -9
- package/package.json +1 -1
- package/skills/hyperdecks/SKILL.md +14 -3
- package/src/runtime.mjs +1 -1
package/README.md
CHANGED
|
@@ -127,15 +127,9 @@ cannot be unmuted. Statistics distinguish narration started, narration finished,
|
|
|
127
127
|
narration not started, and unknown legacy playback. Closing a deck does not
|
|
128
128
|
establish completion. See the main repository README for the runtime event contract.
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
this source change prepares packages and does not publish them.
|
|
130
|
+
## Animated email previews (0.1.10+)
|
|
132
131
|
|
|
133
|
-
|
|
134
|
-
creation; publishing 0.1.10 is not required for those flows.
|
|
135
|
-
|
|
136
|
-
## Animated email previews (prepared 0.1.10; publication pending)
|
|
137
|
-
|
|
138
|
-
This command is implemented in the prepared CLI source. npm publication, deployment of the owner-only `previews:get` Convex query, and upgrading a global CLI are coordinated release steps still pending. Local-file export needs no login or backend deployment. Both `hyperdecks` and `decks` accept the same command; the canonical package is `@hypersocial/decks-cli`.
|
|
132
|
+
Published in 0.1.10; the owner-only `previews:get` query is live in production. Local-file export needs no login. Both `hyperdecks` and `decks` accept the same command; the canonical package is `@hypersocial/decks-cli`.
|
|
139
133
|
|
|
140
134
|
```sh
|
|
141
135
|
hyperdecks preview setup
|
|
@@ -148,7 +142,18 @@ Generate locally, select an existing same-deck recipient share, then explicitly
|
|
|
148
142
|
|
|
149
143
|
Capture defaults to the initial slide, 4 seconds, 600px width and 10 fps, with a play/watch badge on GIF, PNG and silent MP4. `--duration` accepts 1–10 seconds, `--width` 240–1200 pixels (odd widths round up for MP4), `--delay` 0–10000 milliseconds (default 1000), and `--label "Watch · 2:41"` supplies an explicit label; no whole-deck narration duration is inferred. Aspect comes from `--aspect-ratio W:H`, `<meta name="preview-aspect-ratio" content="16:9">`, or the first slide/canvas bounds; otherwise 16:9. Output height rounds to an even pixel. Fonts get up to 5 seconds to settle. Inspect readiness warnings/poster for slow modules or media and increase the bounded delay if needed.
|
|
150
144
|
|
|
151
|
-
`--json` prints one
|
|
145
|
+
`--json` prints one line on stdout, identical to `<out>/manifest.json`:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{ "status": "exported | uploaded | failed", "shareUrl": "https://decks.hypersocial.ai/v/<token>",
|
|
149
|
+
"files": [{ "type": "gif | png | mp4", "path": "...", "url": "https://...convex.cloud/api/storage/...", "bytes": 74662, "width": 600, "height": 338 }],
|
|
150
|
+
"email": { "sendable": true, "path": "<out>/email.html", "html": "<a href=\"<shareUrl>\"><img src=\"<gif url>\" ...></a>" },
|
|
151
|
+
"warnings": [] }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
`email.html` is the embed: drop it into any HTML email body or API send. `url` and `email` exist only after `--upload`.
|
|
155
|
+
|
|
156
|
+
Errors/progress use stderr and failures exit nonzero. `manifest.json` records source, status, absolute artifact paths, MIME types, bytes, dimensions, clip durations/fps, share URL, warnings and each completed upload. Files larger than 5 MiB warn: reduce duration/width for email. On upload failure local artifacts survive; inspect the manifest's URLs and `upload` records (an uploaded storage blob can exist even if saving its asset failed). Retry in a fresh directory; never overwrite an image already used in an email.
|
|
152
157
|
|
|
153
158
|
Only successful explicit uploads produce `email.html` and `email.sendable: true`, with the GIF wrapped in the exact recipient link. Use that HTML/GIF in your draft manually. Some email clients show only the first GIF frame: the PNG poster and the visible watch badge provide a static fallback. MP4 is for other channels; email video support varies. Local exports provide files to insert manually and a separate share URL when selected, with no claim of sendable remote-image HTML. Static image downloads do not open the deck, start narration, record engagement, or notify the owner.
|
|
154
159
|
|
package/package.json
CHANGED
|
@@ -54,9 +54,9 @@ hyperdecks login
|
|
|
54
54
|
intent is ambiguous.
|
|
55
55
|
- Avoid printing full share tokens unless the user needs the exact URL/token.
|
|
56
56
|
|
|
57
|
-
## Animated email previews (
|
|
57
|
+
## Animated email previews (0.1.10+)
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Published in 0.1.10; the owner-only `previews:get` query is live in production. Local-file export needs no login. Both `hyperdecks` and `decks` accept the same command; the canonical package is `@hypersocial/decks-cli`.
|
|
60
60
|
|
|
61
61
|
```sh
|
|
62
62
|
hyperdecks preview setup
|
|
@@ -69,7 +69,18 @@ Generate locally, select an existing same-deck recipient share, then explicitly
|
|
|
69
69
|
|
|
70
70
|
Capture defaults to the initial slide, 4 seconds, 600px width and 10 fps, with a play/watch badge on GIF, PNG and silent MP4. `--duration` accepts 1–10 seconds, `--width` 240–1200 pixels (odd widths round up for MP4), `--delay` 0–10000 milliseconds (default 1000), and `--label "Watch · 2:41"` supplies an explicit label; no whole-deck narration duration is inferred. Aspect comes from `--aspect-ratio W:H`, `<meta name="preview-aspect-ratio" content="16:9">`, or the first slide/canvas bounds; otherwise 16:9. Output height rounds to an even pixel. Fonts get up to 5 seconds to settle. Inspect readiness warnings/poster for slow modules or media and increase the bounded delay if needed.
|
|
71
71
|
|
|
72
|
-
`--json` prints one
|
|
72
|
+
`--json` prints one line on stdout, identical to `<out>/manifest.json`:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{ "status": "exported | uploaded | failed", "shareUrl": "https://decks.hypersocial.ai/v/<token>",
|
|
76
|
+
"files": [{ "type": "gif | png | mp4", "path": "...", "url": "https://...convex.cloud/api/storage/...", "bytes": 74662, "width": 600, "height": 338 }],
|
|
77
|
+
"email": { "sendable": true, "path": "<out>/email.html", "html": "<a href=\"<shareUrl>\"><img src=\"<gif url>\" ...></a>" },
|
|
78
|
+
"warnings": [] }
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`email.html` is the embed: drop it into any HTML email body or API send. `url` and `email` exist only after `--upload`.
|
|
82
|
+
|
|
83
|
+
Errors/progress use stderr and failures exit nonzero. `manifest.json` records source, status, absolute artifact paths, MIME types, bytes, dimensions, clip durations/fps, share URL, warnings and each completed upload. Files larger than 5 MiB warn: reduce duration/width for email. On upload failure local artifacts survive; inspect the manifest's URLs and `upload` records (an uploaded storage blob can exist even if saving its asset failed). Retry in a fresh directory; never overwrite an image already used in an email.
|
|
73
84
|
|
|
74
85
|
Only successful explicit uploads produce `email.html` and `email.sendable: true`, with the GIF wrapped in the exact recipient link. Use that HTML/GIF in your draft manually. Some email clients show only the first GIF frame: the PNG poster and the visible watch badge provide a static fallback. MP4 is for other channels; email video support varies. Local exports provide files to insert manually and a separate share URL when selected, with no claim of sendable remote-image HTML. Static image downloads do not open the deck, start narration, record engagement, or notify the owner.
|
|
75
86
|
|
package/src/runtime.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { fileURLToPath } from "node:url";
|
|
|
8
8
|
import { ConvexHttpClient } from "convex/browser";
|
|
9
9
|
import { makeFunctionReference } from "convex/server";
|
|
10
10
|
|
|
11
|
-
export const VERSION = "0.1.
|
|
11
|
+
export const VERSION = "0.1.12";
|
|
12
12
|
const UPLOAD_TIMEOUT_MS = 125_000;
|
|
13
13
|
|
|
14
14
|
export const PROD = {
|