2.9 KiB
2.9 KiB
Tasks: enterprise-video-thumbnails
1. Scaffold
- 1.1 Create
packages/media/video/video-thumbnails/skeleton:package.jsonat0.1.0,tsconfig.lib.json,vite.config.ts,vitest.config.ts, polyfills setup. - 1.2 Add
videoplugin tomediasuper-category inscripts/folder-reorg/assignment.yml.
2. Error codes + error class
- 2.1
src/error-codes/error-codes.ts—defineCodes("VIDEO_THUMBNAILS", [...])for all nine codes. - 2.2
src/errors/video-thumbnails-error.ts—VideoThumbnailsError extends SuaveplanError<VideoThumbnailsCode>. - 2.3 Sibling
.mdfor each.
3. Zod schemas
- 3.1
src/schemas/schemas.ts—ThumbnailConfigSchema,ThumbnailOptionsSchema,SpriteSheetConfigSchema,VideoMetadataSchema,ThumbnailResultSchema,SpriteSheetResultSchema. - 3.2 Inferred types in
schemas.types.ts.
4. Telemetry
- 4.1
src/telemetry/telemetry.ts—getTelemetry()returns{ extractDuration, extractTotal, spriteSheetDuration, spriteSheetFrames }lazily viametrics.getMeter.
5. Runner
- 5.1
src/runner/runner.ts—FfmpegRunnerinterface +ExtractInput/TileInput/ProbeResult. - 5.2
src/runner/fluent-ffmpeg-runner.ts—FluentFfmpegRunnerdefault impl usingfluent-ffmpeg+@ffmpeg-installer/ffmpeg; threadsAbortSignaltocommand.kill("SIGKILL").
6. ThumbnailGenerator
- 6.1
src/thumbnail-generator/thumbnail-generator.ts—generate,generateMultiple,extractSlidingWindow,getMetadata,isAvailable. - 6.2 Boundary Zod validation; OTel emission;
AbortSignalpropagation.
7. SpriteSheetGenerator
- 7.1
src/sprite-sheet/sprite-sheet.ts— N×M tile viarunner.tile; auto-detect duration viarunner.probe.
8. Barrel + subpath exports
- 8.1
src/index.tsexplicit named exports. - 8.2
package.jsonexportsmap covers.,./errors,./schemas,./runner,./thumbnail-generator,./sprite-sheet,./telemetry.
9. Real-fixture test suite
- 9.1
tests/setup/fixtures.tssynthesises a 5-second 320×240 MP4 via ffmpeglavfionce per worker; cached temp path. - 9.2 Tests exercise every public surface (extract, multiple, sliding-window, sprite-sheet, getMetadata, isAvailable, abort, validation errors, every error code).
10. Docs
- 10.1 Sibling
.mdfor every.ts(≥200 words, 6 sections). - 10.2
README.mdat package root with modules table.
11. MANIFEST refresh
- 11.1
bun scripts/folder-reorg/generate-manifest.ts.
12. Ship gate
- 12.1
bunx turbo lint typecheck test build --filter=@suaveplan/video-thumbnailsgreen. - 12.2
bunx turbo test:coverage --filter=@suaveplan/video-thumbnails100/100/100/100. - 12.3 Fold
specs/video-thumbnails/spec.mdintoopenspec/specs/video-thumbnails/spec.md. - 12.4 Move change folder to
openspec/archive/2026-05-25-enterprise-video-thumbnails/. - 12.5 Flip
STATUS.mdrow to✅, update counters.