Repository navigation
Chat replaces Mailbox as the only mail surface - #2
Merged
Merged
Conversation
…nterparties Chat reads the mailbox's own device-local records one counterparty at a time: Sent copies, imported payment links, and the OTC, payment and escrow state Mailbox persisted while it read the chain, grouped by contact. Nothing is fetched or posted from the page, and it is not settlement authority. - The header gains a Chat tab; RFQ, Mailbox, Counterparties and Pay are unchanged. - Left rail: contact name, latest record, unread count, search, and a needs-action filter over open offers, unpaid requests and fillable escrows. - Centre: chronological incoming and outgoing entries with compact record cards (offer, invoice, escrow, payment memo) that disclose the full Mailbox card, plus a composer that sends a body-only encrypted letter through the same policy, helper funding, key lookup, encryption and submit path as Compose. Value actions stay in Mailbox. - Right rail: wallet identity with the RFQ and Mail handoffs, open RFQs (bilateral offers, and workspace RFQs naming the contact as maker), pending payments and escrows; selecting an entry shows its detail in place and can locate it in the conversation. The eager application shell stays inside its recorded 450 kB budget by deferring the proposal-only market view and the dry cross-chain review, two secondary read-only tools; Chat itself loads with its sibling surfaces. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DL5RB43eSUCvsor8uVPfUa
…ad on activation The new journey registers both fixture mailboxes, has Bob save Alice as a counterparty, sends an encrypted letter from the Chat composer through the real localnet helper, confirms the same Sent copy in Mailbox, lets Alice decrypt it and answer with an offer from Mailbox, and checks that Bob's Chat reads that offer as work with its context detail, locate, filter and search. Opening the row that was already auto-selected on load changed no state, so the effect that marks a conversation's records read never ran. An activation counter now makes every explicit choice count, matching Mailbox's rule that the first row on load is not "opened" until someone opens it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DL5RB43eSUCvsor8uVPfUa
Chat now carries everything the Mailbox page did: key setup and unlock (Onboard), chain scans, decrypted letters grouped by counterparty with sealed-sender and "This mailbox" buckets, value actions on the cards (accept, decline, receipt, pay, pay privately with STRK, escrow fill, claim and timeout), the document composer with attachments, drafts, contact and RFQ-history backups with restore, device safety, the /pay handoff, and the Counterparties and RFQ desk handoffs. - Move the Mailbox page's state and handlers into useMailboxDesk and build Chat's rail, timeline, composer, context panel and mailbox tools on it; delete the inbox page, Thread, ConversationList and DraftList. - Attribute a decrypted record by its assigned name, a payload claim, the thread a Sent copy opened, or the deal a memo answers; anything else stays a sealed sender with an inline naming form. - Redirect /mail/inbox (and /mail, /inbox) to /chat; drop the Mailbox nav link; point Pay, Counterparties and the RFQ desk at Chat. - Keep record cards open while the desk acts on them, treat an invoice awaiting note maturity as pending work, and make record terms searchable. - Port the localnet journeys (app20, chat, private-intents) to the Chat UI with shared helpers; update README and docs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DL5RB43eSUCvsor8uVPfUa
- Rail tools: one shrinkable grid column so a long draft address no longer widens every section past the rail; draft rows truncate their recipient and keep Delete in view. - Locating a record or sending a letter scrolls only the timeline; scrollIntoView had dragged the overflow-hidden desk up. - The backup restore action takes the mail sheet's primary style. - Empty-state glyphs are inline SVG icons instead of missing glyphs. - The naming and new-address forms hide the address book's own save control (new AddressBookField bookActions prop) and drop the rail form's oversized label. - A filtered-out desk says "No conversation matches." with a reset instead of claiming the device holds no conversations. - Counterparties header names the Chat handoff. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DL5RB43eSUCvsor8uVPfUa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Chat (
/chat) becomes the one place for encrypted correspondence, and the Mailbox page is retired into it./payhandoff and the Counterparties and RFQ desk handoffs. The Mailbox page's state and handlers moved intouseMailboxDesk, so the value paths are the same code./mail/inbox,/mailand/inboxredirect to/chat; the Mailbox tab is gone; Pay, Counterparties and the RFQ desk point at Chat. The global RFQ workspace is unchanged.Verification
npm run test:all(unit, packages, evidence, release-deny, dependency review) passes.🤖 Generated with Claude Code
https://claude.ai/code/session_01DL5RB43eSUCvsor8uVPfUa
Generated by Claude Code