@meet-eleanor/session-recorder
v0.1.5
Published
Development-only screen recorder for uploading local app sessions to Eleanor.
Readme
@meet-eleanor/session-recorder
Development-only browser screen recorder for uploading customer local-app sessions to Eleanor.
The package records a real browser/tab/window video with getDisplayMedia and MediaRecorder, can optionally collect outgoing Mixpanel analytics requests during the recording, uploads the resulting video/webm blob to an Eleanor signed upload URL, then completes the recording upload so Eleanor can create a video note on the product canvas.
Install
npm i -D @meet-eleanor/session-recorder
pnpm add -D @meet-eleanor/session-recorder
bun add -d @meet-eleanor/session-recorderUsage
Use only behind a local-development guard. Eleanor MCP returns the config.
if (import.meta.env.DEV) {
import("@meet-eleanor/session-recorder").then(
({ init_eleanor_session_recorder }) => {
init_eleanor_session_recorder({
product_id: "product-id",
token: "stable-recording-token-from-eleanor",
enabled: true,
});
},
);
}To test recorder messages locally from the browser console:
window.ELEANOR_RECORDER.show_message({
text: "Recording uploaded to Eleanor.",
status: "success",
link: {
label: "View result",
href: "https://meeteleanor.ai/product/product-id/board",
},
});Safety
- No-ops unless
enabledistrue. - No-ops outside
localhost,127.0.0.1, or[::1]. - Always asks for explicit consent before recording.
- Shows a checked-by-default
Include analytics event trackingoption in the start dialog. - When analytics tracking is included, captures outgoing Mixpanel HTTP requests made during the recording through
fetch,sendBeacon, orXMLHttpRequest. - Analytics capture starts only after the user starts recording and is restored when recording stops or is discarded.
- Analytics capture is Mixpanel-only in this version and is bounded so request counts and body snapshots cannot grow without limit.
- Uses the browser's native screen/tab picker.
- Uploads with Eleanor's
product_idand stable recordingtoken; there is no session id in recorder API URLs. - Exposes
window.ELEANOR_RECORDER.show_message(...)in browsers so local developers can test recorder messages from the console withinfo,loading,success, orfailurestates. - Sends
trim_end_at_secondswhen the stop control is used so Eleanor can remove the stop-control interaction during server-side processing. - Shows a loading message with a spinner during upload and a green link to the Eleanor product board after upload completes.
- Shows user-visible upload errors for non-2xx Eleanor responses and
{ success: false }responses. - Auto-stops after five minutes.
Build and package
The package is built as a browser-targeted ESM library. The publish artifact is
a single bundled dist/index.js file plus dist/index.d.ts declarations, so
consumers do not need TypeScript path or extension-resolution support.
npm run typecheck
npm run build
npm run pack:checkprepack builds dist before packaging, and prepublishOnly runs typecheck
plus build before publishing.
