@pixelmatters/markup 1.25.1 → 1.26.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelmatters/markup",
3
- "version": "1.25.1",
3
+ "version": "1.26.0",
4
4
  "description": "Embeddable feedback widget for collecting visual bug reports, screenshots, and comments on live web apps.",
5
5
  "keywords": [
6
6
  "annotation",
@@ -7,7 +7,7 @@ sources:
7
7
  - 'Pixelmatters/markup:packages/widget/src/widget.ts'
8
8
  metadata:
9
9
  library: pixelmatters-markup
10
- library_version: '1.25.1'
10
+ library_version: '1.26.0'
11
11
  ---
12
12
 
13
13
  `@pixelmatters/markup` is a Preact widget that runs inside a shadow DOM and talks to a hosted Convex backend at `https://<deployment>.convex.site`. The host page calls `init({ apiUrl, apiKey })` once at the app root and gets back a `destroy()` function. Everything else lives inside the widget bundle: pin anchoring, threads, mentions, identity, screenshots, real-time updates.
@@ -26,7 +26,7 @@ For a `<script>`-tag drop-in (no bundler / CMS / page-builder), use the inline E
26
26
 
27
27
  ```html
28
28
  <script type="module">
29
- import { init } from 'https://esm.sh/@pixelmatters/markup@1.25.1'
29
+ import { init } from 'https://esm.sh/@pixelmatters/markup@1.26.0'
30
30
  init({ apiUrl: '…', apiKey: '…' })
31
31
  </script>
32
32
  ```
@@ -36,7 +36,7 @@ If the host disallows inline JS, use the auto-init form. `data-markup-widget="tr
36
36
  ```html
37
37
  <script
38
38
  type="module"
39
- src="https://esm.sh/@pixelmatters/markup@1.25.1"
39
+ src="https://esm.sh/@pixelmatters/markup@1.26.0"
40
40
  data-markup-widget="true"
41
41
  data-api-url="…"
42
42
  data-api-key="…"
@@ -151,7 +151,7 @@ Tell users with strict compliance needs to opt into `strictScrub: true` and pin
151
151
 
152
152
  End users can also switch capture off for themselves with **Auto-capture screenshots** in the overflow menu. `screenshots.enabled: false` from the host still wins, and that row renders disabled.
153
153
 
154
- Capture degrades rather than failing outright: an image the browser won't hand over (a third-party avatar served without CORS headers is the usual culprit) comes through blank while the rest of the page captures; an oversized capture is re-encoded down a quality-then-scale ladder to fit the server's 2 MB cap; and if it still can't produce an image the composer says _Screenshot unavailable_ and the comment posts without one.
154
+ Capture degrades rather than failing outright: an image the browser won't hand over (a third-party avatar served without CORS headers is the usual culprit) comes through blank while the rest of the page captures; the raster is capped at 1.5x device pixel ratio and encoded as WebP (JPEG where that isn't supported), then walked down a quality-then-scale ladder until it lands near 400 KB, with the server's 2 MB cap as the hard limit; and if it still can't produce an image the composer says _Screenshot unavailable_ and the comment posts without one.
155
155
 
156
156
  ## Mentions & inbox
157
157
 
@@ -203,7 +203,7 @@ Walk these in order when the widget is misbehaving:
203
203
  - **Don't wrap in a provider component.** `init` is the whole public API.
204
204
  - **Don't call `init` inside a route component.** Mount at the app root once.
205
205
  - **Don't hardcode the API key.** Use env vars so rotations don't require a code change.
206
- - **Don't ship CDN URLs without a version pin.** `@pixelmatters/markup@1.25.1`, not `@pixelmatters/markup`.
206
+ - **Don't ship CDN URLs without a version pin.** `@pixelmatters/markup@1.26.0`, not `@pixelmatters/markup`.
207
207
  - **Don't add `https://*.convex.site` to `connect-src` and assume that's the whole CSP story.** The deployment domain (`<your-deployment>.convex.site`) is what the widget hits over HTTP, and it must be listed explicitly. Live thread updates go to `wss://<your-deployment>.convex.cloud`, an origin the widget derives from `apiUrl`, so `connect-src` needs both. `img-src` needs `blob:`, `data:`, and the host serving profile pictures; `style-src` needs `'unsafe-inline'` because the widget appends its stylesheet as a `<style>` element inside its shadow root. Add `https://esm.sh` to `script-src` only if you took the CDN path.
208
208
 
209
209
  ## Versioning & releases