Deep technical write-ups from the BugMojo engineering team.

How to compress rrweb session replays at scale: delta plus gzip/Brotli, storing console and network as S3 objects not JSONB, chunking trade-offs, and the playback read path.

How to fingerprint bug reports from a normalized stack trace, error type, and route, when to merge vs split, and exact vs fuzzy grouping — Sentry/BugSnag prior art.

How BugMojo uploads screenshots to S3 via short-lived presigned URLs, keeps AWS keys off the client, constrains type and size, and verifies the object before linking it to a bug.
How a Manifest V3 Chrome extension captures console logs and network requests with no in-app SDK: MAIN-world injection, fetch/XHR patching, and client-side PII redaction.
Deep dive into the BugMojo MCP server: its 14 JSON-RPC tools, the polymorphic AGENT assignee, and a live tools/call wire transcript with Claude Code.
Model assignee as a (type, id) pair so humans and AI agents are first-class owners across schema, API, and MCP. Prisma and TypeScript code included.
Engineering lessons from shipping a Chrome MV3 bug-capture extension: service worker death, rrweb buffering, MAIN-world hooks, and PII redaction at the edge.
How rrweb records the DOM: full snapshot, incremental mutations via MutationObserver, and replay into a sandboxed iframe — with caveats and privacy hooks.
How PII redaction works in session replay: rrweb block vs mask vs ignore, network sanitization, and why client-side redaction fits GDPR data minimisation.