Skip to content

RFC: share a chat — /handoff to a new thread and collab guest links, Android first #72

Open

Description

@kvnloo

RFC for the owner's "share a chat" ask. UX wave: #57 · Restaurant RFC: #66

Problem

I want to (a) hand a session off to a new session, and (b) share a session with friends so we work in it together, like oh-my-pi's /handoff, /collab and /share. It has to work from the Android app. Today on Android neither the thread's 3-dot menu nor /handoff in the composer offers anything.

What already exists (upstream main 550c5fa34b; live install 0.1.7-nightly.20261103.4119)

Need Upstream today Android today
Hand off to a new thread thread.fork (latest stable / run / checkpoint) with native or portable context transfer (docs/user/portable-handoffs.md); side chats; merge back "Fork from this response" on a reply only. No /handoff; the composer offers /model, /plan, /default plus provider commands (apps/mobile/src/features/threads/use-composer-command-menu.ts)
Share with a friend, live Guest links (beta, Settings → Labs, needs T3 Connect): one guest, 24 h, watches live, proposes messages the owner sends or dismisses. Web: sidebar/thread menu + command palette Can send/dismiss/stop an existing share (ThreadGuestShareBar.tsx) but cannot create one. The overflow (ThreadHeader.tsx androidHeaderActions) has files, terminal, git, merge back only
Read-only link none none
Collab roles, several people, presence none none
Static snapshot share / export none none

oh-my-pi for reference: /collab (control link) and /collab view (read-only) over a content-blind relay with the key in the URL fragment, many participants, joinable from a terminal or browser; /share uploads a redacted, encrypted snapshot; /handoff [focus] writes a work-focused brief (now compacts in place; earlier versions started a fresh session).

Plan (smallest first)

  1. Android parity + /handoff (prototype in progress, fork PR to follow)
    • Thread overflow (Android) and header options (iOS): Share with guest → existing createGuestShare → native share sheet / copy; clear messages for disabled and connect_unavailable.
    • /handoff [focus] built-in on mobile and web composers, plus Hand off to new thread in the mobile overflow: thread.fork at latest_stable into a new top-level thread, open it, send the focus text as its first message. No new contract.
  2. View-only guest link: a link that streams the thread but has no composer. Smallest step toward collab roles.
  3. Collab roles (viewer / collaborator / owner, several people, presence, driver handoff): upstream Ideas 27708.
  4. Static share/export of a finished thread (Markdown/JSON, secrets redacted): upstream Ideas 11820.
  5. Hand off to another machine (fork into a thread on a different environment).

Experiments

  • E1: scoped unit tests for slash-item building, menu builders and error mapping (RED on 550c5fa34b, GREEN on the branch).
  • E2: Android, real device: preview-variant APK built on fleet-runner from the PR head, against a sandbox server with guest links enabled. Steps: /handoff fix the tests from a thread with replies → new thread opens with the inherited history and runs the focus message; 3-dot → Share with guest → share sheet shows a URL; open it in a browser, send a guest message, approve it on the phone; Stop sharing ends the guest stream. Screenshots + statev2.sqlite rows (thread.fork events, guest share state) as evidence.
  • E3: fork context transfer cost: tokens carried by /handoff into a same-provider native fork vs a cross-provider portable handoff on one real long thread (read-only snapshot of real data).

Upstream venues

  • New Ideas post for Android parity + /handoff + view-only link (link to follow).
  • Collab roles: 27708 (open, 5 votes). Related closed duplicate: 17196.
  • Export/static share: 11820.

Acceptance

  • Android: 3-dot → Share with guest creates a link and opens the share sheet; errors are readable
  • Android + web: /handoff appears in the slash popup and creates and opens the handoff thread
  • Android: 3-dot → Hand off to new thread
  • Docs updated (docs/user/guest-links.md, handoff section)
  • E1–E2 evidence attached; E3 numbers recorded
  • Upstream Ideas post linked here

Activity

  1. kvnloo commented on Nov 3, 2026

    @kvnloo
    OwnerAuthor

    Upstream Ideas post: pingdotgg#30355 · implementation child running on branch feat/share-handoff-android (base upstream-main-550c5fa34b).

  2. kvnloo commented on Nov 3, 2026

    @kvnloo
    OwnerAuthor

    Implementation: draft PR #73 (head f7ea30a). Unit tests, typecheck and lint pass on a clean fleet-runner checkout (run 41719040164). Real-device Android testing (E2/E3) has started; it isn't verified yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions