Skip to content

fix(mobile): keep pending messages in the chat timeline - #10449

Merged
juliusmarminge merged 1 commit into
mainfrom
t3code/mobile-pending-timeline-tasks
Sep 7, 2026
Merged

fix(mobile): keep pending messages in the chat timeline#10449
juliusmarminge merged 1 commit into
mainfrom
t3code/mobile-pending-timeline-tasks

Conversation

@juliusmarminge

Copy link
Copy Markdown
Member

Pending mobile sends previously appeared only as a count under the composer, then disappeared from that state before reaching the chat. Render them at the bottom of the timeline with a Pending label and an edit action that restores the message to the composer without losing an existing draft.

Keep the same row identity through delivery, retain acknowledged messages until their timeline echo arrives, and avoid competing scroll and row animations during the handoff. Editing takes ownership before delivery and persists the draft before removing the queued message.

Verification: mobile typecheck and 51 focused tests pass. Verified offline queueing, app reload persistence, edit-to-composer, and reconnect delivery on an iPhone 17e simulator. Targeted lint has warnings but no errors. This changes the React Native client; web, desktop, contracts, and provider adapters are unchanged. Android was not exercised.

Before and after use the same persisted queue, conversation, iOS viewport, and bottom-following state. Before was captured from the actual base implementation.

Before After
Before: pending count below composer After: editable pending message in timeline

Delivery handoff at normal speed:

Pending message becoming a sent message

Edit a pending message back into the composer

Prepared with GPT-6 in Codex.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 7, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a user-facing pending-message timeline and edit workflow, backed by new acknowledgement, draft, and outbox coordination across multiple production components. It also changes existing feed anchoring, insets, and scroll-animation behavior, making the runtime blast radius broader than a straightforward bug fix.

Not approved because:

  • Monthly spending limit reached (workspace setting). Approvability relies on correctness review in order to determine eligibility

Review your spending limits in Billing settings. You can add or adjust custom eligibility rules. Learn more.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.6 KiB 13.6 KiB −20 B (−0.1%) 15.1 KiB
Codex Thread snapshot wire 7.0 KiB 7.0 KiB −1 B (−0.0%) 7.3 KiB
Codex Live turn WebSocket wire 6.6 KiB 6.6 KiB −19 B (−0.3%) 7.8 KiB
Codex Live turn WebSocket decoded 57.1 KiB 57.1 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 10 10 0 (0.0%) 21
Claude Total thread wire 13.6 KiB 13.6 KiB +40 B (+0.3%) 15.1 KiB
Claude Thread snapshot wire 7.0 KiB 7.0 KiB −11 B (−0.2%) 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 6.6 KiB +51 B (+0.8%) 7.8 KiB
Claude Live turn WebSocket decoded 57.8 KiB 57.9 KiB +88 B (+0.1%) 66.4 KiB
Claude Live turn messages 8 10 +2 (+25.0%) 21

Baseline: 52b2bf7 · PR result: 37a68a8 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@juliusmarminge
juliusmarminge merged commit e1230d6 into main Sep 7, 2026
23 checks passed
@juliusmarminge
juliusmarminge deleted the t3code/mobile-pending-timeline-tasks branch September 7, 2026 05:24
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 7, 2026
Upstream pingdotgg#10449 keeps pending messages in the mobile chat timeline, which
overlaps the fork's own queued-message UI. Both are kept rather than one
replacing the other:

- ThreadFeed `renderFeedEntry` takes upstream's `PendingThreadFeedEntry` item
  and the union of both prop lists (upstream's dispatchingMessageId /
  onEditPendingMessage plus the fork's editableMessageId / onEditMessage).
- The row footer keeps the fork's Queued + Cancel controls and its "Edited"
  label, and takes upstream's "Pending" timestamp substitution. The fork's
  explicit `text-neutral-600 dark:text-neutral-400` is kept over upstream's
  `text-adaptive-neutral-600-400` (fork theme divergence).
- Both edit affordances render: the fork's "Edit message" for a sent message
  and upstream's "Edit pending message" for one not yet acknowledged. They are
  different actions on different rows.
- ThreadDetailScreen/ThreadRouteScreen take both prop sets; the keep-both had
  duplicated the `Alert` import, which both sides added.

Verification: every package typechecks; guard script passes; formatting clean.
Mobile suite has 5 failures, all previously documented as pre-existing (4
threadActivity buildThreadFeed cases, thread-outbox attachGoal v4), plus the
known rolldown "Flow is not supported" parse errors in files this merge does
not touch (scripts/, src/lib/, src/widgets/).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 7, 2026
## What's Changed
* fix(mobile): keep pending messages in the chat timeline by @juliusmarminge in pingdotgg/t3code#10449
* fix(mobile): show connection status in the floating pill instead of a second one by @juliusmarminge in pingdotgg/t3code#10440
* fix: use Pierre icons consistently for attachments by @juliusmarminge in pingdotgg/t3code#10475
* feat(mobile): open the thread screen as soon as a new task is submitted by @juliusmarminge in pingdotgg/t3code#10435
* fix(devcontainer): make repository setup work by @saphid in pingdotgg/t3code#7875
* fix(projects): prevent invalid script IDs from crashing threads by @saphid in pingdotgg/t3code#10019
* fix(mobile): hide changed-files navigator and restore refresh in raw diff fallback by @lnieuwenhuis in pingdotgg/t3code#9828
* fix(ios): scroll short source files from blank space by @juliusmarminge in pingdotgg/t3code#10178
* feat(mobile): start a new thread on an existing branch by @StiensWout in pingdotgg/t3code#10359
* fix(mobile): improve font-size slider performance and prevent maximum update depth errors by @bbernag in pingdotgg/t3code#7138
* fix(web): keep composer toolbar controls anchored during transitions by @juliusmarminge in pingdotgg/t3code#10478
* fix(web): resize the floating preview from any edge by @juliusmarminge in pingdotgg/t3code#10467
* fix(mobile): prevent chat from disappearing when scrolling by @juliusmarminge in pingdotgg/t3code#10479
* fix(mobile): smooth composer status pill resizing by @juliusmarminge in pingdotgg/t3code#10484
* fix(mobile): release initial scroll target after dragging by @juliusmarminge in pingdotgg/t3code#10483
* fix(mobile): animate thread lifecycle transitions consistently by @juliusmarminge in pingdotgg/t3code#10487
* fix(mobile): restore assistant message bottom padding by @juliusmarminge in pingdotgg/t3code#10491
* fix(mobile): preserve chat rows when toggling commands by @juliusmarminge in pingdotgg/t3code#10492

## New Contributors
* @bbernag made their first contribution in pingdotgg/t3code#7138

**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260907.1332...v0.0.40-nightly.20260907.1346

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.40-nightly.20260907.1346
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant