screenci 0.0.61 → 0.0.63

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.
Files changed (68) hide show
  1. package/README.md +15 -4
  2. package/bin/screenci.js +2 -2
  3. package/dist/cli.d.ts +29 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +318 -212
  6. package/dist/cli.js.map +1 -1
  7. package/dist/docs/manifest.d.ts +51 -20
  8. package/dist/docs/manifest.d.ts.map +1 -1
  9. package/dist/docs/manifest.js +17 -6
  10. package/dist/docs/manifest.js.map +1 -1
  11. package/dist/e2e/instrument.e2e.js +11 -11
  12. package/dist/e2e/instrument.e2e.js.map +1 -1
  13. package/dist/index.d.ts +6 -4
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/src/asset.d.ts +27 -0
  18. package/dist/src/asset.d.ts.map +1 -1
  19. package/dist/src/asset.js +46 -0
  20. package/dist/src/asset.js.map +1 -1
  21. package/dist/src/changeFocus.d.ts.map +1 -1
  22. package/dist/src/changeFocus.js +3 -3
  23. package/dist/src/changeFocus.js.map +1 -1
  24. package/dist/src/cue.d.ts +60 -13
  25. package/dist/src/cue.d.ts.map +1 -1
  26. package/dist/src/cue.js +153 -47
  27. package/dist/src/cue.js.map +1 -1
  28. package/dist/src/events.d.ts +56 -8
  29. package/dist/src/events.d.ts.map +1 -1
  30. package/dist/src/events.js +47 -1
  31. package/dist/src/events.js.map +1 -1
  32. package/dist/src/git.d.ts +15 -0
  33. package/dist/src/git.d.ts.map +1 -0
  34. package/dist/src/git.js +43 -0
  35. package/dist/src/git.js.map +1 -0
  36. package/dist/src/init.d.ts +12 -3
  37. package/dist/src/init.d.ts.map +1 -1
  38. package/dist/src/init.js +248 -54
  39. package/dist/src/init.js.map +1 -1
  40. package/dist/src/instrument.d.ts.map +1 -1
  41. package/dist/src/instrument.js +49 -125
  42. package/dist/src/instrument.js.map +1 -1
  43. package/dist/src/mouse.d.ts +1 -0
  44. package/dist/src/mouse.d.ts.map +1 -1
  45. package/dist/src/mouse.js +9 -3
  46. package/dist/src/mouse.js.map +1 -1
  47. package/dist/src/recording.d.ts +1 -1
  48. package/dist/src/recording.d.ts.map +1 -1
  49. package/dist/src/recordingData.d.ts +43 -1
  50. package/dist/src/recordingData.d.ts.map +1 -1
  51. package/dist/src/studio.d.ts +36 -0
  52. package/dist/src/studio.d.ts.map +1 -0
  53. package/dist/src/studio.js +39 -0
  54. package/dist/src/studio.js.map +1 -0
  55. package/dist/src/types.d.ts +141 -125
  56. package/dist/src/types.d.ts.map +1 -1
  57. package/dist/src/types.js +1 -0
  58. package/dist/src/types.js.map +1 -1
  59. package/dist/src/video.d.ts +2 -1
  60. package/dist/src/video.d.ts.map +1 -1
  61. package/dist/src/video.js.map +1 -1
  62. package/dist/src/voices.d.ts +3 -3
  63. package/dist/src/voices.d.ts.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +1 -1
  66. package/skills/screenci/SKILL.md +4 -7
  67. package/skills/screenci/references/init.md +1 -2
  68. package/skills/screenci/references/record.md +2 -9
package/README.md CHANGED
@@ -89,13 +89,15 @@ Playwright without starting the final recording and upload path.
89
89
  ## Record the final output
90
90
 
91
91
  ```bash
92
- npx screenci login
93
92
  npx screenci record
94
93
  ```
95
94
 
96
- `login` saves `SCREENCI_SECRET` into the project env file. `record` writes local
97
- artifacts into `.screenci/<video-name>/` and uploads them when that secret is
98
- configured.
95
+ On the first run without `SCREENCI_SECRET`, `record` prints a one-time ScreenCI
96
+ link, waits for you to finish sign-in in the browser, saves the secret into the
97
+ project env file, and then continues. Pending auth state is cached in
98
+ `.screenci/link-session.json`, so rerunning `record` reuses the same link until
99
+ it expires or completes. Recorded artifacts still live in
100
+ `.screenci/<video-name>/`.
99
101
 
100
102
  ## Configure
101
103
 
@@ -123,6 +125,11 @@ export default defineConfig({
123
125
  ScreenCI manages `testDir`, `testMatch`, and `retries` for you. Most other
124
126
  Playwright config still passes through.
125
127
 
128
+ If you keep local runtime secrets in an env file, point `envFile` at it or use
129
+ the project `.env`. ScreenCI loads that file automatically for CLI commands.
130
+ That is also the right place for BYOK-style secrets such as
131
+ `ELEVENLABS_API_KEY`. ScreenCI does not store raw API keys from your env file.
132
+
126
133
  ## Authoring helpers
127
134
 
128
135
  | Export | What it does |
@@ -149,3 +156,7 @@ Playwright config still passes through.
149
156
 
150
157
  When `SCREENCI_SECRET` is configured, `screenci record` uploads the output to
151
158
  ScreenCI for rendering, narration generation, and hosted delivery.
159
+
160
+ For narration authoring, keep cues short and usually one sentence at a time.
161
+ That makes overlap timing easier to manage and should reduce TTS regeneration
162
+ cost when only one line changes.
package/bin/screenci.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { main } from '../dist/cli.js'
3
+ import { logCliError, main } from '../dist/cli.js'
4
4
 
5
5
  main().catch((error) => {
6
- console.error('Error:', error.message)
6
+ logCliError(error)
7
7
  process.exit(1)
8
8
  })
package/dist/cli.d.ts CHANGED
@@ -17,7 +17,32 @@ type PreparedUploadAsset = {
17
17
  fileBuffer?: Buffer;
18
18
  contentType?: string;
19
19
  };
20
+ export type StudioAppliedChange = {
21
+ kind?: string;
22
+ label?: string;
23
+ cue?: string;
24
+ language?: string;
25
+ from?: string;
26
+ to?: string;
27
+ };
28
+ export type UploadStudioInfo = {
29
+ held: true;
30
+ } | {
31
+ appliedChanges: StudioAppliedChange[];
32
+ };
33
+ export type StudioUploadNotice = {
34
+ videoName: string;
35
+ videoId: string | null;
36
+ studio: UploadStudioInfo;
37
+ };
38
+ /**
39
+ * One-line summary of Studio overrides for CLI output, e.g.
40
+ * `recording.size (1 → 0.8), narration "intro" (en)`.
41
+ */
42
+ export declare function formatStudioChangeSummary(changes: StudioAppliedChange[]): string;
43
+ export declare function formatStudioUrl(appUrl: string, projectId: string, videoId: string): string;
20
44
  export declare function attachUploadAbortStdinListener(input: Pick<NodeJS.ReadStream, 'on' | 'off' | 'pause'>, onAbort: (signal: NodeJS.Signals) => void): () => void;
45
+ export declare function collectUploadAssets(data: RecordingData, configDir: string): Promise<PreparedUploadAsset[]>;
21
46
  export declare function stripVoicePath(voice: VoiceKey | RecordingCustomVoiceRef): VoiceKey | RecordingCustomVoiceRef;
22
47
  export declare function annotateRecordingDataWithAssetHashes(data: RecordingData, assets: PreparedUploadAsset[]): RecordingData;
23
48
  export declare function formatUploadStartFailureMessage(videoName: string, status: number, responseText: string, secret: string): string;
@@ -25,20 +50,24 @@ export declare function formatFailedVideoMessage(videoName: string, message: str
25
50
  export declare function printUploadStartFailureMessage(videoName: string, status: number, responseText: string, secret: string): void;
26
51
  export declare function uploadRecordings(screenciDir: string, projectName: string, apiUrl: string, secret: string, specificEntry?: string, verbose?: boolean): Promise<{
27
52
  projectId: string | null;
53
+ recordId: string | null;
28
54
  hadFailures: boolean;
29
55
  failedVideoNames: string[];
30
56
  failedVideoMessages: Array<{
31
57
  videoName: string;
32
58
  message: string;
33
59
  }>;
60
+ studioNotices: StudioUploadNotice[];
34
61
  }>;
35
62
  export declare function getDevBackendUrl(): string;
36
63
  export declare function getDevFrontendUrl(): string;
64
+ export declare function getCliLinkSessionApiUrl(): string;
37
65
  export declare function extractConfigStringLiteral(configSource: string, property: 'projectName' | 'envFile'): string | undefined;
38
66
  export declare function extractRecordUploadPolicyLiteral(configSource: string): RecordUploadPolicy | undefined;
39
67
  export declare function extractMockRecordLiteral(configSource: string): boolean | undefined;
40
68
  export declare function getConfigModuleSpecifier(resolvedConfigPath: string): string;
41
69
  export declare function ensureScreenciSecret(resolvedConfigPath?: string): Promise<string | undefined>;
42
70
  export declare function main(): Promise<void>;
71
+ export declare function logCliError(error: unknown): void;
43
72
  export {};
44
73
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}