Menu ▾ ▴

#94 Add a dev-only demo mode for privacy-safe screenshots

closed
nobody
6 days ago
2026-07-15
Anonymous
No

Originally created by: kristofferR

Goal

Add a dev-only way to replace visible Messenger content with deterministic fictional data so Carrier can be captured with its real layout. The resulting screenshot must be shown for manual approval before it is added to the README or otherwise published.

This is a screenshot aid, not a new end-user privacy mode. The existing Hide Names & Avatars feature remains unchanged.

Proposed approach

  • Add a CSP-safe demoify command to the existing dev-only tauri-mcp bridge.
  • Mutate the visible live Messenger UI rather than covering it with a synthetic replica, preserving the authentic layout and styling.
  • Replace visible conversation names and previews, the active-thread header, message bubbles, reply attributions, composer text, read receipts, and other identity-bearing text used in the capture.
  • Replace avatar images and CSS background avatars with deterministic inline SVG initials or abstract gradients. Do not load remote demo assets.
  • Keep a small MutationObserver active while demo mode is enabled so Facebook re-renders are re-sanitized before capture.
  • Return replacement counts from the command so missed selector categories are easier to spot.
  • Exit demo mode by reloading Messenger rather than trying to restore potentially stale React-owned DOM nodes.

Demo conversation

Use one celebrity at most; everyone else should be an ordinary fictional contact.

Weekend Plans

  • Maya Chen: Are we still meeting at six?
  • Albert Einstein: Time is relative, but yes.
  • Theo Martin: Please do not make the reservation relative.
  • Noor Ali: I booked it for 18:00. Absolutely, definitely 18:00.
  • You: Great. Albert, no chalkboard this time.
  • Albert Einstein: No promises.

Other conversation-list contacts and previews should likewise be fictional, natural, and mildly funny without introducing more celebrities.

Capture workflow

  1. Run an MCP/debug build of Carrier with Messenger open.
  2. Enable demo mode and inspect its replacement counts.
  3. Take the window screenshot through tauri-mcp.
  4. Show the screenshot for manual approval at full resolution.
  5. Only after approval, save it as docs/screenshot.png and enable the existing README screenshot block.
  6. Reload Messenger to leave demo mode.

Do not use get_dom as part of this workflow because it returns the unsanitized live DOM.

Acceptance criteria

  • [ ] Demo mode is available only in debug builds with the mcp feature.
  • [ ] The real Messenger layout remains intact.
  • [ ] Visible names, messages, previews, avatars, reply attribution, read receipts, and visible media are replaced or neutralized.
  • [ ] Demo data is deterministic and contains no more than one celebrity.
  • [ ] Messenger DOM churn is handled while demo mode is active.
  • [ ] Cleanup reliably returns to the real page via reload.
  • [ ] The final screenshot is manually approved before any README or documentation update.
  • [ ] Inject bundles and focused tests are updated, and the normal Rust and bun run check gates pass.

Related

Tickets: #127

Discussion

  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: kristofferR

    [!NOTE]
    🤖 Claude Opus 5.5 responding on behalf of Kristoffer

    Closing as not planned. The README screenshot is now taken from the landing page's mock window, which uses fictional people, chats and generated avatars (docs/index.html). A tool that rewrites live Messenger for screenshots isn't needed.

     
  • Anonymous

    Anonymous - 6 days ago

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.