hyperframes 0.8.158 → 0.8.160
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 +24 -0
- package/dist/{add-VBBOJ3RB.js → add-OGBTJCU4.js} +11 -11
- package/dist/{animatedGifPrep-MTJRHJ5G.js → animatedGifPrep-YAJTDXB7.js} +6 -6
- package/dist/api.js +16 -16
- package/dist/{asset-3MLXYJCT.js → asset-DKQFFGPP.js} +2 -2
- package/dist/{assetCataloger-DI7FC5KZ.js → assetCataloger-BIDQA34M.js} +2 -2
- package/dist/audio-GK4OVVTH.js +2086 -0
- package/dist/{auth-RJCTHSMH.js → auth-AQMRAFXN.js} +1 -1
- package/dist/{autoUpdate-VD6R34HF.js → autoUpdate-NFQB7V2X.js} +2 -2
- package/dist/{backgroundChecks-CWWIZDTW.js → backgroundChecks-7JKE2FIU.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-FTZ67377.js → batchRender-C2JCG5EK.js} +3 -3
- package/dist/{beats-6CN4BEXJ.js → beats-C3ZSK2R2.js} +12 -12
- package/dist/{benchmark-4QSNJZXI.js → benchmark-RRU67WEY.js} +8 -8
- package/dist/{browser-H7PRFBJV.js → browser-K4TP4ZM2.js} +5 -5
- package/dist/{bundleWithLocalizedFonts-IVO43QBQ.js → bundleWithLocalizedFonts-SLBVWQ7O.js} +2 -2
- package/dist/{capture-GZSY7LZJ.js → capture-T2TBROMS.js} +2 -2
- package/dist/{capture-IEEQTPAS.js → capture-ZPRK3TOZ.js} +10 -10
- package/dist/{catalog-PD25CVG3.js → catalog-IMIHQ4KX.js} +11 -11
- package/dist/{catch-up-2TGBK342.js → catch-up-UY5MJWOG.js} +4 -4
- package/dist/{check-HFNJEV3O.js → check-6NAJSJHQ.js} +135 -124
- package/dist/{checkBrowser-767LAZKF.js → checkBrowser-JWNQFYTY.js} +38 -36
- package/dist/{chunk-YIJMVFEJ.js → chunk-22QHO26F.js} +1 -1
- package/dist/{chunk-7F3B5YYT.js → chunk-2742O5DO.js} +178 -23
- package/dist/{chunk-EEEUI3ON.js → chunk-2ZLYSXZC.js} +16 -9
- package/dist/{chunk-L6AJC7UQ.js → chunk-37LNY2EC.js} +1 -1
- package/dist/{chunk-EY6ISRP3.js → chunk-3XPVZLAR.js} +1 -1
- package/dist/{chunk-DISITOR6.js → chunk-4ID635FL.js} +1 -1
- package/dist/{chunk-EDEFAJI5.js → chunk-4VYNMVMC.js} +12 -12
- package/dist/chunk-6JR2XUEE.js +127 -0
- package/dist/{chunk-7FGHFHWD.js → chunk-6MCASYIS.js} +31 -11
- package/dist/{chunk-3MQBIZHG.js → chunk-7OFNPEKR.js} +7 -7
- package/dist/{chunk-BB2SFTMY.js → chunk-A2DMF2Q6.js} +6 -5
- package/dist/{chunk-LAAGHMRC.js → chunk-B5FZ2CQM.js} +6 -2
- package/dist/{chunk-SLUFA6UM.js → chunk-B7RUGHBT.js} +1 -1
- package/dist/{chunk-3UMNI4XZ.js → chunk-D2WGLWIK.js} +3 -3
- package/dist/{chunk-3FRK53UC.js → chunk-D33YJZOH.js} +1 -1
- package/dist/{chunk-54DMWFQZ.js → chunk-D3ZWBHZP.js} +2 -15
- package/dist/{chunk-PKHDQELW.js → chunk-D46G5IQH.js} +11 -11
- package/dist/{chunk-ZZ3ZWTOI.js → chunk-DJZEIVAP.js} +3 -3
- package/dist/{chunk-J7WFHOCW.js → chunk-ERTJPFCH.js} +1 -1
- package/dist/{chunk-QRPYTJBW.js → chunk-EVRUR7DW.js} +1 -1
- package/dist/{chunk-QH2PL6J4.js → chunk-FRGYHRP6.js} +1 -1
- package/dist/{chunk-T243WV6D.js → chunk-G642IIVK.js} +2 -2
- package/dist/{chunk-GPUVPZRK.js → chunk-GG37I7B3.js} +1 -1
- package/dist/chunk-GJQHHAAX.js +336 -0
- package/dist/{chunk-Y6E2PW7Z.js → chunk-GOASXWDD.js} +2 -2
- package/dist/{chunk-4R6OZQGX.js → chunk-GOTCGKX6.js} +79 -4
- package/dist/{chunk-H6BWNY56.js → chunk-ICZVCVD3.js} +1 -1
- package/dist/{chunk-YVD5M26L.js → chunk-IGTGLGML.js} +2 -2
- package/dist/{chunk-KEGTYA7V.js → chunk-IK3SOMZ4.js} +5 -3
- package/dist/{chunk-6PIGOKTE.js → chunk-JGYHWVXQ.js} +339 -67
- package/dist/{chunk-2XUQPJ3W.js → chunk-KRE55WLI.js} +1 -1
- package/dist/{chunk-NNQP5TNO.js → chunk-KWRBEDJI.js} +3 -3
- package/dist/{chunk-FJT35XBA.js → chunk-LYIG2GZ5.js} +2 -2
- package/dist/{chunk-T76NSAXO.js → chunk-MMV6IY6U.js} +6 -4
- package/dist/{chunk-4YDQQQY6.js → chunk-MP676E4B.js} +2 -2
- package/dist/{chunk-LAPUMJOC.js → chunk-MYGXKD7A.js} +5 -5
- package/dist/{chunk-LQXHRO6F.js → chunk-N2NDDTYW.js} +2 -2
- package/dist/{chunk-J6SJCYAQ.js → chunk-OMJA7JP6.js} +5 -5
- package/dist/chunk-P47XYVEQ.js +3795 -0
- package/dist/{chunk-NFX4K6OW.js → chunk-P4QE7SSN.js} +1 -1
- package/dist/{chunk-EGKIQS5J.js → chunk-PBNV5V5G.js} +1 -1
- package/dist/{chunk-56QTFOWH.js → chunk-PINFPWRV.js} +5 -119
- package/dist/{chunk-IRRRH66M.js → chunk-PLEMSN3E.js} +115 -13
- package/dist/{chunk-23VDPRQ3.js → chunk-PPF65XAF.js} +1 -1
- package/dist/{chunk-SGIZMTWO.js → chunk-Q3TFX4OZ.js} +1 -1
- package/dist/{chunk-XSEGMQYA.js → chunk-QABAVWEX.js} +26 -3
- package/dist/{chunk-7ZWOLEGS.js → chunk-RTS7BGEC.js} +1 -1
- package/dist/{chunk-YB26LWR2.js → chunk-SB5DX6AD.js} +2 -2
- package/dist/{chunk-J4SSEVRU.js → chunk-SHVDJON6.js} +2 -2
- package/dist/{chunk-W2SNLHKF.js → chunk-TTFDAWCS.js} +1 -1
- package/dist/{chunk-RU6AIVON.js → chunk-TU2CQJO3.js} +2 -2
- package/dist/{chunk-Z347DFOL.js → chunk-V2FQQILJ.js} +8 -8
- package/dist/{chunk-DCQCGE2W.js → chunk-VD7WQYTO.js} +22 -20
- package/dist/{chunk-SHEVPNUR.js → chunk-VZ6LCTOZ.js} +1 -1
- package/dist/{chunk-SQHWDFTV.js → chunk-X3SCQP2A.js} +1 -1
- package/dist/{chunk-LBT4AMSF.js → chunk-XRKMITSS.js} +1 -1
- package/dist/{chunk-OTG5H2VM.js → chunk-XTLV6UVP.js} +3 -3
- package/dist/{clean-FQUVFH6H.js → clean-RRE6PMKZ.js} +24 -23
- package/dist/cli.js +54 -53
- package/dist/{cloud-BHAYVT6F.js → cloud-OIR6K7TS.js} +4 -4
- package/dist/{cloudrun-STLNWUBW.js → cloudrun-BIQXBUDO.js} +3 -3
- package/dist/{compare-2FRBIK5Z.js → compare-E57W737I.js} +31 -30
- package/dist/{compiler-VFJVUZWR.js → compiler-57M6W5WY.js} +3 -3
- package/dist/{component-DRKXJVXB.js → component-I2O4AX56.js} +3 -3
- package/dist/{compositions-D3SN64J3.js → compositions-B6NKZHIN.js} +10 -10
- package/dist/{delete-NA5WC2IR.js → delete-DTUNBC6K.js} +2 -2
- package/dist/{dist-SVTSOG4Q.js → dist-4JFB3WAR.js} +2 -2
- package/dist/{dist-2VXSQLXO.js → dist-ROVMAL74.js} +1 -1
- package/dist/{doctor-VXCMPOY3.js → doctor-SCNB73Z3.js} +12 -12
- package/dist/{events-ZJEPMUWT.js → events-6LQNRKHZ.js} +3 -3
- package/dist/{events-QAHWXFFG.js → events-Q37UJL36.js} +2 -2
- package/dist/{feedback-UGOQ57TU.js → feedback-FOEBE2OW.js} +9 -9
- package/dist/{ffmpeg-2ROTISBL.js → ffmpeg-7BYARPLM.js} +4 -2
- package/dist/{figma-YO2MJZDP.js → figma-54MRTBKH.js} +3 -3
- package/dist/fontLocalizeCli.js +9 -9
- package/dist/{get-WMJAYRNF.js → get-EPGHM2SA.js} +2 -2
- package/dist/{gpuPolicy-VXNJ4UBN.js → gpuPolicy-VGE3I5J4.js} +6 -6
- package/dist/{grade-compare-QZ7BG2AP.js → grade-compare-LOJWX6SK.js} +33 -32
- package/dist/{help-AR4MX2AH.js → help-6FPZI3WP.js} +2 -1
- package/dist/{history-NF764OFQ.js → history-GRXSUA5R.js} +12 -11
- package/dist/hyperframe-runtime.js +56 -56
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +56 -56
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/{info-476ERK4G.js → info-LV7DFCLD.js} +7 -7
- package/dist/{init-M6YUOBBZ.js → init-3J7BSAC3.js} +29 -29
- package/dist/{inspect-QYPUG3UZ.js → inspect-5RON554C.js} +30 -29
- package/dist/{installer-HF5BXXXM.js → installer-T3STEB4U.js} +4 -4
- package/dist/{keyframes-MTZRE34W.js → keyframes-KHXTHI5C.js} +6 -6
- package/dist/{lambda-ZCX7KGTY.js → lambda-4KCSMIM6.js} +4 -4
- package/dist/{layout-DLX4HQFL.js → layout-DVWWT2TR.js} +30 -29
- package/dist/{lint-OQ5QWCHZ.js → lint-Q5WFB5ST.js} +9 -9
- package/dist/{lintProject-JGHKRO5L.js → lintProject-BGDYHF3F.js} +1 -1
- package/dist/{list-AZ6OIOIK.js → list-RFEUTW6N.js} +2 -2
- package/dist/{login-DJPYT4YZ.js → login-WBHWA4M2.js} +4 -4
- package/dist/{manager-JNJE54OQ.js → manager-B6MVBM2E.js} +3 -3
- package/dist/{manager-ZLJD3EAY.js → manager-HEUPD2YB.js} +2 -2
- package/dist/{media-treatment-4YKC4LGB.js → media-treatment-WRHVNWLS.js} +15 -14
- package/dist/{models-WHDUQZQZ.js → models-OA4MXEYG.js} +12 -12
- package/dist/{motionShot-KEHC5AMK.js → motionShot-BZLRN3SS.js} +13 -13
- package/dist/{normalize-audio-ATAQGUPX.js → normalize-audio-4YXE3RIF.js} +7 -7
- package/dist/{open-4DXBEX2U.js → open-MCGYEFML.js} +7 -7
- package/dist/{parakeetRunner-5PNBGCGH.js → parakeetRunner-DBLHMD5T.js} +13 -13
- package/dist/{pipeline-QA2422UI.js → pipeline-FSY65OQ4.js} +8 -8
- package/dist/{play-SKTSHZM5.js → play-WXOV3BD7.js} +28 -27
- package/dist/{preflight-BH2XUQBS.js → preflight-G5KP7ZKA.js} +4 -4
- package/dist/{present-KSQ5GASH.js → present-RVG4J6CJ.js} +23 -22
- package/dist/{preview-TDD3QDR3.js → preview-PDUQR2JQ.js} +24 -24
- package/dist/{producer-PQMZ7OYH.js → producer-C5V2A3YL.js} +1 -1
- package/dist/{projectConfig-EYYDESVO.js → projectConfig-X2IEHCSK.js} +6 -6
- package/dist/{publication-MJY3XYYV.js → publication-JEANCWBW.js} +2 -2
- package/dist/{publish-5TZIKVLW.js → publish-VX5OH4ST.js} +12 -12
- package/dist/{remove-background-HT73ZUIG.js → remove-background-IXCISD26.js} +9 -9
- package/dist/{render-ADBL3C7S.js → render-5BGU3FXU.js} +57 -35
- package/dist/{render-YTJ3SMCD.js → render-ISUT7Q3X.js} +3 -3
- package/dist/{render-KJCDJEGI.js → render-JNJVFBFF.js} +13 -13
- package/dist/{render-batch-AFB2XK3I.js → render-batch-2C6RUP3F.js} +3 -3
- package/dist/renderSetupWorker.js +4 -4
- package/dist/{resolver-F2D2YCSQ.js → resolver-KTNKZVIB.js} +4 -4
- package/dist/{sherpa-IBKSF6GX.js → sherpa-GFRG3TMM.js} +12 -12
- package/dist/skills/hyperframes-cli/SKILL.md +5 -4
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +8 -0
- package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +1 -1
- package/dist/{skills-E75DFHGG.js → skills-LKJA27ZN.js} +5 -5
- package/dist/{skillsUpdateCheck-EPTKOBR6.js → skillsUpdateCheck-RFZJKZC4.js} +3 -3
- package/dist/{snapshot-Z6T4I5TE.js → snapshot-EOYA4MLG.js} +86 -50
- package/dist/{src-NDI4KNT3.js → src-GPUDUKY6.js} +7 -5
- package/dist/{src-4GCHM2LX.js → src-IMCQRH4P.js} +8 -8
- package/dist/{staticProjectServer-ITNEQNQ7.js → staticProjectServer-S3NK3V4S.js} +18 -15
- package/dist/studio/assets/{hyperframes-player-DX8LgKgb.js → hyperframes-player-CXL23NEv.js} +1 -1
- package/dist/studio/assets/{index-BdnuQ7ta.js → index-Bl_xrA5T.js} +1 -1
- package/dist/studio/assets/{index-DB0YwjiT.js → index-CejKvBNw.js} +1 -1
- package/dist/studio/assets/{index-7Ljcoa9s.js → index-D7BvLHtZ.js} +7 -7
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-JMWUSAG7.js → studio-api-YM5HLXUS.js} +16 -11
- package/dist/{studioServer-MWZNMAVJ.js → studioServer-CEXJK5TC.js} +60 -59
- package/dist/{telemetry-D6A2TRK6.js → telemetry-7AWYECPL.js} +3 -3
- package/dist/{timeline-VIF4G3IT.js → timeline-G7H373XX.js} +48 -353
- package/dist/{tokens-ORS6MFMG.js → tokens-GYH7NXXA.js} +2 -2
- package/dist/{transcribe-DNRG7OGE.js → transcribe-CIC7WAT5.js} +17 -17
- package/dist/{transcribe-DZ6O6EG5.js → transcribe-FL6NGWHF.js} +11 -11
- package/dist/{updateCheck-YY4BPYNT.js → updateCheck-MQ44KGUR.js} +2 -2
- package/dist/{upgrade-CUDVTTF5.js → upgrade-OL47SID3.js} +2 -2
- package/dist/{urlDownloader-INLS5A6I.js → urlDownloader-KDJGLR2Y.js} +5 -5
- package/dist/{usage-EC3KFUIJ.js → usage-HG4WMM7A.js} +33 -5
- package/dist/{validate-CQCQVHUX.js → validate-TDCH6X3C.js} +22 -21
- package/dist/{video-3GLT6U6Z.js → video-AHO4CDCK.js} +6 -6
- package/package.json +1 -1
- package/dist/chunk-LPOTN5GW.js +0 -3795
|
@@ -16,24 +16,24 @@ import {
|
|
|
16
16
|
sherpaRuntimeLoadError,
|
|
17
17
|
sherpaUnsupportedReason,
|
|
18
18
|
transcribeWithSherpa
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MP676E4B.js";
|
|
20
20
|
import "./chunk-BXCMXMJQ.js";
|
|
21
21
|
import "./chunk-3DKN5WKL.js";
|
|
22
22
|
import "./chunk-EOVYQ3IG.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-DJZEIVAP.js";
|
|
24
|
+
import "./chunk-G642IIVK.js";
|
|
25
25
|
import "./chunk-6BEFEWFB.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-X3SCQP2A.js";
|
|
27
27
|
import "./chunk-PO2SDVQA.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-IK3SOMZ4.js";
|
|
29
29
|
import "./chunk-XT6MXC7A.js";
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-PLEMSN3E.js";
|
|
31
|
+
import "./chunk-LYIG2GZ5.js";
|
|
32
32
|
import "./chunk-KCF6GHJP.js";
|
|
33
33
|
import "./chunk-JYVGYKXG.js";
|
|
34
34
|
import "./chunk-7KDQAD2W.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-Q3TFX4OZ.js";
|
|
36
|
+
import "./chunk-P47XYVEQ.js";
|
|
37
37
|
import "./chunk-VC76R6W2.js";
|
|
38
38
|
import "./chunk-UJKQWGFF.js";
|
|
39
39
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -42,10 +42,10 @@ import "./chunk-DPVXBVLL.js";
|
|
|
42
42
|
import "./chunk-T76PLPD6.js";
|
|
43
43
|
import "./chunk-FXMKHHPO.js";
|
|
44
44
|
import "./chunk-RQVDTPGD.js";
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-22QHO26F.js";
|
|
46
|
+
import "./chunk-D3ZWBHZP.js";
|
|
47
47
|
import "./chunk-TWWSYAKJ.js";
|
|
48
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-2742O5DO.js";
|
|
49
49
|
import "./chunk-IWFLMU2N.js";
|
|
50
50
|
import "./chunk-3VGU2SH7.js";
|
|
51
51
|
import "./chunk-VAS6HQX3.js";
|
|
@@ -22,11 +22,11 @@ Run commands as `npx hyperframes ...` unless project instructions provide a wrap
|
|
|
22
22
|
3. **Author:** write the composition using `/hyperframes-core`. To know what is on a project's timeline (tracks, clips, starts, ends, what plays), run `npx hyperframes timeline --json` instead of reading `index.html` and every sub-composition file: nested rows carry absolute main-timeline `absStart`/`absEnd` and their owning `file`, not just their local, per-sub-composition time. Prefer `--json` over the text form; it costs fewer tokens for the same or better correctness. See `references/upgrade-info-misc.md` for one-liners that answer common questions without reading the whole output.
|
|
23
23
|
4. **Get fast feedback while editing:** run `npx hyperframes lint` after the first HTML pass and after structural changes.
|
|
24
24
|
5. **Run the final gate:** run `npx hyperframes check`; it reruns lint before opening the browser. Do not prepend a redundant standalone lint invocation. Add `--snapshots` for annotated overview frames and finding crops.
|
|
25
|
-
6. **Inspect sub-compositions:** when `index.html` mounts `data-composition-src`, capture midpoint snapshots and inspect each mounted scene.
|
|
25
|
+
6. **Inspect sub-compositions:** when `index.html` mounts `data-composition-src`, capture midpoint snapshots and inspect each mounted scene. Inspect the opening 30 seconds and reported problem times at full resolution; zoom into fine geometry, text, and WebGL edges rather than judging a contact sheet alone.
|
|
26
26
|
7. **Open the final Studio preview:** run `npx hyperframes preview --background`, verify the URL returns HTTP 200, hand the timeline project URL to the user, and ask whether to revise or render. Keep it alive until review ends.
|
|
27
27
|
8. **Render only after approval:** use `--quality draft` while iterating, `--quality looks` for the first real encode (the CLI default), and `--quality delivery` for final delivery.
|
|
28
28
|
9. **Hand the project to the desktop app (on offer):** when the render's Framey line ends in `hyperframes open …`, offer `npx hyperframes open [dir]`. It opens the project in the HyperFrames desktop app and adds it to Home; under Claude Code, Codex or Grok its chat picks up this conversation. Without the app it exits 1 and prints the download link. `--json` for agents. When `open` says to run `catch-up` once the person is back, or any command ends with a line naming it, run `npx hyperframes catch-up [dir]` before your next change: it lists what was asked and changed in the app since the hand-off. An older CLI has no `catch-up`.
|
|
29
|
-
10. **Verify the output:** confirm the file exists and is non-empty. Read the render summary's second line (`beginframe` vs `screenshot`, GPU, stage timings). `screenshot` + `software gpu` on Linux is the slow path. `ffprobe -v error -show_format -show_streams` and compare duration (and fps if the brief set it) to the root `data-duration`.
|
|
29
|
+
10. **Verify the output:** confirm the file exists and is non-empty. Read the render summary's second line (`beginframe` vs `screenshot`, GPU, stage timings). `screenshot` + `software gpu` on Linux is the slow path. `ffprobe -v error -show_format -show_streams` and compare duration (and fps if the brief set it) to the root `data-duration`. Visually inspect decoded output frames at the same times as the preview, including close-ups; a successful check or encode does not certify the pixels inside a canvas.
|
|
30
30
|
|
|
31
31
|
<!-- history (trial): remove this block together with the command -->
|
|
32
32
|
|
|
@@ -104,8 +104,9 @@ Treat tiny unstyled content, canvas-sized icons, missing hero elements, or timel
|
|
|
104
104
|
|
|
105
105
|
- Non-TTY mode is automatic and scaffolds the centered blank. Pass `--example` only to start from a named example. Use `--non-interactive` to force flag-only mode on a TTY.
|
|
106
106
|
- Use one `HYPERFRAMES_RUN_ID` for all commands in the same verification loop.
|
|
107
|
-
- When disk is tight, run `npx hyperframes clean` (`--dry-run` to list first); it removes what dead renders left and idle caches that rebuild themselves, never outputs, sources or anything a running render uses. Write QC frames to a temp dir,
|
|
107
|
+
- When disk is tight, run `npx hyperframes clean` (`--dry-run` to list first); it removes what dead renders left and idle caches that rebuild themselves, never outputs, sources or anything a running render uses. Write disposable QC frames to a temp dir, then remove only that owned directory. Managed snapshot runs retain the newest 10 plus current/latest/rendered evidence; active captures and runs younger than 24 hours are protected. Copy intentional before/after evidence outside managed storage before it ages out. Never delete `.hyperframes` wholesale: it also holds project history.
|
|
108
108
|
- Use `--strict`, `--strict-all`, and `--strict-variables` when the corresponding warnings, variables, or CI conditions must gate the render.
|
|
109
|
+
- For `shader_unbounded_cosine_pow`, clamp the cosine to `[0, 1]` before `pow(1 - cosine, exponent)`; a lower-only `max` is insufficient. Follow `/hyperframes-animation` → `adapters/three.md` for the source fix and affected-GPU preview/export verification. Lint only recognizes static shader expressions, and software rendering can miss hardware-specific invalid pixels.
|
|
109
110
|
- JSON paths redact the home directory as `$HOME`; do not try to reverse the redaction.
|
|
110
111
|
- When a hosted cloud project approaches or exceeds the 200 MB upload limit, use `cloud render --dry-run --json` and follow the `.hyperframesignore` investigation in `references/cloud.md`. Never ignore an asset merely because it is large.
|
|
111
112
|
- Never render merely because checks pass. Pause at the final preview and wait for approval.
|
|
@@ -194,6 +195,6 @@ Two entries in `hyperframes --help` are not part of the authoring loop, and reac
|
|
|
194
195
|
|
|
195
196
|
Run `npx hyperframes usage --json` at the start of a video workflow and again at milestones such as after drafting and before rendering. A fresh read at handoff can serve as the start read. Use `--harness claude-code`, `--harness codex`, or `--harness grok` to select explicitly.
|
|
196
197
|
|
|
197
|
-
Known results contain `status: "known"`, `harness`, `planTier`, `session`, and `
|
|
198
|
+
Known results contain `status: "known"`, `harness`, `planTier`, `session`, `weekly`, and `spend`. Each available window contains `usedPercent`, `remainingPercent`, and `resetsAt`; an unavailable window is `null`. `planTier` is the readable subscription tier when available, otherwise `null`. Claude Code reports its shared five-hour and weekly windows; a spend-metered plan (such as Enterprise) has neither and reports `spend`, the share of its billing-period spend limit already used, with `resetsAt: null`. Codex reports its shared session and weekly windows when available. Grok reports its included weekly allowance with `session: null`. Only Claude Code reports `spend`; it is `null` elsewhere. When no window is available the result is `status: "unknown"` with `reason: "no_usage_windows"`.
|
|
198
199
|
|
|
199
200
|
Unknown results contain `status: "unknown"` and a token-free `reason`. Missing, expired, unsupported, ambiguous, or unreadable logins and unavailable provider responses return unknown. Report the unknown state without guessing allowance. The command reads existing credentials without refreshing or rewriting them and emits no tokens or telemetry. Usage is a snapshot; it does not reserve allowance or estimate the next video's cost. Keep scope and workflow choices with the user.
|
|
@@ -112,6 +112,14 @@ Still PNGs. Each run writes `.hyperframes/artifacts/snapshots/<id>/` unless `--o
|
|
|
112
112
|
|
|
113
113
|
One of `--at`, `--range START:END` (seconds), or `--composition <data-composition-id>` (not a CSS selector). `--frames` defaults to 5. Range and composition sample just before the end and add no extra end frame; `--at` adds one unless `--no-end`.
|
|
114
114
|
|
|
115
|
+
### Keep verification clean and inspect the actual pixels
|
|
116
|
+
|
|
117
|
+
Inspect full-resolution frames in the opening 30 seconds, each mounted scene, and every reported problem interval. Contact sheets locate moments; use close-ups to judge thin edges, glass, particles, and WebGL geometry. Check the live preview and decoded render at matching times. Canvas shader defects can survive a successful DOM/layout audit. Record the browser/GPU and capture path when results differ across machines; isolate the failing material or pass before changing rendering defaults.
|
|
118
|
+
|
|
119
|
+
Managed snapshot storage keeps the newest 10 run folders, the newest evidence for the current revision and retained rendered revisions, and the latest snapshot. Live captures and folders younger than 24 hours are also preserved. Automatic cleanup removes whole eligible old UUID folders, including contact sheets and descriptions; arbitrary `--output` folders are untouched. Save intentional before/after evidence outside this managed storage.
|
|
120
|
+
|
|
121
|
+
For disposable checks, allocate a temporary output folder and remove that folder after inspecting it. Use `hyperframes clean --dry-run` to inspect broader cleanup. `clean --snapshots` explicitly discards snapshot evidence; use it only when that evidence is no longer needed. Never recommend removing all of `.hyperframes`, which also contains project history and other state.
|
|
122
|
+
|
|
115
123
|
### Zooming into a reported finding
|
|
116
124
|
|
|
117
125
|
`hyperframes check --snapshots` already writes a `finding-NN-<code>.png` crop for every error finding that carries a bbox, but the same zoom is available standalone once you know what to look at:
|
|
@@ -129,6 +129,6 @@ For voice selection, Whisper model rules, output format choice, and the TTS →
|
|
|
129
129
|
|
|
130
130
|
Run `npx hyperframes usage --json` at the start of a video workflow and again at milestones such as after drafting and before rendering. A fresh read at handoff can serve as the start read. Use `--harness claude-code`, `--harness codex`, or `--harness grok` to select explicitly.
|
|
131
131
|
|
|
132
|
-
Known results contain `status: "known"`, `harness`, `planTier`, `session`, and `
|
|
132
|
+
Known results contain `status: "known"`, `harness`, `planTier`, `session`, `weekly`, and `spend`. Each available window contains `usedPercent`, `remainingPercent`, and `resetsAt`; an unavailable window is `null`. `planTier` is the readable subscription tier when available, otherwise `null`. Claude Code reports its shared five-hour and weekly windows; a spend-metered plan (such as Enterprise) has neither and reports `spend`, the share of its billing-period spend limit already used, with `resetsAt: null`. Codex reports its shared session and weekly windows when available. Grok reports its included weekly allowance with `session: null`. Only Claude Code reports `spend`; it is `null` elsewhere. When no window is available the result is `status: "unknown"` with `reason: "no_usage_windows"`.
|
|
133
133
|
|
|
134
134
|
Unknown results contain `status: "unknown"` and a token-free `reason`. Missing, expired, unsupported, ambiguous, or unreadable logins and unavailable provider responses return unknown. Report the unknown state without guessing allowance. The command reads existing credentials without refreshing or rewriting them and emits no tokens or telemetry. Usage is a snapshot; it does not reserve allowance or estimate the next video's cost. Keep scope and workflow choices with the user.
|
|
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
trackSkillsInstallSkipped
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-KRE55WLI.js";
|
|
10
|
+
import "./chunk-ICZVCVD3.js";
|
|
11
11
|
import {
|
|
12
12
|
diag
|
|
13
13
|
} from "./chunk-VWG7OQKU.js";
|
|
@@ -35,15 +35,15 @@ import {
|
|
|
35
35
|
isCoreSkill,
|
|
36
36
|
presentSkills,
|
|
37
37
|
pruneOrphanedLockEntries
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-TTFDAWCS.js";
|
|
39
39
|
import {
|
|
40
40
|
withMeta
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-FRGYHRP6.js";
|
|
42
42
|
import "./chunk-K4WIOZFP.js";
|
|
43
43
|
import "./chunk-XUXGIA7H.js";
|
|
44
44
|
import "./chunk-WERLJGIC.js";
|
|
45
45
|
import "./chunk-ISN5GRYI.js";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-TU2CQJO3.js";
|
|
47
47
|
import {
|
|
48
48
|
buildNpxCommand
|
|
49
49
|
} from "./chunk-6BEFEWFB.js";
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
printSkillsUpdateNotice,
|
|
10
10
|
refreshSkillsCache,
|
|
11
11
|
skillsCheckDue
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-TTFDAWCS.js";
|
|
13
|
+
import "./chunk-FRGYHRP6.js";
|
|
14
14
|
import "./chunk-K4WIOZFP.js";
|
|
15
15
|
import "./chunk-XUXGIA7H.js";
|
|
16
16
|
import "./chunk-WERLJGIC.js";
|
|
17
17
|
import "./chunk-ISN5GRYI.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-TU2CQJO3.js";
|
|
19
19
|
import "./chunk-KNU5COPB.js";
|
|
20
20
|
import "./chunk-M2WBOQ2Q.js";
|
|
21
21
|
export {
|
|
@@ -4,6 +4,9 @@ import { dirname as __hf_dirname } from "node:path";
|
|
|
4
4
|
var require = __hf_createRequire(import.meta.url);
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
writeCaptureFileSync
|
|
9
|
+
} from "./chunk-MRF4AMKD.js";
|
|
7
10
|
import {
|
|
8
11
|
parseAngle
|
|
9
12
|
} from "./chunk-KZI44OPA.js";
|
|
@@ -14,13 +17,8 @@ import {
|
|
|
14
17
|
} from "./chunk-57GN6KWT.js";
|
|
15
18
|
import {
|
|
16
19
|
captureArtifactRevision
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import {
|
|
20
|
-
serveStaticProjectHtml
|
|
21
|
-
} from "./chunk-4R6OZQGX.js";
|
|
22
|
-
import "./chunk-XUHOIDKG.js";
|
|
23
|
-
import "./chunk-J4SSEVRU.js";
|
|
20
|
+
} from "./chunk-GOASXWDD.js";
|
|
21
|
+
import "./chunk-V2FQQILJ.js";
|
|
24
22
|
import "./chunk-X7MTZ4T2.js";
|
|
25
23
|
import {
|
|
26
24
|
DEFAULT_ZOOM_SCALE,
|
|
@@ -30,46 +28,55 @@ import {
|
|
|
30
28
|
resolveCropRegion,
|
|
31
29
|
runFfmpegOnce,
|
|
32
30
|
seekCompositionTimeline
|
|
33
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6MCASYIS.js";
|
|
34
32
|
import "./chunk-FH7WODJH.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-B5FZ2CQM.js";
|
|
34
|
+
import "./chunk-ERTJPFCH.js";
|
|
37
35
|
import "./chunk-WPNE5NEP.js";
|
|
38
|
-
import "./chunk-DCQCGE2W.js";
|
|
39
|
-
import "./chunk-56QTFOWH.js";
|
|
40
|
-
import "./chunk-C6TPGUWD.js";
|
|
41
|
-
import {
|
|
42
|
-
artifactDirectory,
|
|
43
|
-
forgetRecordedArtifacts,
|
|
44
|
-
recordArtifacts
|
|
45
|
-
} from "./chunk-6PIGOKTE.js";
|
|
46
|
-
import "./chunk-DISITOR6.js";
|
|
47
|
-
import "./chunk-FFDC5OWV.js";
|
|
48
|
-
import {
|
|
49
|
-
resolveProject
|
|
50
|
-
} from "./chunk-L6AJC7UQ.js";
|
|
51
36
|
import {
|
|
52
37
|
formatLintFindings
|
|
53
38
|
} from "./chunk-6CSYCFQV.js";
|
|
39
|
+
import {
|
|
40
|
+
resolveProject
|
|
41
|
+
} from "./chunk-37LNY2EC.js";
|
|
54
42
|
import "./chunk-K2FLNJVB.js";
|
|
43
|
+
import {
|
|
44
|
+
serveStaticProjectHtml
|
|
45
|
+
} from "./chunk-GOTCGKX6.js";
|
|
46
|
+
import "./chunk-X7MTZ4T2.js";
|
|
47
|
+
import "./chunk-SHVDJON6.js";
|
|
55
48
|
import "./chunk-DQBY7FRR.js";
|
|
56
49
|
import {
|
|
57
50
|
resolveLocalBrowserGpuMode
|
|
58
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-SB5DX6AD.js";
|
|
59
52
|
import "./chunk-442JNXRM.js";
|
|
60
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-XUHOIDKG.js";
|
|
54
|
+
import "./chunk-VD7WQYTO.js";
|
|
55
|
+
import "./chunk-PINFPWRV.js";
|
|
56
|
+
import "./chunk-C6TPGUWD.js";
|
|
57
|
+
import "./chunk-6JR2XUEE.js";
|
|
58
|
+
import "./chunk-4ID635FL.js";
|
|
59
|
+
import {
|
|
60
|
+
artifactDirectory,
|
|
61
|
+
finishSnapshotRun,
|
|
62
|
+
forgetRecordedArtifacts,
|
|
63
|
+
recordArtifacts,
|
|
64
|
+
retainSnapshotOutput
|
|
65
|
+
} from "./chunk-JGYHWVXQ.js";
|
|
66
|
+
import "./chunk-FFDC5OWV.js";
|
|
67
|
+
import "./chunk-GG37I7B3.js";
|
|
61
68
|
import "./chunk-XT7X6QCP.js";
|
|
62
69
|
import "./chunk-4YYJOFKS.js";
|
|
63
70
|
import "./chunk-HVW7ABXD.js";
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
71
|
+
import "./chunk-D33YJZOH.js";
|
|
72
|
+
import "./chunk-N2NDDTYW.js";
|
|
73
|
+
import "./chunk-EVRUR7DW.js";
|
|
67
74
|
import "./chunk-AWDFDFI3.js";
|
|
68
75
|
import "./chunk-P6LJ4Y32.js";
|
|
69
76
|
import "./chunk-GMECXFAN.js";
|
|
70
77
|
import "./chunk-5CS4T6C6.js";
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
78
|
+
import "./chunk-KRE55WLI.js";
|
|
79
|
+
import "./chunk-ICZVCVD3.js";
|
|
73
80
|
import "./chunk-VWG7OQKU.js";
|
|
74
81
|
import "./chunk-QWQ6GQTI.js";
|
|
75
82
|
import {
|
|
@@ -93,7 +100,7 @@ import "./chunk-K4WIOZFP.js";
|
|
|
93
100
|
import "./chunk-XUXGIA7H.js";
|
|
94
101
|
import "./chunk-WERLJGIC.js";
|
|
95
102
|
import "./chunk-ISN5GRYI.js";
|
|
96
|
-
import "./chunk-
|
|
103
|
+
import "./chunk-TU2CQJO3.js";
|
|
97
104
|
import {
|
|
98
105
|
loadOptionalPackage
|
|
99
106
|
} from "./chunk-3DKN5WKL.js";
|
|
@@ -103,10 +110,10 @@ import {
|
|
|
103
110
|
findFFmpeg,
|
|
104
111
|
findFFprobe,
|
|
105
112
|
getFFmpegInstallHint
|
|
106
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-IK3SOMZ4.js";
|
|
107
114
|
import "./chunk-XT6MXC7A.js";
|
|
108
|
-
import "./chunk-
|
|
109
|
-
import "./chunk-
|
|
115
|
+
import "./chunk-PLEMSN3E.js";
|
|
116
|
+
import "./chunk-LYIG2GZ5.js";
|
|
110
117
|
import "./chunk-KCF6GHJP.js";
|
|
111
118
|
import "./chunk-JYVGYKXG.js";
|
|
112
119
|
import "./chunk-7KDQAD2W.js";
|
|
@@ -114,12 +121,12 @@ import {
|
|
|
114
121
|
createRuntimeStartTimeResolver,
|
|
115
122
|
isClipVisibleAt,
|
|
116
123
|
isInClipWindow
|
|
117
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-Q3TFX4OZ.js";
|
|
118
125
|
import {
|
|
119
126
|
readElementRateSpec,
|
|
120
127
|
sourceTimeAt,
|
|
121
128
|
timeAtSourceTime
|
|
122
|
-
} from "./chunk-
|
|
129
|
+
} from "./chunk-P47XYVEQ.js";
|
|
123
130
|
import "./chunk-VC76R6W2.js";
|
|
124
131
|
import "./chunk-UJKQWGFF.js";
|
|
125
132
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -130,11 +137,11 @@ import "./chunk-FXMKHHPO.js";
|
|
|
130
137
|
import "./chunk-RQVDTPGD.js";
|
|
131
138
|
import {
|
|
132
139
|
runCancellableProcess
|
|
133
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-D3ZWBHZP.js";
|
|
134
141
|
import "./chunk-TWWSYAKJ.js";
|
|
135
142
|
import {
|
|
136
143
|
lintProject
|
|
137
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-2742O5DO.js";
|
|
138
145
|
import "./chunk-IWFLMU2N.js";
|
|
139
146
|
import "./chunk-3VGU2SH7.js";
|
|
140
147
|
import "./chunk-VAS6HQX3.js";
|
|
@@ -231,6 +238,19 @@ var FFMPEG_EXTRACT_TIMEOUT_MS = 3e4;
|
|
|
231
238
|
function formatSnapshotTimestamp(time) {
|
|
232
239
|
return `${Number(time.toFixed(3))}s`;
|
|
233
240
|
}
|
|
241
|
+
function assertDistinctKeepNames(times) {
|
|
242
|
+
const timeByLabel = /* @__PURE__ */ new Map();
|
|
243
|
+
for (const time of times) {
|
|
244
|
+
const label = formatSnapshotTimestamp(time);
|
|
245
|
+
const other = timeByLabel.get(label);
|
|
246
|
+
if (other !== void 0 && other !== time) {
|
|
247
|
+
throw new Error(
|
|
248
|
+
`--keep would name both ${other} and ${time} at-${label}.png; pass times at least 1 ms apart`
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
timeByLabel.set(label, time);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
234
254
|
function resolveSnapshotVideoFrameTime(input) {
|
|
235
255
|
const { globalTime, clipStart, clipDuration, sourceDuration, compositionDuration } = input;
|
|
236
256
|
const clipEnd = clipStart + clipDuration;
|
|
@@ -442,7 +462,7 @@ function computeSnapshotTimes(duration, opts) {
|
|
|
442
462
|
return { times: times.map(round), appendedTail: false };
|
|
443
463
|
}
|
|
444
464
|
async function captureSnapshots(projectDir, opts) {
|
|
445
|
-
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-
|
|
465
|
+
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-SLBVWQ7O.js");
|
|
446
466
|
const capture = await captureArtifactRevision(projectDir).catch(warnSnapshotsNotRecorded);
|
|
447
467
|
const invocation = randomUUID();
|
|
448
468
|
const artifacts = [];
|
|
@@ -542,7 +562,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
542
562
|
mkdirSync(snapshotDir, { recursive: true });
|
|
543
563
|
try {
|
|
544
564
|
const { readdirSync } = await import("fs");
|
|
545
|
-
for (const file of readdirSync(snapshotDir)) {
|
|
565
|
+
for (const file of opts.keep ? [] : readdirSync(snapshotDir)) {
|
|
546
566
|
if (/\.(png|jpg|jpeg)$/i.test(file)) {
|
|
547
567
|
const path = resolve(snapshotDir, file);
|
|
548
568
|
replaced.push(path);
|
|
@@ -555,7 +575,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
555
575
|
let syncVideoFrameVisibility = null;
|
|
556
576
|
let extractMediaMetadata = null;
|
|
557
577
|
try {
|
|
558
|
-
const engine = await import("./src-
|
|
578
|
+
const engine = await import("./src-GPUDUKY6.js");
|
|
559
579
|
injectVideoFramesBatch = engine.injectVideoFramesBatch;
|
|
560
580
|
syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
|
|
561
581
|
extractMediaMetadata = engine.extractMediaMetadata;
|
|
@@ -685,8 +705,8 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
685
705
|
}
|
|
686
706
|
await recaptureSnapshotComposite(page);
|
|
687
707
|
const timeLabel = formatSnapshotTimestamp(time);
|
|
688
|
-
const
|
|
689
|
-
const filename = `frame-${
|
|
708
|
+
const slot = opts.keep ? `at-${timeLabel}` : `${String(i).padStart(2, "0")}-at-${timeLabel}`;
|
|
709
|
+
const filename = opts.keep ? `${slot}.png` : `frame-${slot}.png`;
|
|
690
710
|
const framePath = join(snapshotDir, filename);
|
|
691
711
|
let crop;
|
|
692
712
|
if (opts.zoom) {
|
|
@@ -708,9 +728,12 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
708
728
|
region,
|
|
709
729
|
opts.zoomScale ?? DEFAULT_ZOOM_SCALE
|
|
710
730
|
);
|
|
711
|
-
|
|
731
|
+
writeCaptureFileSync(framePath, buffer);
|
|
712
732
|
} else {
|
|
713
|
-
|
|
733
|
+
writeCaptureFileSync(
|
|
734
|
+
framePath,
|
|
735
|
+
await page.screenshot({ type: "png", omitBackground: true })
|
|
736
|
+
);
|
|
714
737
|
}
|
|
715
738
|
artifacts.push({
|
|
716
739
|
id: `${invocation}-${i}`,
|
|
@@ -732,9 +755,9 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
732
755
|
` ${c.warn("\u26A0")} --against has no frame at ${timeLabel} \u2014 reference pair skipped`
|
|
733
756
|
);
|
|
734
757
|
} else {
|
|
735
|
-
const refPath = join(snapshotDir, `ref-${
|
|
736
|
-
|
|
737
|
-
const pairPath = join(snapshotDir, `pair-${
|
|
758
|
+
const refPath = join(snapshotDir, `ref-${slot}.png`);
|
|
759
|
+
writeCaptureFileSync(refPath, refPng);
|
|
760
|
+
const pairPath = join(snapshotDir, `pair-${slot}.jpg`);
|
|
738
761
|
const { createContactSheet } = await import("./contactSheet-27SRU7A4.js");
|
|
739
762
|
await createContactSheet([framePath, refPath], pairPath, {
|
|
740
763
|
cols: 2,
|
|
@@ -837,6 +860,11 @@ var snapshot_default = defineCommand({
|
|
|
837
860
|
description: "Always include a readable end-of-timeline frame (default: true). Pass --no-end to capture only your exact --at times.",
|
|
838
861
|
default: true
|
|
839
862
|
},
|
|
863
|
+
keep: {
|
|
864
|
+
type: "boolean",
|
|
865
|
+
description: "Add to --output instead of clearing it, naming each still at-<seconds>s.png (at-0s, at-1.5s, at-12.25s: no trailing zeros), so snapshotting one moment again replaces only that still. Times less than 1 ms apart share a name, so one run may not pass two of them. No contact sheet.",
|
|
866
|
+
default: false
|
|
867
|
+
},
|
|
840
868
|
zoom: {
|
|
841
869
|
type: "string",
|
|
842
870
|
description: "Zoom into a CSS selector or an exact pixel region 'x,y,w,h'. Crops a high-density screenshot instead of the full frame \u2014 a raised deviceScaleFactor, never CSS zoom or viewport resizing, so layout stays identical. A selector matching nothing is an error, not a silent full-frame shot."
|
|
@@ -902,6 +930,7 @@ var snapshot_default = defineCommand({
|
|
|
902
930
|
}
|
|
903
931
|
const timeout = parseInt(args.timeout, 10) || 5e3;
|
|
904
932
|
const atTimestamps = args.at ? String(args.at).split(",").map((s) => parseFloat(s.trim())).filter((n) => !isNaN(n)) : void 0;
|
|
933
|
+
if (args.keep === true && atTimestamps) assertDistinctKeepNames(atTimestamps);
|
|
905
934
|
const describeArg = args.describe === void 0 ? "true" : String(args.describe) === "false" ? null : String(args.describe);
|
|
906
935
|
const camera = args.angle ? parseAngle(String(args.angle)) : void 0;
|
|
907
936
|
const zoomTarget = args.zoom ? parseZoomTarget(String(args.zoom)) : void 0;
|
|
@@ -914,8 +943,11 @@ var snapshot_default = defineCommand({
|
|
|
914
943
|
const label = atTimestamps ? `${atTimestamps.length} frames at [${atTimestamps.map(formatSnapshotTimestamp).join(", ")}]` : `${frames} frames`;
|
|
915
944
|
const angleLabel = camera && (camera.yaw !== 0 || camera.pitch !== 0) ? ` ${c.dim(`(angle yaw ${camera.yaw}\xB0 pitch ${camera.pitch}\xB0)`)}` : "";
|
|
916
945
|
console.log(`${c.accent("\u25C6")} Capturing ${label} from ${c.accent(project.name)}${angleLabel}`);
|
|
946
|
+
let managedSnapshotDir;
|
|
917
947
|
try {
|
|
918
948
|
const snapshotDir = args.output ? resolve(String(args.output)) : artifactDirectory(project.dir, "snapshots");
|
|
949
|
+
if (!args.output) managedSnapshotDir = snapshotDir;
|
|
950
|
+
if (args.output) retainSnapshotOutput(project.dir, snapshotDir);
|
|
919
951
|
await withProjectLock(project.dir, "snapshot", async () => {
|
|
920
952
|
const paths = await captureSnapshots(project.dir, {
|
|
921
953
|
frames,
|
|
@@ -930,7 +962,8 @@ var snapshot_default = defineCommand({
|
|
|
930
962
|
zoomScale,
|
|
931
963
|
autoProxy: args.proxy,
|
|
932
964
|
browserGpuMode: resolveLocalBrowserGpuMode(args["browser-gpu"]),
|
|
933
|
-
against
|
|
965
|
+
against,
|
|
966
|
+
keep: args.keep === true
|
|
934
967
|
});
|
|
935
968
|
reportArtifacts(
|
|
936
969
|
"snapshot",
|
|
@@ -956,7 +989,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
|
|
|
956
989
|
}
|
|
957
990
|
try {
|
|
958
991
|
const { createSnapshotContactSheet } = await import("./contactSheet-27SRU7A4.js");
|
|
959
|
-
const sheets = await createSnapshotContactSheet(
|
|
992
|
+
const sheets = args.keep === true ? [] : await createSnapshotContactSheet(
|
|
960
993
|
snapshotDir,
|
|
961
994
|
join(snapshotDir, "contact-sheet.jpg")
|
|
962
995
|
);
|
|
@@ -1058,6 +1091,9 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
|
|
|
1058
1091
|
console.error(`
|
|
1059
1092
|
${c.error("\u2717")} Snapshot failed: ${msg}`);
|
|
1060
1093
|
failCommand();
|
|
1094
|
+
} finally {
|
|
1095
|
+
if (managedSnapshotDir)
|
|
1096
|
+
await finishSnapshotRun(project.dir, managedSnapshotDir).catch(warnSnapshotsNotRecorded);
|
|
1061
1097
|
}
|
|
1062
1098
|
}
|
|
1063
1099
|
});
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
assertPublicHttpsUrl,
|
|
54
54
|
assertSwiftShader,
|
|
55
55
|
assertWebGpuAdapterAvailable,
|
|
56
|
+
audioFailureDiagnostics,
|
|
56
57
|
augmentPageNavigationTimeoutError,
|
|
57
58
|
augmentProtocolTimeoutError,
|
|
58
59
|
beginFrameCapture,
|
|
@@ -216,8 +217,8 @@ import {
|
|
|
216
217
|
verifyGpuParity,
|
|
217
218
|
writeCapturedFrame,
|
|
218
219
|
writeUrlDownloadTelemetry
|
|
219
|
-
} from "./chunk-
|
|
220
|
-
import "./chunk-
|
|
220
|
+
} from "./chunk-PLEMSN3E.js";
|
|
221
|
+
import "./chunk-LYIG2GZ5.js";
|
|
221
222
|
import "./chunk-KCF6GHJP.js";
|
|
222
223
|
import {
|
|
223
224
|
LOW_MEMORY_TOTAL_MB_THRESHOLD,
|
|
@@ -229,8 +230,8 @@ import "./chunk-7KDQAD2W.js";
|
|
|
229
230
|
import {
|
|
230
231
|
MEDIA_VISUAL_STYLE_PROPERTIES,
|
|
231
232
|
quantizeTimeToFrame
|
|
232
|
-
} from "./chunk-
|
|
233
|
-
import "./chunk-
|
|
233
|
+
} from "./chunk-Q3TFX4OZ.js";
|
|
234
|
+
import "./chunk-P47XYVEQ.js";
|
|
234
235
|
import "./chunk-VC76R6W2.js";
|
|
235
236
|
import "./chunk-UJKQWGFF.js";
|
|
236
237
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -242,7 +243,7 @@ import "./chunk-RQVDTPGD.js";
|
|
|
242
243
|
import {
|
|
243
244
|
chromeMajorCeiling
|
|
244
245
|
} from "./chunk-TWWSYAKJ.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
+
import "./chunk-2742O5DO.js";
|
|
246
247
|
import {
|
|
247
248
|
resolveProjectRelativeSrc
|
|
248
249
|
} from "./chunk-IWFLMU2N.js";
|
|
@@ -319,6 +320,7 @@ export {
|
|
|
319
320
|
assertPublicHttpsUrl,
|
|
320
321
|
assertSwiftShader,
|
|
321
322
|
assertWebGpuAdapterAvailable,
|
|
323
|
+
audioFailureDiagnostics,
|
|
322
324
|
augmentPageNavigationTimeoutError,
|
|
323
325
|
augmentProtocolTimeoutError,
|
|
324
326
|
beginFrameCapture,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
serializeRenderRequest,
|
|
70
70
|
startServer,
|
|
71
71
|
validatePlanV2MaterializedTarget
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-2ZLYSXZC.js";
|
|
73
73
|
import {
|
|
74
74
|
FONT_FETCH_FAILED,
|
|
75
75
|
FONT_FETCH_UNAVAILABLE,
|
|
@@ -78,11 +78,11 @@ import {
|
|
|
78
78
|
injectDeterministicFontFaces
|
|
79
79
|
} from "./chunk-3QATT3QF.js";
|
|
80
80
|
import "./chunk-FI4I7CME.js";
|
|
81
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-MMV6IY6U.js";
|
|
82
|
+
import "./chunk-BZ56MTDX.js";
|
|
82
83
|
import "./chunk-KLIKCX6Q.js";
|
|
83
84
|
import "./chunk-EOOEC32M.js";
|
|
84
85
|
import "./chunk-TJSTGSAW.js";
|
|
85
|
-
import "./chunk-BZ56MTDX.js";
|
|
86
86
|
import {
|
|
87
87
|
DEFAULT_CONFIG,
|
|
88
88
|
captureFrame,
|
|
@@ -96,15 +96,15 @@ import {
|
|
|
96
96
|
isTransientBrowserError,
|
|
97
97
|
prepareCaptureSessionForReuse,
|
|
98
98
|
resolveConfig
|
|
99
|
-
} from "./chunk-
|
|
100
|
-
import "./chunk-
|
|
99
|
+
} from "./chunk-PLEMSN3E.js";
|
|
100
|
+
import "./chunk-LYIG2GZ5.js";
|
|
101
101
|
import "./chunk-KCF6GHJP.js";
|
|
102
102
|
import "./chunk-JYVGYKXG.js";
|
|
103
103
|
import "./chunk-7KDQAD2W.js";
|
|
104
104
|
import {
|
|
105
105
|
quantizeTimeToFrame
|
|
106
|
-
} from "./chunk-
|
|
107
|
-
import "./chunk-
|
|
106
|
+
} from "./chunk-Q3TFX4OZ.js";
|
|
107
|
+
import "./chunk-P47XYVEQ.js";
|
|
108
108
|
import "./chunk-VC76R6W2.js";
|
|
109
109
|
import "./chunk-UJKQWGFF.js";
|
|
110
110
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -114,7 +114,7 @@ import "./chunk-T76PLPD6.js";
|
|
|
114
114
|
import "./chunk-FXMKHHPO.js";
|
|
115
115
|
import "./chunk-RQVDTPGD.js";
|
|
116
116
|
import "./chunk-TWWSYAKJ.js";
|
|
117
|
-
import "./chunk-
|
|
117
|
+
import "./chunk-2742O5DO.js";
|
|
118
118
|
import "./chunk-IWFLMU2N.js";
|
|
119
119
|
import "./chunk-3VGU2SH7.js";
|
|
120
120
|
import "./chunk-VAS6HQX3.js";
|
|
@@ -5,24 +5,26 @@ var require = __hf_createRequire(import.meta.url);
|
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
|
+
inProcessAnswer,
|
|
8
9
|
serveStaticProjectHtml
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-XUHOIDKG.js";
|
|
11
|
-
import "./chunk-J4SSEVRU.js";
|
|
10
|
+
} from "./chunk-GOTCGKX6.js";
|
|
12
11
|
import "./chunk-X7MTZ4T2.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-SHVDJON6.js";
|
|
13
|
+
import "./chunk-XUHOIDKG.js";
|
|
14
|
+
import "./chunk-VD7WQYTO.js";
|
|
15
|
+
import "./chunk-PINFPWRV.js";
|
|
15
16
|
import "./chunk-C6TPGUWD.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-6JR2XUEE.js";
|
|
18
|
+
import "./chunk-4ID635FL.js";
|
|
19
|
+
import "./chunk-JGYHWVXQ.js";
|
|
18
20
|
import "./chunk-FFDC5OWV.js";
|
|
19
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-GG37I7B3.js";
|
|
20
22
|
import "./chunk-XT7X6QCP.js";
|
|
21
23
|
import "./chunk-4YYJOFKS.js";
|
|
22
24
|
import "./chunk-HVW7ABXD.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-D33YJZOH.js";
|
|
26
|
+
import "./chunk-N2NDDTYW.js";
|
|
27
|
+
import "./chunk-EVRUR7DW.js";
|
|
26
28
|
import "./chunk-AWDFDFI3.js";
|
|
27
29
|
import "./chunk-P6LJ4Y32.js";
|
|
28
30
|
import "./chunk-GMECXFAN.js";
|
|
@@ -31,10 +33,10 @@ import "./chunk-KLIKCX6Q.js";
|
|
|
31
33
|
import "./chunk-EOOEC32M.js";
|
|
32
34
|
import "./chunk-TJSTGSAW.js";
|
|
33
35
|
import "./chunk-EOVYQ3IG.js";
|
|
34
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-LYIG2GZ5.js";
|
|
35
37
|
import "./chunk-KCF6GHJP.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-Q3TFX4OZ.js";
|
|
39
|
+
import "./chunk-P47XYVEQ.js";
|
|
38
40
|
import "./chunk-VC76R6W2.js";
|
|
39
41
|
import "./chunk-UJKQWGFF.js";
|
|
40
42
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -43,7 +45,7 @@ import "./chunk-DPVXBVLL.js";
|
|
|
43
45
|
import "./chunk-T76PLPD6.js";
|
|
44
46
|
import "./chunk-FXMKHHPO.js";
|
|
45
47
|
import "./chunk-RQVDTPGD.js";
|
|
46
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-2742O5DO.js";
|
|
47
49
|
import "./chunk-IWFLMU2N.js";
|
|
48
50
|
import "./chunk-3VGU2SH7.js";
|
|
49
51
|
import "./chunk-VAS6HQX3.js";
|
|
@@ -54,5 +56,6 @@ import "./chunk-TYXH3EKP.js";
|
|
|
54
56
|
import "./chunk-IXLUTE6N.js";
|
|
55
57
|
import "./chunk-M2WBOQ2Q.js";
|
|
56
58
|
export {
|
|
59
|
+
inProcessAnswer,
|
|
57
60
|
serveStaticProjectHtml
|
|
58
61
|
};
|