@maravilla-labs/platform 0.11.1 → 0.13.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @maravilla-labs/platform
2
2
 
3
+ ## 0.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 195fe65: Pre-extracted video frames for deterministic begin-frame renders.
8
+ - `@maravilla-labs/platform`: add `transforms.extractFrames(srcKey, { fps, ... })`
9
+ — decode any video to a sequence of still images at a fixed fps, returning a
10
+ `JobHandle` whose `output_key` holds a `FramesetManifest` (frames live under
11
+ `${prefix}/frame_NNNNNN.<ext>`). General capability; the frames renderer
12
+ consumes it to swap `<video>`→`<img>` per frame, and it's reusable for
13
+ thumbnails/scrubbing. Adds `ExtractFramesOpts` + `FramesetManifest` types.
14
+ - `@maravilla-labs/frames`: video timeline slots now carry an optional
15
+ `frameset` key (the `extractFrames` manifest) exposed on
16
+ `window.__mvFrames.videos[]`; the renderer sets `window.__mvFramesNoVideoSeek`
17
+ on the begin-frame path so the helper leaves `<video>` inert (live-seeking it
18
+ crashes Chromium — crbug.com/40656275) while the worker swaps in pre-extracted
19
+ frames. Editor scrubbing + the screenshot/dev path keep live video seeking.
20
+
21
+ ## 0.12.0
22
+
23
+ ### Minor Changes
24
+
25
+ - da70d05: MCP UI widgets are now **auto-built** by the platform — no second Vite config, no
26
+ `build:mcp-ui` script, no `@source`, no manual `static/` output.
27
+
28
+ Drop your widget source in `mcp-ui/<name>/` (or `src/mcp-ui/<name>/`) — an
29
+ `index.html` + your component + `app.css` (`@import 'tailwindcss';`) — and declare
30
+ `uiTemplates: [{ name }]` (no `htmlPath`). During the build the platform resolves
31
+ your framework's Vite plugin (Svelte/React/Vue) + Tailwind from your project, runs
32
+ `vite-plugin-singlefile`, and emits a self-contained `static/mcp-ui/<name>.html`
33
+ registered for deploy. Tailwind scans the whole project (the build is rooted there),
34
+ so shared components style correctly without `@source`.
35
+ - `functions`: new `buildMcpWidgets` (in `buildMcp`); `BuildMcpOptions` gains
36
+ `framework` + `staticDir`; widget toolchain resolved from the tenant; new
37
+ `vite-plugin-singlefile` dependency. Falls back to detecting the framework from
38
+ `package.json` when the adapter doesn't pass one.
39
+ - `platform`: `uiTemplates[].htmlPath` is now **optional**; added `entry?` to point
40
+ at a non-conventional source. `htmlPath` remains as a legacy pre-built escape hatch.
41
+ - `adapter-core` / `adapter-sveltekit` / `adapter-react-router`: `buildAndIntegrateMcp`
42
+ forwards the framework id + static dir so widgets build with the right toolchain.
43
+
44
+ Back-compat: apps that still point `htmlPath` at a pre-built widget under `static/`
45
+ keep working unchanged. The runtime is unchanged.
46
+
3
47
  ## 0.11.1
4
48
 
5
49
  ### Patch Changes
package/dist/config.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TransformsConfig } from './transforms-DwCPOVTn.js';
2
- export { a as TransformsPatternSpec } from './transforms-DwCPOVTn.js';
1
+ import { T as TransformsConfig } from './transforms-CbM38kf7.js';
2
+ export { a as TransformsPatternSpec } from './transforms-CbM38kf7.js';
3
3
 
4
4
  /**
5
5
  * @fileoverview Typed schema for `maravilla.config.{ts,yaml,json}` files.
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { ActAsContext, AddCircleMemberOptions, AddRelationOptions, ApiKeyInfo, A
3
3
  export { b as RenClient, a as RenClientOptions, R as RenEvent, g as getOrCreateClientId, r as renFetch, c as storageDelete, s as storageUpload } from './ren-DetHRhCL.js';
4
4
  import { LocalParticipant } from 'livekit-client';
5
5
  export { RegisterPushOptions, RegisterPushResult, offsetBefore, registerPush, unregisterPush } from './push.js';
6
- export { f as DocConvertOpts, D as DocFormat, k as DocInsertQrCodeOpts, j as DocReplaceImagesOpts, m as DocTemplateMergeOpts, e as DocThumbnailOpts, h as DocToHtmlOpts, g as DocToMarkdownOpts, d as DocToPdfOpts, I as ImageFormat, i as ImageRef, o as JobHandle, J as JobStatus, p as JobStatusResponse, M as MediaInfo, O as OcrOpts, Q as QrCodeSpec, l as QrPayload, R as ResizeOpts, c as ThumbnailOpts, b as TranscodeOpts, n as TransformSpec, T as TransformsConfig, a as TransformsPatternSpec, q as TransformsService, V as VideoFormat, r as keyFor, t as transforms } from './transforms-DwCPOVTn.js';
6
+ export { f as DocConvertOpts, D as DocFormat, k as DocInsertQrCodeOpts, j as DocReplaceImagesOpts, m as DocTemplateMergeOpts, e as DocThumbnailOpts, h as DocToHtmlOpts, g as DocToMarkdownOpts, d as DocToPdfOpts, E as ExtractFramesOpts, F as FramesetManifest, I as ImageFormat, i as ImageRef, o as JobHandle, J as JobStatus, p as JobStatusResponse, M as MediaInfo, O as OcrOpts, Q as QrCodeSpec, l as QrPayload, R as ResizeOpts, c as ThumbnailOpts, b as TranscodeOpts, n as TransformSpec, T as TransformsConfig, a as TransformsPatternSpec, q as TransformsService, V as VideoFormat, r as keyFor, t as transforms } from './transforms-CbM38kf7.js';
7
7
 
8
8
  /**
9
9
  * Media service for video/audio room management.
package/dist/index.js CHANGED
@@ -2010,6 +2010,8 @@ function outputExtension(spec) {
2010
2010
  case "transcode":
2011
2011
  return spec.format;
2012
2012
  // 'mp4' | 'webm'
2013
+ case "extract_frames":
2014
+ return "json";
2013
2015
  case "thumbnail":
2014
2016
  case "resize": {
2015
2017
  const fmt = spec.format ?? "jpg";