Skip to content

Chat 2.0.32: name each wait while an attachment sends; never republish on retry - #139

Merged
QuickMythril merged 1 commit into
mainfrom
feat/chat-attach-progress
Sep 16, 2026
Merged

QuickMythril merged 1 commit into
mainfrom
feat/chat-attach-progress

Conversation

@QuickMythril

Copy link
Copy Markdown
Member

Owner report: attaching a 1.9 MB image then sending sat on "Sending" with nothing happening.

Measured on beta.11 + Chat 2.0.31 (seed account, private display): the send is not stuck — Home hashes the bytes ~20 s before its "Allow publish a public qdn resource?" prompt can appear, publishes ~1 min after approval, then the message hits a second prompt ("Allow send message?") and its own proof-of-work. The CHAT tx landed 49 s after the ARBITRARY tx; ≈3 min end to end, byte-identical PNG on QDN — all of it shown as a disabled "Sending" button.

1. Name each wait. sendPhase (preparingapproval) set around every publish call; the Send button reads Preparing / Waiting for approval and a role=status line under the composer says what it's waiting on ("Waiting for you to approve the publish in Qortium Home. Large files take a moment before the prompt appears."). Five strings × 23 locales.

2. Never republish on retry. A dispatched flag; on every non-dispatched exit (throw, refused dispatch because account/chat changed, duplicate in flight) the published link is folded into the draft and the staged file dropped, so Send again re-sends the link without publishing the file twice. Previously the two refused-dispatch returns silently discarded a successful publish (my repro produced exactly that duplicate).

Tests: new ChatComposer.test.tsx (phase label + notice); 924/924; build clean. README; version 2.0.32.

Companion: Home-side "show the publish prompt immediately with a hashing state" (follows).

🤖 Generated with Claude Code

https://claude.ai/code/session_01AGDWY3yhSNv2NKTVUBJQBf

…h on retry

Owner report: a 1.9 MB attach sat on "Sending" with nothing visible. Measured
on beta.11: Home hashes the bytes for ~20 s before its approval prompt can
appear, publishes ~1 min after approval, then the message waits on a second
prompt and its own proof-of-work — ~3 min end to end, all shown as "Sending".

- Send phases: 'preparing' → 'approval' (set around every publish call);
  the composer button reads "Preparing" / "Waiting for approval" and a
  role=status line under the composer explains the wait (five new strings
  ×23 locales).
- Never republish: a `dispatched` flag; on every non-dispatched exit (throw,
  refused dispatch, duplicate in flight) the published link is folded into
  the draft and the staged file dropped, so Send again re-sends the link
  without a second publish. The two refused-dispatch returns that used to
  drop a successful publish now keep it and say so.
- ChatComposer.test.tsx covers the phase label/notice rendering.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGDWY3yhSNv2NKTVUBJQBf
@QuickMythril
QuickMythril merged commit 5bde59f into main Sep 16, 2026
4 checks passed
@QuickMythril
QuickMythril deleted the feat/chat-attach-progress branch September 16, 2026 19:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant