@drawbridge/drawbridge-agents 0.1.23 → 0.1.24
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.
|
@@ -116,6 +116,35 @@ skill) so it stops living only in tribal memory.
|
|
|
116
116
|
in the tree. Keep the pins aligned.
|
|
117
117
|
- Shared packages that wrap a stateful SDK (Sentry, redis, mongodb) must direct-dep it at an
|
|
118
118
|
exact pin, never a loose peer range (see `sentry-sdk.md`).
|
|
119
|
+
- `@drawbridge/components` `Video` (≥0.0.62) owns the whole pre-playback story; consumers must NOT
|
|
120
|
+
re-add their own poster layer or mount gate. `poster` renders as an SSR placeholder (opt into
|
|
121
|
+
`priority` for fetchpriority=high when it's the LCP element), `defer` gates only the player —
|
|
122
|
+
never the placeholder, so deferring can't blank the box — and the native poster attribute is
|
|
123
|
+
kept so unmounting the placeholder at player-ready isn't frame-timing-critical. `onError` fires
|
|
124
|
+
exactly once, only after the hls→mp4 retry is exhausted. drawbridge-share's gallery carousel
|
|
125
|
+
depends on BOTH callbacks: it advances slides off `onDuration` OR `onError` registering a
|
|
126
|
+
duration — remove or re-fire either and a broken video stalls the whole carousel (share
|
|
127
|
+
`template-subdomain-gallery.js`, components `video.js`).
|
|
128
|
+
- `@drawbridge/components` `Video` ≥0.0.63 mounts a deferred player when the PLACEHOLDER PAINTS,
|
|
129
|
+
not on a timer: video bytes racing the poster on a throttled link is what delays LCP (measured
|
|
130
|
+
2.8s → 7.5s when mounting at hydration), and a fixed dwell held the poster ~3s even when the
|
|
131
|
+
video was cache-warm.
|
|
132
|
+
|
|
133
|
+
## Video poster frames (api ↔ sync ↔ share ↔ app-web)
|
|
134
|
+
|
|
135
|
+
- `file.frames[0]` MUST be the `00:00:00` frame — the one playback starts on. drawbridge-api
|
|
136
|
+
stamps `posterTimestamp = '00:00:00'` on upload and refuses to regenerate a timestamp that
|
|
137
|
+
already exists; drawbridge-share's gallery hero renders `frames[0]` (NOT `frames[poster]`, which
|
|
138
|
+
is the user's thumbnail — a 14s thumbnail jumps the instant playback begins). app-web reads
|
|
139
|
+
`frames[poster] || frames[0]`. See `drawbridge-docs/reference/media-assets.md`.
|
|
140
|
+
- The poster's `1080x1920` tier resizes with `fit: 'inside'`, never `cover`: the poster and the
|
|
141
|
+
`<video>` share a box and an `object-fit: cover`, whose crop depends on SOURCE aspect vs box
|
|
142
|
+
aspect — cropping the poster to 9:16 against a natively-shaped video makes the hero visibly jump
|
|
143
|
+
on any viewport wider than 9:16 (desktop). Changing this needs a poster regeneration, not just a
|
|
144
|
+
deploy.
|
|
145
|
+
- The poster worker `$set`s `poster : 0` on every run and APPENDS to `frames[]`. Any script that
|
|
146
|
+
generates a frame must snapshot and restore `poster`/`posterTimestamp`, **including on the
|
|
147
|
+
failure path**, or a retry silently discards the user's thumbnail choice.
|
|
119
148
|
|
|
120
149
|
## Import surfaces
|
|
121
150
|
|
package/package.json
CHANGED