mesurer-solid 0.2.1-beta.3 → 0.2.1-beta.5

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.
@@ -17,6 +17,7 @@ The installer writes a self-contained skill and injection artifact:
17
17
  .agents/skills/mesurer-ui/
18
18
  ├── SKILL.md
19
19
  └── assets/
20
+ ├── mediabunny-vendor.js
20
21
  └── inject-script.js
21
22
  ```
22
23
 
@@ -24,7 +25,7 @@ The installer writes a self-contained skill and injection artifact:
24
25
 
25
26
  The base inspector includes Select, X-ray, Rulers, Typography, Guides, Distance, and Settings. Color Picker uses application-local host capture when available and otherwise uses a working browser `EyeDropper`.
26
27
 
27
- First-party plugins add Context, Edit, Screenshot, and optional Codex delivery. Edit movement preserves the existing Arrange agent method names for compatibility. The complete public map, including the low-level inspection methods and plugin host, is in [Capabilities](../../docs/CAPABILITIES.md).
28
+ First-party plugins add Context, Edit, Screenshot, Recording, and optional Codex delivery. Recording is a human video-capture workflow with a typed `recording:v1` service; it is not the normal coding-agent evidence channel. Edit movement preserves the existing Arrange agent method names for compatibility. The complete public map, including the low-level inspection methods and plugin host, is in [Capabilities](../../docs/CAPABILITIES.md).
28
29
 
29
30
  For normal coding-agent work, use `window.__MESURER__`. Use `window.__MESURER_INSTANCE__` only when the task requires mounted-instance or plugin-host operations.
30
31
 
@@ -43,7 +44,7 @@ if (hasMesurer) {
43
44
  }
44
45
  ```
45
46
 
46
- If it exists, use that instance. A person may already have selected targets, guides, measurements, annotations, Edit movement intent, text/style intent, or screenshot review state. That state is part of the request.
47
+ If it exists, use that instance. A person may already have selected targets, guides, measurements, annotations, Edit movement intent, text/style intent, screenshot review state, or a Recording preview. That state is part of the request.
47
48
 
48
49
  The injector reuses a connected instance by default. Deliberate replacement requires:
49
50
 
@@ -55,11 +56,11 @@ Do not replace a live instance while consuming human review state.
55
56
 
56
57
  ## Inject only when absent
57
58
 
58
- Use the browser, Electron, WebView, Playwright, CDP, or other evaluation channel the browser controller already provides. With the installed skill, evaluate `.agents/skills/mesurer-ui/assets/inject-script.js`. With the npm package installed, read `mesurer-solid/inject-script`.
59
+ Use the browser, Electron, WebView, Playwright, CDP, or other evaluation channel the browser controller already provides. With the installed skill, evaluate `.agents/skills/mesurer-ui/assets/mediabunny-vendor.js` first and then `.agents/skills/mesurer-ui/assets/inject-script.js`. With the npm package installed, use the sibling `mesurer-solid/mediabunny-vendor` classic asset before `mesurer-solid/inject-script`. Keep the two files separate so MediaBunny remains on its MPL-2.0 distribution boundary.
59
60
 
60
61
  Do not mutate application source or create another browser connection merely to get Mesurer into a page the browser controller can already evaluate.
61
62
 
62
- The optional human Screenshot plugin remains disabled during normal agent injection unless configured before first injection:
63
+ Human Screenshot and Recording UI are separate from the normal agent evidence path. Do not reinject a live instance merely to change either plugin's state. For compatibility, Screenshot can still be enabled before first injection:
63
64
 
64
65
  ```js
65
66
  window.__MESURER_CONFIG__ = { screenshot: true }
package/README.md CHANGED
@@ -56,7 +56,7 @@ All public first-party plugin factories are exported from `mesurer-solid/plugins
56
56
 
57
57
  ```ts
58
58
  import { mountMesurer } from "mesurer-solid"
59
- import { context, edit, layoutGuides, screenshot } from "mesurer-solid/plugins"
59
+ import { context, edit, layoutGuides, recording, screenshot } from "mesurer-solid/plugins"
60
60
 
61
61
  const mesurer = mountMesurer({
62
62
  agent: true,
@@ -65,11 +65,12 @@ const mesurer = mountMesurer({
65
65
  edit(),
66
66
  layoutGuides(),
67
67
  screenshot(),
68
+ recording(),
68
69
  ],
69
70
  })
70
71
  ```
71
72
 
72
- The base inspector includes Select, X-ray, Rulers, Typography, Guides, Distance, Settings, plugin hosting, direct text editing, and the low-level inspection API. The toolbar groups those controls into Select and Edit. Typography stays read-only in Select; Edit owns movement and direct text/style changes. Color Picker uses application-local capture when `window.__MESURER_HOST__.captureScreenshot` is available; other supported browser hosts use an operational `EyeDropper`. A successful sample is copied to the clipboard using `colorPickerClickFormat`.
73
+ The base inspector includes Select, X-ray, Rulers, Typography, Guides, Distance, Settings, plugin hosting, direct text editing, and the low-level inspection API. First-party Recording uses MediaBunny for encoded video, trim, resize, and WebM/MP4 export; its capture adapters only acquire pixels. Electron hosts can expose `window.__MESURER_HOST__.captureRecordingStream` with the package-owned Recording main/preload helpers so capture stays inside the current application renderer. The toolbar groups those controls into Select and Edit. Typography stays read-only in Select; Edit owns movement and direct text/style changes. Color Picker uses application-local capture when `window.__MESURER_HOST__.captureScreenshot` is available; other supported browser hosts use an operational `EyeDropper`. A successful sample is copied to the clipboard using `colorPickerClickFormat`.
73
74
 
74
75
  `mesurer-solid/plugins` also exports the built-in factories for lower-level composition. Normal mounts already include the built-ins. Use `excludeBuiltins` with names such as `"xray"`, `"typography"`, and `"colorPicker"` when a mount should omit one.
75
76
 
@@ -83,10 +84,13 @@ Advanced integrations may supply their own `pluginHost`. That host remains calle
83
84
  | `mesurer-solid/plugins` | All first-party plugin factories and plugin-specific contracts |
84
85
  | `mesurer-solid/core` | Lower-level framework-neutral public contracts |
85
86
  | `mesurer-solid/inject` | Programmatic browser injection |
86
- | `mesurer-solid/inject-script` | Built classic injection artifact |
87
+ | `mesurer-solid/inject-script` | Built classic Mesurer injection artifact; load `mesurer-solid/mediabunny-vendor` first for raw classic evaluation |
88
+ | `mesurer-solid/mediabunny-vendor` | Separate MPL-2.0 MediaBunny classic runtime for raw injection and the extension; the normal ESM entrypoints use an internal relative `dist/mediabunny-runtime.js` so MediaBunny is not installed into consumer dependency graphs |
87
89
  | `mesurer-skill` | Install the portable coding-agent skill |
88
90
  | `mesurer-solid/plugins/codex/bridge` | Native Codex transport and Electron main-process host adapter |
89
91
  | `mesurer-solid/plugins/codex/preload` | Bundle-friendly Electron preload adapter for the Codex host capability |
92
+ | `mesurer-solid/plugins/recording/bridge` | Electron main-process adapter for renderer-bound Recording stream ids |
93
+ | `mesurer-solid/plugins/recording/preload` | Bundle-friendly Electron preload adapter for the Recording host capability |
90
94
 
91
95
  Programmatic injection reuses an existing connected instance by default. Lifecycle-owning integrations can set `recoverDisconnected: true` in `MesurerInjectConfig` to remount Mesurer when page DOM replacement disconnects its host. The option defaults to `false`, so ordinary one-shot injection does not silently reappear after disposal.
92
96
 
@@ -99,6 +103,7 @@ Programmatic injection reuses an existing connected instance by default. Lifecyc
99
103
  - Inspect rendered typography in Select. Edit previews reversible direct copy and style changes.
100
104
  - Use Edit to move selected UI and change direct text, typography, and text color without changing source.
101
105
  - Capture page regions through the optional Screenshot plugin. It selects native host capture, the Chromium extension adapter, or browser display capture internally.
106
+ - Record selected regions through the optional Recording plugin. Browser and extension/native-host APIs only acquire the stream; MediaBunny owns encoding, inspection, trim, resize, and WebM/MP4 export.
102
107
  - Read selection, measurements, guides, annotations, layout, styles, and saved human intent through Context and agent APIs.
103
108
  - Keep saved annotations across same-tab reloads and conservatively rebind them to their original DOM targets; markers, cards, and ownership evidence stay attached through scrolling, repeated-note markers stay local, Add Note remains available while a note is open, and cards/composers occlude Select hover and selection chrome.
104
109
  - Extend the runtime with tools, settings, overlays, commands, hooks, state, and services.
@@ -27,3 +27,12 @@ Mesurer is licensed under the MIT License:
27
27
  > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
28
  > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
29
  > SOFTWARE.
30
+
31
+
32
+ ## MediaBunny
33
+
34
+ Recording uses [MediaBunny](https://github.com/Vanilagy/mediabunny) version 1.59.0 for browser video encoding, media inspection, trimming, resizing, conversion, and WebM/MP4 export.
35
+
36
+ MediaBunny is licensed under the Mozilla Public License 2.0 (MPL-2.0). Mesurer keeps normal npm imports on the MediaBunny package boundary. The classic browser/extension injector ships MediaBunny as a separate `mediabunny-vendor.js` file and includes the dependency's full license text as `mediabunny-LICENSE.txt`.
37
+
38
+ Source for the pinned version is available from the upstream repository at tag/version 1.59.0.