@ytspar/sweetlink 1.20.0 → 1.22.0

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 (89) hide show
  1. package/dist/browser/consoleCapture.js +1 -1
  2. package/dist/browser/consoleCapture.js.map +1 -1
  3. package/dist/browser/earlyConsoleCapture.d.ts +1 -1
  4. package/dist/browser/earlyConsoleCapture.d.ts.map +1 -1
  5. package/dist/cli/sweetlink.js +154 -68
  6. package/dist/cli/sweetlink.js.map +1 -1
  7. package/dist/daemon/demo.d.ts.map +1 -1
  8. package/dist/daemon/demo.js +3 -19
  9. package/dist/daemon/demo.js.map +1 -1
  10. package/dist/daemon/evidence.js +1 -1
  11. package/dist/daemon/evidence.js.map +1 -1
  12. package/dist/daemon/listeners.js +1 -1
  13. package/dist/daemon/listeners.js.map +1 -1
  14. package/dist/daemon/recording.d.ts +1 -1
  15. package/dist/daemon/recording.d.ts.map +1 -1
  16. package/dist/daemon/recording.js +5 -23
  17. package/dist/daemon/recording.js.map +1 -1
  18. package/dist/daemon/refs.js +1 -1
  19. package/dist/daemon/refs.js.map +1 -1
  20. package/dist/daemon/ringBuffer.d.ts +8 -0
  21. package/dist/daemon/ringBuffer.d.ts.map +1 -1
  22. package/dist/daemon/ringBuffer.js +17 -0
  23. package/dist/daemon/ringBuffer.js.map +1 -1
  24. package/dist/daemon/server.d.ts.map +1 -1
  25. package/dist/daemon/server.js +84 -23
  26. package/dist/daemon/server.js.map +1 -1
  27. package/dist/daemon/session.d.ts +8 -1
  28. package/dist/daemon/session.d.ts.map +1 -1
  29. package/dist/daemon/stateFile.js +2 -2
  30. package/dist/daemon/stateFile.js.map +1 -1
  31. package/dist/daemon/summary.js +2 -2
  32. package/dist/daemon/summary.js.map +1 -1
  33. package/dist/daemon/types.d.ts +7 -2
  34. package/dist/daemon/types.d.ts.map +1 -1
  35. package/dist/daemon/types.js.map +1 -1
  36. package/dist/daemon/utils.d.ts +22 -0
  37. package/dist/daemon/utils.d.ts.map +1 -0
  38. package/dist/daemon/utils.js +44 -0
  39. package/dist/daemon/utils.js.map +1 -0
  40. package/dist/daemon/viewer.d.ts.map +1 -1
  41. package/dist/daemon/viewer.js +5 -11
  42. package/dist/daemon/viewer.js.map +1 -1
  43. package/dist/daemon/visualDiff.d.ts +9 -0
  44. package/dist/daemon/visualDiff.d.ts.map +1 -1
  45. package/dist/daemon/visualDiff.js +13 -2
  46. package/dist/daemon/visualDiff.js.map +1 -1
  47. package/dist/next.js +3 -3
  48. package/dist/next.js.map +1 -1
  49. package/dist/runs.d.ts +15 -3
  50. package/dist/runs.d.ts.map +1 -1
  51. package/dist/runs.js +29 -13
  52. package/dist/runs.js.map +1 -1
  53. package/dist/server/index.d.ts +1 -1
  54. package/dist/server/index.d.ts.map +1 -1
  55. package/dist/simulator/android.d.ts +19 -0
  56. package/dist/simulator/android.d.ts.map +1 -1
  57. package/dist/simulator/android.js +141 -2
  58. package/dist/simulator/android.js.map +1 -1
  59. package/dist/simulator/androidTaps.d.ts +109 -0
  60. package/dist/simulator/androidTaps.d.ts.map +1 -0
  61. package/dist/simulator/androidTaps.js +208 -0
  62. package/dist/simulator/androidTaps.js.map +1 -0
  63. package/dist/simulator/ios.d.ts +7 -0
  64. package/dist/simulator/ios.d.ts.map +1 -1
  65. package/dist/simulator/ios.js +70 -25
  66. package/dist/simulator/ios.js.map +1 -1
  67. package/dist/simulator/overlay.d.ts +41 -0
  68. package/dist/simulator/overlay.d.ts.map +1 -0
  69. package/dist/simulator/overlay.js +78 -0
  70. package/dist/simulator/overlay.js.map +1 -0
  71. package/dist/term/cast.d.ts +24 -0
  72. package/dist/term/cast.d.ts.map +1 -0
  73. package/dist/term/cast.js +24 -0
  74. package/dist/term/cast.js.map +1 -0
  75. package/dist/term/player.d.ts.map +1 -1
  76. package/dist/term/player.js +37 -15
  77. package/dist/term/player.js.map +1 -1
  78. package/dist/term/recorder.d.ts +7 -0
  79. package/dist/term/recorder.d.ts.map +1 -1
  80. package/dist/term/recorder.js +36 -2
  81. package/dist/term/recorder.js.map +1 -1
  82. package/dist/types.d.ts +2 -1
  83. package/dist/types.d.ts.map +1 -1
  84. package/dist/types.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/term/ansi.d.ts +0 -37
  87. package/dist/term/ansi.d.ts.map +0 -1
  88. package/dist/term/ansi.js +0 -205
  89. package/dist/term/ansi.js.map +0 -1
@@ -298,7 +298,7 @@ export class ConsoleCapture {
298
298
  if (event instanceof ErrorEvent)
299
299
  return;
300
300
  const target = event.target;
301
- if (!target || !target.tagName)
301
+ if (!target?.tagName)
302
302
  return;
303
303
  // Skip devbar's own resources to avoid feedback loops
304
304
  const url = target.src || target.href || '';
@@ -1 +1 @@
1
- {"version":3,"file":"consoleCapture.js","sourceRoot":"","sources":["../../src/browser/consoleCapture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consoleCapture.js","sourceRoot":"","sources":["../../src/browser/consoleCapture.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export declare const EARLY_CONSOLE_CAPTURE_SCRIPT = "\n(function() {\n if (wind
21
21
  declare global {
22
22
  interface Window {
23
23
  __sweetlinkEarlyLogs?: Array<{
24
- level: string;
24
+ level: 'log' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
25
25
  message: string;
26
26
  timestamp: string;
27
27
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"earlyConsoleCapture.d.ts","sourceRoot":"","sources":["../../src/browser/earlyConsoleCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4BAA4B,21DAsDxC,CAAC;AAEF;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,CAAC,EAAE,KAAK,CAAC;YAC3B,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ;CACF"}
1
+ {"version":3,"file":"earlyConsoleCapture.d.ts","sourceRoot":"","sources":["../../src/browser/earlyConsoleCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4BAA4B,21DAsDxC,CAAC;AAEF;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,CAAC,EAAE,KAAK,CAAC;YAC3B,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;YAC7D,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ;CACF"}
@@ -5,6 +5,7 @@
5
5
  * Command-line interface for interacting with the Sweetlink WebSocket server.
6
6
  * Allows taking screenshots, querying DOM, getting console logs, and executing JavaScript.
7
7
  */
8
+ import * as childProcess from 'child_process';
8
9
  import * as fs from 'fs';
9
10
  import * as path from 'path';
10
11
  import { WebSocket } from 'ws';
@@ -90,6 +91,75 @@ function ensureDir(filePath) {
90
91
  fs.mkdirSync(dir, { recursive: true });
91
92
  }
92
93
  }
94
+ /**
95
+ * Find the most recent recording-session directory.
96
+ * Returns the absolute path or null if no sessions exist.
97
+ */
98
+ function findLatestSessionDir(baseDir) {
99
+ if (!fs.existsSync(baseDir))
100
+ return null;
101
+ const sessions = fs
102
+ .readdirSync(baseDir)
103
+ .filter((f) => f.startsWith('session-'))
104
+ .sort()
105
+ .reverse();
106
+ if (sessions.length === 0)
107
+ return null;
108
+ return path.join(baseDir, sessions[0]);
109
+ }
110
+ /**
111
+ * Open a file in the default GUI handler. Cross-platform helper used by
112
+ * `record stop` (auto-open viewer) and `sessions open` (browse index).
113
+ * Failure is best-effort — the path is already on disk, the user can open
114
+ * it manually if no GUI is available.
115
+ */
116
+ function openInBrowser(filePath) {
117
+ let cmd;
118
+ let args;
119
+ switch (process.platform) {
120
+ case 'darwin':
121
+ cmd = 'open';
122
+ args = [filePath];
123
+ break;
124
+ case 'win32':
125
+ cmd = 'cmd';
126
+ args = ['/c', 'start', '', filePath];
127
+ break;
128
+ default:
129
+ cmd = 'xdg-open';
130
+ args = [filePath];
131
+ break;
132
+ }
133
+ try {
134
+ childProcess.spawn(cmd, args, { detached: true, stdio: 'ignore' }).unref();
135
+ }
136
+ catch {
137
+ /* best effort — user can open manually */
138
+ }
139
+ }
140
+ /**
141
+ * Reject --output paths that escape the project root.
142
+ *
143
+ * Any path is fine when it resolves inside the project (relative or absolute);
144
+ * paths that resolve outside (e.g. `--output ../../../etc/passwd`,
145
+ * `--output /Users/victim/.zshrc`, or batch JSON `output: "/etc/cron.d/x"`)
146
+ * are blocked unless `SWEETLINK_ALLOW_OUTSIDE_OUTPUT=1` is set. Without this
147
+ * gate the batch JSON-stdin mode lets a less-trusted upstream agent write
148
+ * arbitrary content to arbitrary paths the user can write.
149
+ */
150
+ function assertOutputInRoot(outputPath) {
151
+ const projectRoot = path.resolve(findProjectRoot());
152
+ const resolved = path.resolve(outputPath);
153
+ if (process.env.SWEETLINK_ALLOW_OUTSIDE_OUTPUT === '1')
154
+ return resolved;
155
+ if (resolved !== projectRoot && !resolved.startsWith(`${projectRoot}${path.sep}`)) {
156
+ throw new Error(`Refusing to write outside project root.\n` +
157
+ ` output: ${resolved}\n` +
158
+ ` project: ${projectRoot}\n` +
159
+ `Pass a path inside the project, or set SWEETLINK_ALLOW_OUTSIDE_OUTPUT=1 to override.`);
160
+ }
161
+ return resolved;
162
+ }
93
163
  /**
94
164
  * Get the default screenshot output path (relative to project root)
95
165
  */
@@ -1518,26 +1588,33 @@ async function getVitals(options) {
1518
1588
  console.log(`\n[Sweetlink] Web Vitals`);
1519
1589
  console.log(` URL: ${vitalsData.url}`);
1520
1590
  console.log(` ${summary}`);
1521
- // Detailed breakdown
1591
+ // Detailed breakdown — pick a green/yellow/red color per Web Vitals threshold
1592
+ const ANSI_GREEN = '\x1b[32m';
1593
+ const ANSI_YELLOW = '\x1b[33m';
1594
+ const ANSI_RED = '\x1b[31m';
1595
+ const ANSI_RESET = '\x1b[0m';
1596
+ const thresholdColor = (value, good, ok) => {
1597
+ if (value <= good)
1598
+ return ANSI_GREEN;
1599
+ if (value <= ok)
1600
+ return ANSI_YELLOW;
1601
+ return ANSI_RED;
1602
+ };
1522
1603
  if (vitalsData.fcp !== null) {
1523
1604
  const fcp = vitalsData.fcp;
1524
- const color = fcp <= 1800 ? '\x1b[32m' : fcp <= 3000 ? '\x1b[33m' : '\x1b[31m';
1525
- console.log(` FCP: ${color}${fcp}ms\x1b[0m`);
1605
+ console.log(` FCP: ${thresholdColor(fcp, 1800, 3000)}${fcp}ms${ANSI_RESET}`);
1526
1606
  }
1527
1607
  if (vitalsData.lcp !== null) {
1528
1608
  const lcp = vitalsData.lcp;
1529
- const color = lcp <= 2500 ? '\x1b[32m' : lcp <= 4000 ? '\x1b[33m' : '\x1b[31m';
1530
- console.log(` LCP: ${color}${lcp}ms\x1b[0m`);
1609
+ console.log(` LCP: ${thresholdColor(lcp, 2500, 4000)}${lcp}ms${ANSI_RESET}`);
1531
1610
  }
1532
1611
  if (vitalsData.cls !== null) {
1533
1612
  const cls = vitalsData.cls;
1534
- const color = cls <= 0.1 ? '\x1b[32m' : cls <= 0.25 ? '\x1b[33m' : '\x1b[31m';
1535
- console.log(` CLS: ${color}${cls}\x1b[0m`);
1613
+ console.log(` CLS: ${thresholdColor(cls, 0.1, 0.25)}${cls}${ANSI_RESET}`);
1536
1614
  }
1537
1615
  if (vitalsData.inp !== null) {
1538
1616
  const inp = vitalsData.inp;
1539
- const color = inp <= 200 ? '\x1b[32m' : inp <= 500 ? '\x1b[33m' : '\x1b[31m';
1540
- console.log(` INP: ${color}${inp}ms\x1b[0m`);
1617
+ console.log(` INP: ${thresholdColor(inp, 200, 500)}${inp}ms${ANSI_RESET}`);
1541
1618
  }
1542
1619
  if (vitalsData.pageSize !== null) {
1543
1620
  const sizeKB = Math.round(vitalsData.pageSize / 1024);
@@ -1935,15 +2012,21 @@ const COMMAND_HELP = {
1935
2012
  --label <text> Embedded in filename
1936
2013
  --device <name|udid> Pick a specific simulator/emulator (default: first booted)
1937
2014
  --time-limit <sec> Android only — caps screen recording (max 180)
2015
+ --app <name> Group artifacts under .sweetlink/<app>/<YYYYMMDD>/<run>/sim/
2016
+ --run <id> Override the auto-generated run id
2017
+ --no-overlays Android only — skip tap-event capture and ffmpeg overlay
1938
2018
  --ignore-exit Don't propagate the recorded command's exit code
1939
2019
 
1940
2020
  Requirements:
1941
2021
  iOS: Xcode + a booted Simulator (Simulator.app)
1942
2022
  Android: Android Platform Tools (\`adb\`) + a running emulator
2023
+ Tap-indicator overlays additionally need \`ffmpeg\` on PATH;
2024
+ without it, taps are still captured to a sidecar .taps.json.
1943
2025
 
1944
2026
  Examples:
1945
2027
  pnpm sweetlink sim ios "fastlane scan" --device "iPhone 15"
1946
- pnpm sweetlink sim android "./gradlew connectedAndroidTest"`,
2028
+ pnpm sweetlink sim android "./gradlew connectedAndroidTest"
2029
+ pnpm sweetlink sim android "appium run" --no-overlays`,
1947
2030
  term: ` term <command...>
1948
2031
  Record a shell command's stdout/stderr into asciicast v2 + a self-contained
1949
2032
  HTML player. Captures real timing; the player has play/pause, 0.1×–4×
@@ -2111,7 +2194,7 @@ if (!commandType || commandType === '--help' || commandType === '-h') {
2111
2194
  }
2112
2195
  catch (err) {
2113
2196
  const msg = err instanceof Error ? err.message : String(err);
2114
- process.stdout.write(JSON.stringify({ ok: false, error: msg }) + '\n');
2197
+ process.stdout.write(`${JSON.stringify({ ok: false, error: msg })}\n`);
2115
2198
  process.exit(1);
2116
2199
  }
2117
2200
  }
@@ -2157,14 +2240,38 @@ async function runBatchFromStdin() {
2157
2240
  }
2158
2241
  }
2159
2242
  const allOk = results.every((r) => r.ok);
2160
- process.stdout.write(JSON.stringify({
2243
+ process.stdout.write(`${JSON.stringify({
2161
2244
  ok: allOk,
2162
2245
  duration: Date.now() - startTime,
2163
2246
  captures: results,
2164
- }) + '\n');
2247
+ })}\n`);
2165
2248
  if (!allOk)
2166
2249
  process.exit(1);
2167
2250
  }
2251
+ /**
2252
+ * Resolve the on-disk path for a capture artifact (term .cast, sim .mp4).
2253
+ * Honours --app/--run for the app-scoped hierarchy (delegates to runSlot)
2254
+ * and the historical flat layout when --app is absent. Used by both the
2255
+ * batch JSON-stdin path and the direct CLI handlers so they cannot drift.
2256
+ */
2257
+ async function resolveCapturePath(opts) {
2258
+ if (opts.output)
2259
+ return assertOutputInRoot(opts.output);
2260
+ const labelSlug = (opts.label ?? 'batch')
2261
+ .replace(/[^a-z0-9]/gi, '-')
2262
+ .toLowerCase()
2263
+ .slice(0, 40);
2264
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2265
+ const filename = `${labelSlug}-${stamp}.${opts.ext}`;
2266
+ const { runSlot } = await import('../runs.js');
2267
+ const dir = runSlot({
2268
+ baseDir: findProjectRoot(),
2269
+ app: opts.app,
2270
+ run: opts.run,
2271
+ kind: opts.kind,
2272
+ });
2273
+ return assertOutputInRoot(path.join(dir, filename));
2274
+ }
2168
2275
  async function runOneBatchCapture(cap) {
2169
2276
  const mode = cap.mode;
2170
2277
  if (!mode)
@@ -2174,13 +2281,14 @@ async function runOneBatchCapture(cap) {
2174
2281
  if (!command)
2175
2282
  throw new Error('term capture missing "command".');
2176
2283
  const label = cap.label ?? 'batch';
2177
- const labelSlug = label
2178
- .replace(/[^a-z0-9]/gi, '-')
2179
- .toLowerCase()
2180
- .slice(0, 40);
2181
- const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2182
- const output = cap.output ??
2183
- path.join(findProjectRoot(), '.sweetlink', 'term', `${labelSlug}-${stamp}.cast`);
2284
+ const output = await resolveCapturePath({
2285
+ kind: 'term',
2286
+ label,
2287
+ output: cap.output,
2288
+ app: cap.app,
2289
+ run: cap.run,
2290
+ ext: 'cast',
2291
+ });
2184
2292
  ensureDir(output);
2185
2293
  const { captureTerminal } = await import('../term/recorder.js');
2186
2294
  const { generatePlayer } = await import('../term/player.js');
@@ -2191,6 +2299,7 @@ async function runOneBatchCapture(cap) {
2191
2299
  shell: cap.shell,
2192
2300
  cols: typeof cap.cols === 'number' ? cap.cols : undefined,
2193
2301
  rows: typeof cap.rows === 'number' ? cap.rows : undefined,
2302
+ inheritEnv: cap.inheritEnv === true,
2194
2303
  });
2195
2304
  const playerPath = await generatePlayer({ castPath: output });
2196
2305
  return {
@@ -2206,13 +2315,14 @@ async function runOneBatchCapture(cap) {
2206
2315
  if (!command)
2207
2316
  throw new Error(`${mode} capture missing "command".`);
2208
2317
  const label = cap.label ?? 'batch';
2209
- const labelSlug = label
2210
- .replace(/[^a-z0-9]/gi, '-')
2211
- .toLowerCase()
2212
- .slice(0, 40);
2213
- const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
2214
- const output = cap.output ??
2215
- path.join(findProjectRoot(), '.sweetlink', 'sim', `${labelSlug}-${stamp}.mp4`);
2318
+ const output = await resolveCapturePath({
2319
+ kind: 'sim',
2320
+ label,
2321
+ output: cap.output,
2322
+ app: cap.app,
2323
+ run: cap.run,
2324
+ ext: 'mp4',
2325
+ });
2216
2326
  ensureDir(output);
2217
2327
  const device = cap.device;
2218
2328
  if (mode === 'sim-ios') {
@@ -2240,7 +2350,7 @@ async function runOneBatchCapture(cap) {
2240
2350
  });
2241
2351
  const data = resp.data;
2242
2352
  if (cap.output) {
2243
- const outputPath = cap.output;
2353
+ const outputPath = assertOutputInRoot(cap.output);
2244
2354
  ensureDir(outputPath);
2245
2355
  fs.writeFileSync(outputPath, Buffer.from(data.screenshot, 'base64'));
2246
2356
  return { path: outputPath, width: data.width, height: data.height };
@@ -2715,17 +2825,11 @@ async function handleStatusCommand() {
2715
2825
  process.exit(1);
2716
2826
  }
2717
2827
  const sessionDirArg = getArg('--session') ?? '.sweetlink';
2718
- // Find latest session manifest
2719
- const sessionFiles = fs
2720
- .readdirSync(sessionDirArg)
2721
- .filter((f) => f.startsWith('session-'))
2722
- .sort()
2723
- .reverse();
2724
- if (sessionFiles.length === 0) {
2828
+ const latestSession = findLatestSessionDir(sessionDirArg);
2829
+ if (!latestSession) {
2725
2830
  console.error('[Sweetlink] No session found. Run `record start` and `record stop` first.');
2726
2831
  process.exit(1);
2727
2832
  }
2728
- const latestSession = path.join(sessionDirArg, sessionFiles[0]);
2729
2833
  const manifestPath = path.join(latestSession, 'sweetlink-session.json');
2730
2834
  if (!fs.existsSync(manifestPath)) {
2731
2835
  console.error(`[Sweetlink] No manifest found at ${manifestPath}`);
@@ -2776,20 +2880,7 @@ async function handleStatusCommand() {
2776
2880
  // Auto-open the viewer (cross-platform; --no-open to suppress)
2777
2881
  if (data.viewerPath && !hasFlag('--no-open')) {
2778
2882
  console.log(` Viewer: ${data.viewerPath}`);
2779
- const { execFile } = await import('child_process');
2780
- // `start` on Windows is a cmd builtin, not an exe — must invoke via cmd.
2781
- const cmd = process.platform === 'darwin'
2782
- ? 'open'
2783
- : process.platform === 'win32'
2784
- ? 'cmd'
2785
- : 'xdg-open';
2786
- const args = process.platform === 'win32'
2787
- ? ['/c', 'start', '', data.viewerPath]
2788
- : [data.viewerPath];
2789
- execFile(cmd, args, (err) => {
2790
- if (err)
2791
- console.error(' Could not open viewer:', err.message);
2792
- });
2883
+ openInBrowser(data.viewerPath);
2793
2884
  console.log(` Opened in browser.`);
2794
2885
  }
2795
2886
  else if (data.viewerPath) {
@@ -2909,21 +3000,15 @@ async function handleStatusCommand() {
2909
3000
  }
2910
3001
  case 'report': {
2911
3002
  const sessionDirArg = getArg('--session') ?? '.sweetlink';
2912
- // Find latest session directory
2913
3003
  if (!fs.existsSync(sessionDirArg)) {
2914
3004
  console.error(`[Sweetlink] Session directory not found: ${sessionDirArg}`);
2915
3005
  process.exit(1);
2916
3006
  }
2917
- const reportSessions = fs
2918
- .readdirSync(sessionDirArg)
2919
- .filter((f) => f.startsWith('session-'))
2920
- .sort()
2921
- .reverse();
2922
- if (reportSessions.length === 0) {
3007
+ const reportSessionDir = findLatestSessionDir(sessionDirArg);
3008
+ if (!reportSessionDir) {
2923
3009
  console.error('[Sweetlink] No session found. Run `record start` and `record stop` first.');
2924
3010
  process.exit(1);
2925
3011
  }
2926
- const reportSessionDir = path.join(sessionDirArg, reportSessions[0]);
2927
3012
  if (hasFlag('--clipboard')) {
2928
3013
  // Copy SUMMARY.md to clipboard
2929
3014
  const summaryPath = path.join(reportSessionDir, 'SUMMARY.md');
@@ -2943,7 +3028,7 @@ async function handleStatusCommand() {
2943
3028
  console.error(`[Sweetlink] Failed to copy to clipboard (${clipCmd}):`, err instanceof Error ? err.message : err);
2944
3029
  process.exit(1);
2945
3030
  }
2946
- result = { mode: 'clipboard', session: reportSessions[0] };
3031
+ result = { mode: 'clipboard', session: path.basename(reportSessionDir) };
2947
3032
  }
2948
3033
  else if (hasFlag('--serve')) {
2949
3034
  // Serve viewer.html on a random port
@@ -3027,7 +3112,7 @@ async function handleStatusCommand() {
3027
3112
  }
3028
3113
  const summaryContent = fs.readFileSync(summaryPath, 'utf-8');
3029
3114
  process.stdout.write(summaryContent);
3030
- result = { mode: 'stdout', session: reportSessions[0] };
3115
+ result = { mode: 'stdout', session: path.basename(reportSessionDir) };
3031
3116
  }
3032
3117
  break;
3033
3118
  }
@@ -3094,6 +3179,7 @@ async function handleStatusCommand() {
3094
3179
  output,
3095
3180
  device,
3096
3181
  timeLimit: tl ? parseInt(tl, 10) : undefined,
3182
+ overlays: !hasFlag('--no-overlays'),
3097
3183
  });
3098
3184
  }
3099
3185
  let sizeKb = '?';
@@ -3103,8 +3189,12 @@ async function handleStatusCommand() {
3103
3189
  catch {
3104
3190
  /* file may not exist if recordingClosed is false */
3105
3191
  }
3192
+ const tapSuffix = (recResult.tapCount ?? 0) > 0
3193
+ ? ` · ${recResult.tapCount} taps${recResult.overlaysApplied ? ' (overlaid)' : ' (sidecar only — install ffmpeg for overlays)'}`
3194
+ : '';
3106
3195
  console.log(`[Sweetlink] ${recResult.recordingClosed ? '✓' : '⚠'} ${getRelativePath(output)} · ` +
3107
3196
  `${recResult.durationSec.toFixed(1)}s · ${sizeKb}KB · ${recResult.device} · exit=${recResult.exitCode}` +
3197
+ tapSuffix +
3108
3198
  (recResult.recordingClosed
3109
3199
  ? ''
3110
3200
  : ' (recording was force-killed; mp4 may be incomplete)'));
@@ -3114,6 +3204,9 @@ async function handleStatusCommand() {
3114
3204
  durationSec: recResult.durationSec,
3115
3205
  exitCode: recResult.exitCode,
3116
3206
  recordingClosed: recResult.recordingClosed,
3207
+ tapCount: recResult.tapCount,
3208
+ tapsJsonPath: recResult.tapsJsonPath,
3209
+ overlaysApplied: recResult.overlaysApplied,
3117
3210
  };
3118
3211
  if (recResult.exitCode !== 0 && !hasFlag('--ignore-exit')) {
3119
3212
  process.exit(recResult.exitCode);
@@ -3281,14 +3374,7 @@ async function handleStatusCommand() {
3281
3374
  else if (sub === 'open') {
3282
3375
  // Open the index.html in the browser
3283
3376
  if (data.indexPath) {
3284
- const { execFile } = await import('child_process');
3285
- const cmd = process.platform === 'darwin'
3286
- ? 'open'
3287
- : process.platform === 'win32'
3288
- ? 'cmd'
3289
- : 'xdg-open';
3290
- const cmdArgs = process.platform === 'win32' ? ['/c', 'start', '', data.indexPath] : [data.indexPath];
3291
- execFile(cmd, cmdArgs, () => { });
3377
+ openInBrowser(data.indexPath);
3292
3378
  console.log(`[Sweetlink] Opened ${data.indexPath}`);
3293
3379
  }
3294
3380
  result = { indexPath: data.indexPath };