Build · rw-projects

Mobile Chat with Document

Overview
Current Owner
@adam
Stage
Build
Time in Stage
134d
Slack Channel
Stage Timeline
Backlog
2025-05-30 · @dan
Shape
2025-05-30 · @kris
Build
2025-12-03 · @adam
Expedite
Ship
Learn
Done
Stage Documents
motivation.md Motivation

Mobile Chat with Document — Motivation

Reader's Ghostreader on mobile is buried — three taps to access, one-off prompts only, no follow-up questions. Meanwhile, chatting with documents is becoming table stakes for AI-powered reading apps. A native mobile chat experience would reduce access from three taps to one, enable real conversations with documents, and position Readwise/Bookwise on the AI hype wave. The infrastructure also enables future features like Deep Research, recommendations, and improved search.

shape.md Shape Deliverable

Mobile Chat with Document — Shape

Entered Shape: 2025-05-30 · Owner: @kris

Key Decisions

  • Dan initiated mobile-specific design direction (May 2025) with strong opinions: UI should be a text input box (not just a ghost icon), chat should live in a sheet overlay.
  • Kris iterated through 3 rounds of toolbar designs (Aug 2025) — explored ghost icon vs. centered input bar vs. small corner input. Landed on centered input bar for long-form, de-emphasized per Tristan's feedback.
  • "Modern" vs "Classic" toolbar layout setting — users can opt into the new Ghostreader-forward toolbar or keep the old one.
  • Consolidated Ghostreader Figma files into single file (Dec 2025).
  • Final spec completed Jan 2026 with detailed Notion page and Loom walkthrough covering settings, document-level chat, passage/phrase-level chatting, fast triage menu, tablet designs.
  • Reader-first — Bookwise translation done separately (Feb 2026).
  • Native animations and gestures preferred over web view for performance.

Scope

  • Native mobile chat sheet with smooth open/close/resize gestures.
  • New toolbar layout with "ask anything" input box for both short-form and long-form reading views.
  • Fast triage menu (replacing individual triage buttons).
  • Preset prompt suggestions.
  • Integration with Ghostreader backend (hybrid search, document tools).
  • Both iOS and Android, phone and tablet.
  • Bookwise and Reader variants.

Appetite

Medium-large — extended shaping (May 2025 - Jan 2026) due to multiple design rounds and product alignment. Multiple engineers for build (Artem, Adam, Piotr).

build.md Build Deliverable

Mobile Chat with Document — Build (WIP)

This document is underway while the project is in Build. It will be finalized when the stage completes.

Entered Build: 2025-12-03 · Owner: @adam · Initiative: rw-projects

Goal

Ship a native mobile chat-with-document experience in Reader (and Bookwise) with smooth animations, native gestures, and the full Ghostreader tool suite.

What's been done

  • Adam shipped initial mobile chat sheet (Dec 3, reverted, re-landed Dec 5 as internal MVP).
  • Adam added internal link support for mobile chat (Dec 18). Ibai improved PDF link matching.
  • Adam implemented chat sheet states with @gorhom/bottom-sheet (Jan 30).
  • Artem built fully native chat sheet replacement with gestures and animations (Feb 24) — pivot from gorhom to native for better performance.
  • Kris provided design feedback and iterated on spacing, transitions, Bookwise styling.
  • Piotr shipped staff-only Global Ghostreader web preview with hybrid search tool (Mar 23).
  • Piotr wired up X-Ray document search (Mar 18), added list_documents tool, agentic tool abstraction.
  • Piotr built document-level chat panel for web (Mar 30).
  • React Native 0.81 upgrade merged, unblocking Artem's native ghostreader branch.
  • Artem updated artem/native-ghostreader-rn81 branch for Adam (Apr 10).
  • Dedicated #rp-mobile-chat-with-document channel created (Apr 12).
  • Piotr ported MCP2 tools into Global Ghostreader Chat (Apr 14).

What's in progress

  • Adam merging Artem's native sheet work with his own refactored code.
  • Piotr working on V2 single-document chat backend with additional tools.
  • Cold-state UI for chat panel (recent conversations, conversations with this document) — PR #8843 open.

What's not done yet

  • Final polish on open/close/resize animations.
  • Preset prompt UX refinement.
  • Voice-to-text input for chat.
  • Tablet-specific layout.
  • Non-staff rollout.

Open Questions (for next stage)

  • How should GFM elements (tables, code blocks) render in chat responses?
  • Should preset prompts be hideable?
  • How to handle chat when offline (currently shows "chat not connected" popup)?
  • What tools from the CLI/MCP should be included in Ghostreader vs. kept out to manage context size?
Daily Digests 21
2026-04-15 Daily Digest

Mobile Chat with Document — 2026-04-15

Stage: Build | Owner: @adam

Activity

  • Piotr opened PR #8843: adds "Use Global Ghostreader" feature flag and cold-state conversations card to the single-document chat panel.
  • Cold-state UI shows recent conversations and conversations with the current document.
  • V2 conversations now persist their associated document, enabling per-document conversation history.
2026-04-12 Daily Digest

Mobile Chat with Document — 2026-04-12

Stage: Build | Owner: @adam

Activity

  • Tristan created dedicated #rp-mobile-chat-with-document channel.
  • Linked the Artem branch update thread for posterity.
  • Tristan announced dedicated channels for all ghostreader-related projects in #reader-chat-development.
2026-04-10 Daily Digest

Mobile Chat with Document — 2026-04-10

Stage: Build | Owner: @adam

Activity

  • Artem updated the artem/native-ghostreader-rn81 branch — now up to date with master and runnable after RN 0.81 merge.
  • Adam acknowledged but noted he had refactored some of his own code that isn't pushed yet.
2026-03-27 Daily Digest

Mobile Chat with Document — 2026-03-27

Stage: Build | Owner: @adam

Activity

  • Piotr asked about rendering GFM elements (tables, code blocks) in chat responses — display raw markdown or render as GitHub Flavored Markdown?
  • Discussion on which CLI/MCP tools to include in Ghostreader — need balance between tool variety and context size.
  • Tristan suggested biasing towards including all tools except a few (create/update/delete highlights, export).
  • "Add to Doc" button spec clarified: only appears in document context, not global chat.

Key decisions

  • Tool selection for Ghostreader: include most MCP tools, exclude destructive/export operations.
  • "Add to Doc" scoped to document context only.
2026-03-23 Daily Digest

Mobile Chat with Document — 2026-03-23

Stage: Build | Owner: @adam

Activity

  • Piotr shipped staff-only preview of Global Ghostreader with hybrid search tool.
  • Dan's first usage was "pretty damn compelling" — speed was a key value prop.
  • Adam asked Piotr about preferred way to receive UX feedback.
  • Discussion about finding the right fast/cheap/good-at-writing model for chat.
2026-03-16 Daily Digest

Mobile Chat with Document — 2026-03-16

Stage: Build | Owner: @adam

Activity

  • Artem shared native ghostreader branch setup instructions with Adam (artem/native-ghostreader-rn81).
  • Noted the branch was blocked on the RN 0.81 upgrade shipping.
  • Styles not fully correct yet, but core gestures and animations working.
2026-03-04 Daily Digest

Mobile Chat with Document — 2026-03-04

Stage: Build | Owner: @adam

Activity

  • Kris nearly complete with Bookwise Ghostreader styles in Figma.
  • Artem suggested adding voice-to-text feature to chat.
  • Tristan noted Readwise 2.0 is adding voice-to-text, could bring it to chat too.
2026-02-25 Daily Digest

Mobile Chat with Document — 2026-02-25

Stage: Build | Owner: @adam

Activity

  • Kris provided detailed design feedback on the native sheet — resize handles, gap spacing, Bookwise sheet background color.
  • Adam tested on iOS (no animation glitchiness) and Android (close button issues, resize handle glitches).
  • Artem explained animation architecture: multiple animations running simultaneously, width/height transforms avoided in favor of translates for 60fps.
  • Discussion on merging Artem's changes with Adam's ongoing work.
2026-02-24 Daily Digest

Mobile Chat with Document — 2026-02-24

Stage: Build | Owner: @adam

Activity

  • Artem demoed fully native chat sheet with gestures and animations (build 7.99.207). Implemented entirely natively for smooth 60/120fps performance, replacing the @gorhom/bottom-sheet approach.
  • Team provided feedback: close animation feels disjointed, preset prompts feel jarring when they mount.
  • Kris weighed in on native vs RN approach — both viable, native gives smoother transitions.
  • Dan noted speed was compelling on first real usage.
  • Artem opened PR for the native ghostreader implementation.

Key decisions

  • Native sheet approach adopted over React Native @gorhom/bottom-sheet — better animation performance, especially on Android.
2026-02-20 Daily Digest

Mobile Chat with Document — 2026-02-20

Stage: Build | Owner: @adam

Activity

  • Kris began translating Ghostreader design over to Bookwise.
  • Key scoping questions resolved: single-document chat only in Bookwise for now (not global), Ghostreader triggered from menu (not replacing reading view).
  • Artem noted long-form reading UI differences between Reader and Bookwise — agreed to have a Bookwise-only UI variant.

Key decisions

  • Bookwise gets document-level chat only, no global chat initially.
  • Ghostreader invoked from existing menu, not replacing toolbar elements.
2026-01-30 Daily Digest

Mobile Chat with Document — 2026-01-30

Stage: Build | Owner: @adam

Activity

  • Adam merged "Mobile chat sheet states with @gorhom/bottom-sheet" (PR #7982) — implemented sheet states using the gorhom bottom-sheet library.
2026-01-13 Daily Digest

Mobile Chat with Document — 2026-01-13

Stage: Shape | Owner: @kris

Activity

  • Kris updated "Ghostreader V3 Mobile" Notion page with final spec and Loom walkthrough.
  • Full design spec now covers: settings page, document-level chat UI, passage/phrase-level chatting, short-form "ask anything" input, fast triage menu, swipe-to-navigate, long-form input, and tablet-specific designs.
  • Notion spec for "Chat with Document on Mobile" also created with detailed product requirements.

Key decisions

  • Design spec finalized and ready for engineering.
2025-12-18 Daily Digest

Mobile Chat with Document — 2025-12-18

Stage: Build | Owner: @adam

Activity

  • Adam merged "Ghostreader chat: internal links: support mobile & rewrite text emphasis" (PR #7596).
  • Ibai merged PR for better PDF internal link text matching in ghostreader chat (PR #7565, Dec 15).
2025-12-16 Daily Digest

Mobile Chat with Document — 2025-12-16

Stage: Shape | Owner: @kris

Activity

  • Kris consolidated multiple Ghostreader Figma files into a single file covering Chat with a Document (web + mobile) and Global Ghostreader (web + mobile).
2025-12-05 Daily Digest

Mobile Chat with Document — 2025-12-05

Stage: Build | Owner: @adam

Activity

  • Adam merged "Mobile Ghostreader chat: document-level chat internal MVP" (PR #7499) — second attempt after the Dec 3 revert.
2025-12-03 Daily Digest

Mobile Chat with Document — 2025-12-03

Stage: Build | Owner: @adam

Activity

  • Adam merged "Mobile: Add Ghostreader chat sheet" (PR #7468) — first mobile chat implementation.
  • Tristan reverted it same day (PR #7476).
  • Entered Build stage.
2025-08-13 Daily Digest

Mobile Chat with Document — 2025-08-13

Stage: Shape | Owner: @kris

Activity

  • Kris completed Round 1 of Ghostreader V3 mobile designs in Figma — toolbar options for long-form and short-form reading views.
  • Dan and Tristan gave feedback (documented in Notion "Ghostreader V3 Mobile" page).
  • Dan preferred centered message bar, didn't like moving the triple-dot menu.
  • Tristan preferred smaller input box in the left corner, didn't want progress bar moved to top.
  • Kris iterated through Round 2 (exploring multiple toolbar layouts) and Round 3 (final consolidated design).

Key decisions

  • Went with centered ghostreader input bar for long-form, shrunk and lightened per Tristan's feedback.
  • (…) menu moved to right side on both long and short form for consistency.
  • "Modern" vs "Classic" toolbar layout setting introduced — users can opt out.
2025-06-25 Daily Digest

Mobile Chat with Document — 2025-06-25

Stage: Shape | Owner: @kris

Activity

  • Kris finished Ghostreader V3 mobile Figma design and moved to "ready for spec" in Notion.
  • Dan reviewed — no comments on what was shared, but asked about the highlight → Ghostreader annotation bar scenario.
  • Kris added passage-level chatting flow. Noted mobile doesn't need to show passage context in the chat box since the passage is visible in the viewport.
  • Discussion on model picker UI — Tristan wanted it compact (one line, like Notion's input). Kris iterated and proposed using a native menu for model picker.

Key decisions

  • No passage context duplication in chat input on mobile (unlike web) — passage is visible in the viewport.
  • Model picker should be compact, inline with the send button.
2025-06-18 Daily Digest

Mobile Chat with Document — 2025-06-18

Stage: Shape | Owner: @kris

Activity

  • Kris shared three options for Ghostreader toolbar customization in Notion.
2025-06-16 Daily Digest

Mobile Chat with Document — 2025-06-16

Stage: Shape | Owner: @kris

Activity

  • Kris shared design queue update in #kris-dan-tristan — Ghostreader V3 toolbar customization at top priority.
  • Raised key question: what do we want to allow users to customize in the toolbar?
2025-05-30 Daily Digest

Mobile Chat with Document — 2025-05-30

Stage: Shape | Owner: @kris

Activity

  • Dan recorded "Ghostreader v3 Mobile Feedback" Loom with strong opinions on mobile toolbar design.
  • Dan and Tristan aligned on: UI should be a text input box (not just a ghost icon), chat should live in the sheet, text input should be asymmetrically positioned to the right.
  • Tristan gave feedback in Notion — agreed on text input box, wanted it to take less space, wanted to keep tags/notes in the bottom bar.

Key decisions

  • Mobile chat needs a dedicated text input box in the toolbar, not just a ghost icon — discoverability is critical.
  • Chat interactions should live in a sheet, not the right side panel.
  • Start with Reader, worry about Bookwise later.
DateSummary
2026-04-15 Piotr opened PR #8843 for Global Ghostreader feature flag and cold-state conversations card.
2026-04-12 Dedicated #rp-mobile-chat-with-document channel created.
2026-04-10 Artem updated native-ghostreader-rn81 branch after RN 0.81 merge.
2026-03-27 GFM rendering discussion, tool selection for Ghostreader, "Add to Doc" button spec.
2026-03-23 Piotr shipped staff-only Global Ghostreader web preview. Dan's first usage was compelling.
2026-03-16 Artem shared native ghostreader branch setup instructions for Adam.
2026-03-04 Kris finalized Bookwise Ghostreader styles. Voice-to-text idea discussed.
2026-02-25 Kris provided detailed design feedback on native sheet. Adam tested on Android.
2026-02-24 Artem demoed fully native chat sheet — pivot from gorhom to native for better perf.
2026-02-20 Kris began translating Ghostreader design to Bookwise. Scope decisions finalized.
2026-01-30 Adam merged chat sheet states with @gorhom/bottom-sheet (PR #7982).
2026-01-13 Final design spec completed — Notion page with Loom walkthrough and all UI flows.
2025-12-18 Adam + Ibai merged chat internal links and PDF link matching improvements.
2025-12-16 Kris consolidated multiple Ghostreader Figma files into a single file (web + mobile).
2025-12-05 Adam re-landed mobile Ghostreader chat as document-level internal MVP (PR #7499).
2025-12-03 Adam merged first mobile chat sheet (PR #7468), reverted same day. Entered Build.
2025-08-13 Kris completed Rounds 1-3 of mobile toolbar designs. Dan + Tristan feedback, landed on centered input bar.
2025-06-25 Kris finished Ghostreader V3 mobile Figma, moved to "ready for spec." Model picker discussion.
2025-06-18 Kris shared three toolbar customization options in Notion.
2025-06-16 Kris shared design queue — Ghostreader V3 toolbar customization at top priority.
2025-05-30 Dan's "Ghostreader v3 Mobile Feedback" Loom — strong opinions on text input box, sheet-based chat. Tristan aligned.
Linked Documents & Assets