Skip to content

Revert "fix(mobile): keep Android markdown icons aligned with text" - #11098

Merged
juliusmarminge merged 1 commit into
mainfrom
revert-11079-t3code/fix-android-text-overlays
Sep 10, 2026
Merged

juliusmarminge merged 1 commit into
mainfrom
revert-11079-t3code/fix-android-text-overlays

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Sep 10, 2026

Copy link
Copy Markdown
Member

Reverts #11079

PR adds a bunch of platform conditionals in a file that already runs on a single platform. I am very confused and haven't seen a proof that this doesn't regress the ios side of thigns so reverting.

Summary by CodeRabbit

  • Bug Fixes

    • Improved text copying so inline image placeholders are removed without altering surrounding authored whitespace.
    • Removed unnecessary spacing before file and external-link icons on Android.
    • Standardized vertical spacing between document blocks for a more consistent reading experience.
  • Documentation

    • Updated composer guidance to remove outdated Android-specific text selection and message-copy instructions.

@juliusmarminge
juliusmarminge merged commit 3836890 into main Sep 10, 2026
19 of 20 checks passed
@juliusmarminge
juliusmarminge deleted the revert-11079-t3code/fix-android-text-overlays branch September 10, 2026 17:35
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 10, 2026
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 105423d5-56dd-47be-afa1-52f17212080c

📥 Commits

Reviewing files that changed from the base of the PR and between 444fd8b and 942b48a.

📒 Files selected for processing (9)
  • apps/mobile/modules/t3-markdown-text/android/build.gradle
  • apps/mobile/modules/t3-markdown-text/android/src/main/java/expo/modules/t3markdowntext/T3MarkdownTextSelectionModule.kt
  • apps/mobile/modules/t3-markdown-text/android/src/test/java/expo/modules/t3markdowntext/MarkdownSelectionCopyTest.kt
  • apps/mobile/modules/t3-markdown-text/src/NativeMarkdownBlock.ios.tsx
  • apps/mobile/modules/t3-markdown-text/src/NativeMarkdownSelectableText.ios.tsx
  • apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.ios.tsx
  • apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts
  • apps/mobile/src/lib/nativeMarkdownText.test.ts
  • docs/user/composer.md

📝 Walkthrough

Walkthrough

The changes simplify Android selection sanitization, remove obsolete Android test setup, inline markdown block spacing, and adjust selectable text rendering for non-rich chunks and icon runs. Related composer documentation is removed.

Changes

Markdown rendering and selection

Layer / File(s) Summary
Android selection sanitization
apps/mobile/modules/t3-markdown-text/android/...
Selection copying now removes only inline-image replacement characters. The obsolete Robolectric test class and test-only Gradle configuration are removed.
Markdown block spacing
apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts, apps/mobile/modules/t3-markdown-text/src/NativeMarkdownBlock.ios.tsx, apps/mobile/src/lib/nativeMarkdownText.test.ts
Block spacing is calculated inline. Document children use uniform spacing and direct rendering. Tests retain spacer-run validation.
Selectable rendering paths
apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.ios.tsx, apps/mobile/modules/t3-markdown-text/src/NativeMarkdownSelectableText.ios.tsx, docs/user/composer.md
Non-rich Android chunks use selectable text rendering. Icon runs no longer receive a leading non-breaking space. Android selection guidance is removed from the composer documentation.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: sunkenintime

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-11079-t3code/fix-android-text-overlays

Comment @coderabbitai help to get the list of available commands.

github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 10, 2026
## What's Changed
* fix(mobile): keep Android markdown icons aligned with text by @SunkenInTime in pingdotgg/t3code#11079
* Revert "fix(mobile): keep Android markdown icons aligned with text" by @juliusmarminge in pingdotgg/t3code#11098


**Full Changelog**: pingdotgg/t3code@v0.0.41-nightly.20260910.1486...v0.0.41-nightly.20260910.1507

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.41-nightly.20260910.1507
aorwall added a commit to aorwall/t3code that referenced this pull request Sep 11, 2026
Merges `upstream/main` at `02297e3db` into the fork, 35 commits from
base
`0f602b337`. Merge commit, not a rebase. Tracker entry:
`docs/fork/upstream-merge-log.md`, 2026-09-11.

`170` files landed against `166` in the upstream range; fork delta `756`
files.
The gap is six named files and reconciles:
`ThreadStatusIndicators.test.tsx` and
`sandboxControl.placement.test.tsx` landed as fork-test fixes amended
into the
merge, the three fork documents landed with it, and
`PreviewLocalServerCard.tsx` was re-deleted per the inventory's
deliberate-deletion list. `duplicate-adds.mjs` and
`resolution-check.mjs` are
clean — nothing landed as one side whole.

## What upstream shipped, and where it stands on Moatless

### Usable as-is

These run on the fork's backend with no further work.

- **A compact right-panel surface menu** (pingdotgg#11111) — the add-surface
launcher
goes from a card grid to keyboard-shortcut rows. This is where the
fork's
sandbox status badge lives, so the badge was re-stated on upstream's row
  rather than replayed; see the conflict notes below.
- **Multiple-linked-PR badges, simplified** (pingdotgg#11104, pingdotgg#11180, pingdotgg#11101) — a
thread
with several links now shows the total linked count coloured by
aggregate
status, instead of naming a primary and counting the extras. This is
**live on
  Moatless**: the backend serves `thread.pullRequests` and reports
`threadPullRequests`, so the badge resolves. It is also a behaviour
change a
user will see, and it is what broke the fork's own badge test — the only
thing
  that caught it.
- **Settled threads recede in the sidebar** (pingdotgg#11101) — a settled row
dims until
  hover or focus. Rides the settlement state Moatless already serves.
- **Environments in the command palette** (pingdotgg#10722) — searching now
returns
  environments beside threads and projects, with a subtitle.
- **A blue/orange diff palette** (pingdotgg#10671) — client-side theme only.
- **Question answers folded into tool activity** (pingdotgg#11014) — the chat
timeline
renders an answer to an agent's async question inside the tool call that
asked
  it, rather than as a separate turn. The client half
(`client-runtime/src/work-log/userInput.ts`,
`shared/src/toolActivity.ts`,
`MessagesTimeline.tsx`) works off data Moatless already sends. The
server half
  is in the third bucket.
- **Unpriced model activity is flagged** (pingdotgg#11021) — usage rows with
tokens and
no price read as unpriced instead of `$0.00`. Shared merge logic over
the
  `server.getUsageSummary` the backend serves.
- **Return to picture-in-picture when the right panel closes** (pingdotgg#11102)
and
**aligned floating-preview corners** (pingdotgg#10915) — both land in the hosted
preview surface and both were taken; the fork's framed-runtime condition
in
`ThreadPreviewMiniPlayer.tsx` still covers the case upstream's `framed`
check
  does not.
- **Collapse a tool call by clicking its expanded label** (pingdotgg#11017),
**provider
update text fitting inside sidebar notices** (pingdotgg#11034), **no seams in the
topbar scroll fade** (pingdotgg#10914), **centered PR unavailable states**
(pingdotgg#11110), **no
  sidebar PR link icon** (pingdotgg#11179).
- **Mobile** (pingdotgg#11128, pingdotgg#11127, pingdotgg#11114, pingdotgg#11115, pingdotgg#11118 / pingdotgg#11079 / reverted
in
pingdotgg#11098, pingdotgg#11113) — shared markdown renderer rename, composer transition
and
final-frame fixes, tablet close controls for files and terminal, and
playback
  preserved across fullscreen transitions.

### Unsupported in Moatless / needs implementation

- **The device hub** — the whole of pingdotgg#10677, pingdotgg#10854, pingdotgg#10855 and pingdotgg#10856:
iOS
simulators and Android emulators a person and an agent can share. Server
side
is `apps/server/src/device/` (`LocalDeviceHost.ts` drives the machine
the
  server runs on, `SshDeviceHost.ts` drives another over SSH,
`DeviceHubProxy.ts` fronts the video and accessibility streams) plus an
MCP
  toolkit at `apps/server/src/mcp/toolkits/device/` that gives the agent
  tap/type/screenshot. Client side is a `device` right-panel surface
  (`apps/web/src/components/device/`) and a Device hosts settings page.

Eight methods plus one stream, all newly declaring
`UnsupportedMethodError` in
  `packages/contracts/src/rpc.ts`: `device.configure`, `device.list`,
  `device.testHost`, `device.open`, `device.close`, `device.shutdown`,
`device.detail`, `device.action`, and the `subscribeDeviceState` push
stream.

  **Nothing gates the surface on a capability.** `ChatView.tsx` passes
`deviceAvailable={activeThreadRef !== null}`, so the launcher offers a
Device
row on every thread. `subscribeDeviceState` never resolves on Moatless,
so the
state stays empty, `onboardingCompleted` is false, and clicking the row
opens
`DeviceSetup` rather than the panel — whose first step, "Enable the
device
hub", calls `device.configure` and shows the refusal. A dead end a
person can
walk into. One additive `FEATURES.deviceHub` read on the two
`deviceAvailable`
props would drop the row instead; **this merge did not add it**, and it
is
recorded as the open work in `docs/fork/gaps.md` under _The device hub_.

Implementing it on the backend is a real question rather than a stub:
the hub
needs Xcode or the Android SDK on whatever host it drives, and its
stream is a
  second connection beside the RPC one.
- **Label and reviewer updates without redundant reloads** (pingdotgg#11117) —
optimistic
  cache writes in `client-runtime/src/state/pullRequests.ts` over
`pullRequests.update`. Rides the `pullRequests.*` group, which Moatless
does
not serve and which the `pullRequests` capability already keeps off, so
it
  changes nothing here until that group lands.
- **Emphasised primary PR actions** (pingdotgg#11105) and **save a PR body with
  Cmd/Ctrl+Enter** (pingdotgg#10660) — same surface, same condition.
- **Zed remote links accepting root paths and Windows servers** (pingdotgg#11044)
— builds
an SSH open target the Electron shell hands to a local editor. That path
needs
  a desktop shell, so it does not reach this fork's browser client;
`shell.openInEditor` remains unsupported. Not a fork target, listed for
  completeness.
- **Marketing** (pingdotgg#11146, pingdotgg#11145) — `apps/marketing` is upstream's own
site;
  inherited and inert here.

### Backend behavior to consider reproducing in Moatless

Server-side fixes upstream made to its own runtime. Moatless implements
the same
contract, so each is worth checking against its own implementation.

- **Claude launch args override the derived permission mode** (pingdotgg#11026,
`apps/server/src/provider/Layers/ClaudeAdapter.ts`). Upstream derives a
permission mode from the thread's settings and then appends the agent's
launch
args; an explicit `--permission-mode` in those args used to be
overridden by
the derived one instead of winning. If Moatless derives a permission
mode the
same way, a user who set the flag explicitly is being ignored in the
same
  place. Cheapest of the three to check.
- **Project identity resolved before legacy PR relinks** (pingdotgg#11045,
`apps/server/src/orchestration/Layers/OrchestrationEngine.ts`). A legacy
pull-request link is relinked to its thread on load; upstream now
resolves the
project's repository identity first, so a relink cannot bind a link to
the
  wrong project when two projects share a branch name. The fork fills
`thread.pullRequests` from a Task's GitHub bindings, so it has the same
ordering question: the binding has to know which project it belongs to
before
  it is attached.
- **Question answers in the published activity payload** (pingdotgg#11014,
`apps/server/src/orchestration/ActivityPayloadProjection.ts`). The
projection
now folds `projectQuestionToolInput` into the activity payload for both
`mcp_tool_call` and plain tool items, which is what lets a client render
the
  answer inside the tool call. Moatless does not report
`agentActivityPublishing`, so nothing reads this today — but if it ever
  publishes activity, this is the shape to publish.

## Conflicts and how they were resolved

11 conflicted files, resolved on the verdicts `preflight.mjs` printed.

Additive on both sides, both kept: `MessagesTimeline.tsx` (imports),
`client-runtime/src/rpc/client.ts` (the fork's four subscription tags
against
upstream's `subscribeDeviceState`), `rightPanelStore.ts` (the fork's
`sandbox`
kind against upstream's `device`), `rpc.ts` and `RpcAuthorization.ts`
(the
fork's thread-server / sandbox / subtasks methods and scopes against
upstream's
eight `device.*` ones), and `ChatView.tsx` (both right-panel arms, both
`onAdd*`
props at the inline and sheet call sites, and upstream's extended
`closePreviewPanel` under the fork's proactive preview-open effect).

`PreviewEmptyState.tsx` and `ThreadPreviewMiniPlayer.tsx` took
upstream's
`DiscoveryList` and `rounded-[inherit]` with the fork's sandbox-read
error line
and framed `hasPreviewSurface` condition re-stated on top.
`PreviewLocalServerCard.tsx` was a modify/delete conflict and was
re-deleted.
`pnpm-lock.yaml` auto-merged this time, so `--theirs` had nothing to do;
it was
reset to `upstream/main` and the fork edges re-derived with `vp i`.

Two findings worth reading:

**A `converged` delta can lose the line it was anchored to.** pingdotgg#11111
rebuilt the
add-surface menu from cards into rows, and the fork's sandbox badge in
`RightPanelTabs.tsx` (7 conflicts, the hard one) had no literal home
left. It
was re-stated on upstream's row — between the label and the `Kbd`,
additively,
no prop threaded and no upstream JSX re-indented — rather than replayed.
The
fork's placement test caught the other half: upstream's rows stopped
rendering
the action `description` at all, in its own Device action too, so the
test was
asserting on markup nobody emits. It now asserts the rendered label.

**A silent auto-merge changed behaviour with no marker, no type error
and no
resolution-check hit.** pingdotgg#11104 and pingdotgg#11180 changed what the multi-PR
badge counts
and hoisted `state` onto both badge shapes with a new `draft` colour.
Only the
fork's `ThreadStatusIndicators.test.tsx` failed, on `+1` against `+2`.
Fixture
gained the now-required `state`; the expectation was updated to
upstream's
semantics.

## Inventory and gaps

- New `pathPolicy` rows for the paths this merge decided without a
cached
  verdict: `right-panel-surfaces`, `client-runtime-rpc-client`,
`thread-status-indicators`, `fork-sandbox-components`.
`inventory-check.mjs`
  is clean.
- New gaps entry: _The device hub_, under **Methods the backend does not
dispatch**. It names the nine union entries holding it open, the missing
  `FEATURES.deviceHub` gate, and what closing it costs.
- Owned-concern sweep: 11 keyword hits, all false positives. Ten are
device-hub
files matching the `client-identity` concern on `host`/`proxy` — that
concern
  is about device *pairing* identity, not simulators — and the eleventh,
  `McpProviderSession.test.ts`, matched on `session`. No concern entry.

## Verification

`verify.mjs`: `duplicate-adds`, `tripwires`, `resolution-check`,
`unsupported-methods`, `fmt:check`, `lint` and `typecheck` pass.

`test` is red on **one** package, and it is not this merge:
`@t3tools/desktop`'s `scripts/browser-secret-native.test.mjs > bundled
libsecret
helper` cannot find `libsecret-1` in this sandbox's pkg-config path. A
missing
system package, not a code defect — 1 file failed of 102, and the
standing entry
is in `docs/fork/gaps.md` under _The desktop suite needs libsecret_.

One thing to know about reading that log: four packages did not finish
under
`vp run -r test` and were each re-run alone — mobile `157` files, `t3`
`315`,
web `389`, relay `30`, all passing. The truncated parallel pass reported
a
failure that does not exist, `shikiReviewHighlighter.test.ts >
initializes
source and snippet highlighting without a warmup`, which passes in the
alone run
and which neither side of this merge touches. The retry lines at the end
of the
log are the result; the parallel output above them is not.

Not reported green. The fork has no CI on pull requests
(`docs/fork/gaps.md`, _Nothing checks a pull request_), so this is the
whole of
the evidence.

---
Moatless task:
https://moatless.soaplabstest.com/tasks/211b4f8f-7de2-46c8-9ded-330d0cda4add
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 16, 2026
## What's Changed
* fix(mobile): show the provider account badge on thread rows by @vitalyiegorov in pingdotgg/t3code#9899
* fix(codex): name the usage limit and its reset instead of relaying "out of credits" by @vitalyiegorov in pingdotgg/t3code#10473
* fix(web): copy selected pull request link from PR page by @maria-rcks in pingdotgg/t3code#10615
* fix(web): keep ref picker steady when opening by @Adamulek123 in pingdotgg/t3code#9472
* fix(web): play pull request videos inline by @maria-rcks in pingdotgg/t3code#10617
* fix(desktop): preserve browser editing shortcuts by @juliusmarminge in pingdotgg/t3code#10621
* fix(web): open pull request markdown links in the panel by @juliusmarminge in pingdotgg/t3code#10623
* fix(mobile): fit the Android splash icon to its circular mask by @juliusmarminge in pingdotgg/t3code#10620
* feat(desktop): add cross-platform window capture by @Bil0000 in pingdotgg/t3code#8103
* fix(web): open proactive panels when entering threads by @maria-rcks in pingdotgg/t3code#10610
* fix(native): wait for the KDE feedback test listener by @juliusmarminge in pingdotgg/t3code#10645
* fix(desktop): resolve local media linked from remote threads by @maria-rcks in pingdotgg/t3code#10619
* fix(web): add bottom padding to project actions header by @flamboh in pingdotgg/t3code#10634
* fix(web): update machines together in auto balance by @maria-rcks in pingdotgg/t3code#10596
* fix(preview): transfer recordings to the agent environment by @maria-rcks in pingdotgg/t3code#10572
* fix(web): navigate markdown images as galleries by @maria-rcks in pingdotgg/t3code#10625
* chore: upgrade to TypeScript 7.0.2 by @juliusmarminge in pingdotgg/t3code#10663
* fix: hide email-bearing account labels in usage limits by @juliusmarminge in pingdotgg/t3code#10668
* fix(web): keep scroll-to-end button close to composer by @Bil0000 in pingdotgg/t3code#10543
* chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 by @juliusmarminge in pingdotgg/t3code#10652
* chore(refs): sync Effect reference to rc.112 by @juliusmarminge in pingdotgg/t3code#10653
* chore(refs): sync Alchemy reference to beta.76 by @juliusmarminge in pingdotgg/t3code#10654
* fix: generate thread titles with the selected model across connections by @Bil0000 in pingdotgg/t3code#10526
* fix(desktop): enable context menus in the browser by @juliusmarminge in pingdotgg/t3code#10670
* fix(desktop): stop generating declarations during bundling by @juliusmarminge in pingdotgg/t3code#10679
* fix(desktop): restore layout control hit targets by @juliusmarminge in pingdotgg/t3code#10673
* feat(chat): attach files to question answers by @shivamhwp in pingdotgg/t3code#9871
* feat(desktop): refresh macOS installer with aurora artwork by @saphid in pingdotgg/t3code#10632
* fix(server): give completed turns a full session idle window by @StiensWout in pingdotgg/t3code#10689
* feat(web): add pull request merge defaults by @Bil0000 in pingdotgg/t3code#8088
* fix(usage): keep account columns aligned across limit rows by @juliusmarminge in pingdotgg/t3code#10690
* fix(web): chat text no longer shows through a 1px gap under composer banners by @vitalyiegorov in pingdotgg/t3code#10635
* refactor(server): classify runtime exports by @juliusmarminge in pingdotgg/t3code#10274
* refactor(server): classify orchestration exports by @juliusmarminge in pingdotgg/t3code#10275
* refactor(server): classify service exports by @juliusmarminge in pingdotgg/t3code#10276
* refactor(server): classify telemetry exports by @juliusmarminge in pingdotgg/t3code#10277
* refactor(server): classify provider exports by @juliusmarminge in pingdotgg/t3code#10278
* refactor(server): classify source control exports by @juliusmarminge in pingdotgg/t3code#10279
* refactor(server): classify source control registry API by @juliusmarminge in pingdotgg/t3code#10280
* refactor(server): classify preview toolkit exports by @juliusmarminge in pingdotgg/t3code#10281
* ci(knip): enforce server exports by @juliusmarminge in pingdotgg/t3code#10282
* feat(web): add previous/next turn navigation in minimap by @UtkarshUsername in pingdotgg/t3code#8531
* fix(web): stop the settings sidebar shifting when switching pages by @t3dotgg in pingdotgg/t3code#10705
* fix(web): copy terminal selection with Ctrl+Insert by @iamshadmantaqi in pingdotgg/t3code#8541
* fix(web): show the same project icon in the command palette as everywhere else by @t3dotgg in pingdotgg/t3code#10712
* fix(web): stop sidebar rows flashing and shifting on click by @t3dotgg in pingdotgg/t3code#10713
* refactor(web): pass the project record to ProjectFavicon so icons cannot drift by @t3dotgg in pingdotgg/t3code#10714
* feat(web): accept file drops into sidebar threads by @UtkarshUsername in pingdotgg/t3code#7892
* fix(mcp): keep preview snapshots usable by the agent and let it save them by @t3dotgg in pingdotgg/t3code#10501
* fix(server): stop Windows terminal processes when closing by @SunkenInTime in pingdotgg/t3code#10771
* feat(mobile): use Android wallpaper colors by @juliusmarminge in pingdotgg/t3code#10691
* feat(mobile): add optional Material You layout by @juliusmarminge in pingdotgg/t3code#10692
* feat(web): show project favicon in new-thread project picker by @gsimone in pingdotgg/t3code#10790
* fix(desktop): use official logo in macOS installer by @t3-code[bot] in pingdotgg/t3code#10819
* fix(web): honor terminal link browser overrides by @UtkarshUsername in pingdotgg/t3code#10060
* fix(desktop): neutral artwork for stable macOS installer by @t3-code[bot] in pingdotgg/t3code#10820
* fix(web): restore text-only draft project title by @juliusmarminge in pingdotgg/t3code#10821
* refactor(web): consolidate setup wizards into shared components by @juliusmarminge in pingdotgg/t3code#10832
* fix(web): stop the bar under the composer popping in after threads load by @t3dotgg in pingdotgg/t3code#10727
* fix(web): keep the composer footer still while thread data loads by @t3dotgg in pingdotgg/t3code#10768
* fix(desktop): defer keyring loading until macOS cookie import by @simplythatguy in pingdotgg/t3code#10667
* fix(relay): share notification policy and prioritize waiting agents by @juliusmarminge in pingdotgg/t3code#10848
* fix(relay): recheck queued iOS alerts and retain fast completions by @juliusmarminge in pingdotgg/t3code#10849
* fix(mobile): respect notification permission when tokens rotate by @juliusmarminge in pingdotgg/t3code#10850
* fix(mobile): tolerate native Headers without getSetCookie by @juliusmarminge in pingdotgg/t3code#10851
* fix(relay): use current APNs registration routing for queued jobs by @juliusmarminge in pingdotgg/t3code#10859
* fix(server): release consumed event replay pages by @Gigioxx in pingdotgg/t3code#10777
* feat(mobile): arrange threads with drag handles by @juliusmarminge in pingdotgg/t3code#10496
* feat(mobile): add Android agent notifications and ongoing activity by @ryanrhughes in pingdotgg/t3code#10416
* fix(mobile): blur glass fallbacks to prevent background text bleed by @juliusmarminge in pingdotgg/t3code#10964
* feat(web): add provider model bulk toggle by @UtkarshUsername in pingdotgg/t3code#10947
* fix(web): allow expanding duplicate tool call commands by @Yash-Singh1 in pingdotgg/t3code#10981
* fix(mobile): prevent Android chat rows overlapping during sync by @SunkenInTime in pingdotgg/t3code#10983
* fix(mobile): prevent text leaking through Android glass by @juliusmarminge in pingdotgg/t3code#10998
* feat(pull-requests): link multiple pull requests to threads by @juliusmarminge in pingdotgg/t3code#10839
* feat(search): find threads by linked pull request by @juliusmarminge in pingdotgg/t3code#10870
* feat(prs): navigate, merge and rebase GitHub stacks by @juliusmarminge in pingdotgg/t3code#10875
* fix(server): preserve recent PR reads across server restarts by @juliusmarminge in pingdotgg/t3code#11007
* feat(web): zoom and pan expanded images by @maria-rcks in pingdotgg/t3code#10869
* fix(ui): use available space for composer model names by @juliusmarminge in pingdotgg/t3code#11002
* fix(web): restore pr list diff counts to the top right by @maria-rcks in pingdotgg/t3code#10609
* fix(web): show message copy buttons on touch devices by @maria-rcks in pingdotgg/t3code#11020
* fix(web): middle-click pastes in the terminal on Linux by @maria-rcks in pingdotgg/t3code#11018
* fix(editors): open remote projects in Zed by @maria-rcks in pingdotgg/t3code#11022
* feat: add blue and orange diff color palette by @maria-rcks in pingdotgg/t3code#10671
* fix(server): resolve project identity before legacy pr relinks by @t3-code[bot] in pingdotgg/t3code#11045
* fix(mobile): keep Android markdown icons aligned with text by @SunkenInTime in pingdotgg/t3code#11079
* Revert "fix(mobile): keep Android markdown icons aligned with text" by @juliusmarminge in pingdotgg/t3code#11098
* fix(ui): simplify multiple linked pull request badges by @maria-rcks in pingdotgg/t3code#11104
* fix(preview): return to pip when closing the right panel by @maria-rcks in pingdotgg/t3code#11102
* fix: quiet settled threads and simplify PR badges by @juliusmarminge in pingdotgg/t3code#11101
* fix(web): emphasize primary pull request actions by @juliusmarminge in pingdotgg/t3code#11105
* fix(web): prevent seams in the topbar scroll fade by @caezium in pingdotgg/t3code#10914
* fix(web): fit provider update text inside sidebar notices by @MatthewFeroz in pingdotgg/t3code#11034
* fix(web): align floating browser preview corners by @caezium in pingdotgg/t3code#10915
* fix(web): save PR body edits with Cmd/Ctrl+Enter by @flamboh in pingdotgg/t3code#10660
* fix(web): collapse a tool call by clicking its expanded label by @maria-rcks in pingdotgg/t3code#11017
* feat(devices): add simulator and emulator support by @juliusmarminge in pingdotgg/t3code#10677
* feat(devices): scope targets and sessions to their hosts by @juliusmarminge in pingdotgg/t3code#10854
* feat(devices): target concurrent agent sessions across hosts by @juliusmarminge in pingdotgg/t3code#10855
* feat(devices): connect simulator hosts over SSH by @juliusmarminge in pingdotgg/t3code#10856
* feat(web): use a compact right-panel surface menu by @maria-rcks in pingdotgg/t3code#11111
* fix(mobile): keep Android markdown icons aligned by @none23 in pingdotgg/t3code#11118
* fix(mobile): add close controls to tablet files and terminal by @juliusmarminge in pingdotgg/t3code#11115
* fix(mobile): preserve the final composer animation frame by @juliusmarminge in pingdotgg/t3code#11114
* fix(mobile): keep composer transitions aligned by @juliusmarminge in pingdotgg/t3code#11127
* refactor(mobile): name shared markdown renderer without iOS suffixes by @SunkenInTime in pingdotgg/t3code#11128
* fix(media): preserve playback during fullscreen transitions by @maria-rcks in pingdotgg/t3code#11113
* fix(marketing): redirect /app to app.t3.codes by @t3-code[bot] in pingdotgg/t3code#11145
* chore(marketing): update to 300k users and 22k stars by @t3-code[bot] in pingdotgg/t3code#11146
* feat(command-palette): show environments in search results by @Cyberlane in pingdotgg/t3code#10722
* fix(pr): update labels and reviewers without redundant reloads by @maria-rcks in pingdotgg/t3code#11117
* fix(chat): fold question answers into tool activity by @maria-rcks in pingdotgg/t3code#11014
* fix(usage): flag unpriced model activity instead of showing $0.00 by @maria-rcks in pingdotgg/t3code#11021
* fix(server): let Claude launch args override the derived permission mode by @maria-rcks in pingdotgg/t3code#11026
* fix(editors): accept root paths and Windows servers in Zed remote links by @maria-rcks in pingdotgg/t3code#11044
* fix(web): center pull request unavailable states by @maria-rcks in pingdotgg/t3code#11110
* fix(web): remove sidebar pull request link icon by @maria-rcks in pingdotgg/t3code#11179
* fix(ui): color linked pr counts by aggregate status by @maria-rcks in pingdotgg/t3code#11180
* fix(preview): render website favicons for browser tool activity by @maria-rcks in pingdotgg/t3code#11032
* fix(web): simplify pull request summary sections by @maria-rcks in pingdotgg/t3code#10612
* fix(web): preserve drafts when compacting context by @maria-rcks in pingdotgg/t3code#11103
* fix(server): queue messages during context compaction by @maria-rcks in pingdotgg/t3code#11107
* perf(web): format minimap previews only when opened by @juliusmarminge in pingdotgg/t3code#11181
* perf(web): reuse completed Markdown prefixes while streaming by @juliusmarminge in pingdotgg/t3code#11193
* perf(web): resume syntax highlighting from completed lines by @juliusmarminge in pingdotgg/t3code#11196
* perf(web): preserve completed code-line DOM while streaming by @juliusmarminge in pingdotgg/t3code#11198
* perf(web): huge-thread switch no longer blanks the chat pane by @juliusmarminge in pingdotgg/t3code#11169
* fix(web): show platform file manager icons in Open menu by @Bil0000 in pingdotgg/t3code#11228
* fix(server): detect file renames in review diffs by @jakeleventhal in pingdotgg/t3code#8086
* fix(cli): pin shared Effect dependency for npm installs by @jakeleventhal in pingdotgg/t3code#11240
* fix(mobile): prevent Hermes crashes when opening threads by @jakeleventhal in pingdotgg/t3code#11233
* feat(web): open Usage on the Limits tab by default by @juliusmarminge in pingdotgg/t3code#11261
* perf(web): avoid scanning chat history for sidebar backgrounds by @juliusmarminge in pingdotgg/t3code#11206
* perf(mobile): reuse completed code lines while streaming by @juliusmarminge in pingdotgg/t3code#11211
* perf(client): reduce remote request and message sync overhead by @Bil0000 in pingdotgg/t3code#11029
* fix(web): refresh usage limit countdowns without switching tabs by @t3-code[bot] in pingdotgg/t3code#11187
* fix(client-runtime): typecheck device hub ticket request on main by @juliusmarminge in pingdotgg/t3code#11304
* feat(settings): add per-project overrides for scopable server settings by @juliusmarminge in pingdotgg/t3code#11176
* feat(web): pick settings environment and project as two selects by @juliusmarminge in pingdotgg/t3code#10636
* feat(settings): edit any scopable setting as a project override by @juliusmarminge in pingdotgg/t3code#10639
* feat(web): float device streams over chat by @juliusmarminge in pingdotgg/t3code#11285
* fix(web): floating preview can use the margins beside the composer by @juliusmarminge in pingdotgg/t3code#11290
* perf(client-runtime): speed up message sync on desktop and mobile by @Bil0000 in pingdotgg/t3code#11302
* fix(web): use the configured panel shortcut on the PR page by @Bil0000 in pingdotgg/t3code#11292
* feat(web): add PR page selections to new draft threads by @Bil0000 in pingdotgg/t3code#11296
* feat(web): show recording status on floating previews by @maria-rcks in pingdotgg/t3code#11312
* fix(desktop): hold-to-quit no longer strands the quit by @maria-rcks in pingdotgg/t3code#11016
* feat(web): mark projects on another machine in project pickers by @maria-rcks in pingdotgg/t3code#11323
* fix(web): show pointer cursors on pull request controls by @shivamhwp in pingdotgg/t3code#11283
* fix(web): themed panel toggles show their disabled state by @flamboh in pingdotgg/t3code#11188
* fix(web): use branch wording in commit dialogs by @shivamhwp in pingdotgg/t3code#11281
* fix(mobile): keep Android file icons on the line with wrapped filenames by @SunkenInTime in pingdotgg/t3code#11234
* fix(codex): preserve qualified model ids in selection and generation by @maria-rcks in pingdotgg/t3code#9921
* feat(desktop): share macOS permission onboarding by @juliusmarminge in pingdotgg/t3code#11289
* fix(test): drain worker broadcasts before restoring browser globals by @maria-rcks in pingdotgg/t3code#11349
* fix(web): disable linked pull requests when none are linked by @maria-rcks in pingdotgg/t3code#11348
* fix(models): default to astra medium and fable 5.1 medium by @maria-rcks in pingdotgg/t3code#11347
* fix(web): align provider settings with shared settings rows by @maria-rcks in pingdotgg/t3code#10571
* feat(settings): configure default permissions for new threads by @maria-rcks in pingdotgg/t3code#11346
* fix: restore provider history and prompts when rewinding by @maria-rcks in pingdotgg/t3code#11338
* fix(web): keep comment actions visible when pr comments are folded by @maria-rcks in pingdotgg/t3code#11357
* feat: rewind conversations while keeping file changes by @maria-rcks in pingdotgg/t3code#11358
* fix(web): keep sidebar scroll position when pinning threads by @saphid in pingdotgg/t3code#10757
* fix(web): remove pr description reactions by @maria-rcks in pingdotgg/t3code#11361
* fix(desktop): keep preview keystrokes out of the composer by @maria-rcks in pingdotgg/t3code#11354
* feat(settings): add open source license notices by @juliusmarminge in pingdotgg/t3code#8962
* perf(client): reduce repeated sorting and date formatting by @Bil0000 in pingdotgg/t3code#11019
* feat: add inline file previews and attachment chips across surfaces by @chrisdeeming in pingdotgg/t3code#11265
* fix(desktop): preserve long offscreen text in SnapShots by @Bil0000 in pingdotgg/t3code#11250
* perf(server): avoid workspace scans when loading pull requests by @Bil0000 in pingdotgg/t3code#11299
* feat(sidebar): fold the project scope into the search row by @maria-rcks in pingdotgg/t3code#11315
* fix(mobile): pin expo-audio so the release smoke patch stays in use by @ipanasenko in pingdotgg/t3code#11426
* fix(web): preserve snapshot preview size in sent messages by @Bil0000 in pingdotgg/t3code#11429
* fix(mobile): render photo library picks to a bounded JPEG off the JS thread by @Nelglor in pingdotgg/t3code#11440
* fix(desktop): keep the native preview User-Agent so Turnstile passes by @akriaueno in pingdotgg/t3code#7110
* fix(chat): keep user input outside collapsed work by @maria-rcks in pingdotgg/t3code#11363
* fix(web): preserve preview focus on window return by @Lucenx9 in pingdotgg/t3code#11444
* fix(web): complete thread status icons and keep input threads prominent by @maria-rcks in pingdotgg/t3code#11461
* feat(web): tint image chips with their average color by @maria-rcks in pingdotgg/t3code#11468
* fix(web): move viewer controls outside media and restore arrow navigation by @maria-rcks in pingdotgg/t3code#11470
* fix(web): tighten sidebar search and footer spacing by @maria-rcks in pingdotgg/t3code#11466
* feat(web): subagent spawns render as an expandable work row by @maria-rcks in pingdotgg/t3code#11433
* fix(web): keep subagent rows visible under folded turns by @maria-rcks in pingdotgg/t3code#11474
* fix(usage): make unavailable account limits more visible by @dominic-r in pingdotgg/t3code#10601
* fix(desktop): bound backend shutdown wait during quit by @ishaanko in pingdotgg/t3code#7599
* feat(web): choose the default diff file state by @maria-rcks in pingdotgg/t3code#11484
* feat(composer): fold large pastes into text attachments by @chrisdeeming in pingdotgg/t3code#11442
* feat(web): expose each chat message as a heading for screen readers by @Leos-Khai in pingdotgg/t3code#11199
* fix(usage): respect provider account homes by @maria-rcks in pingdotgg/t3code#11485
* feat(web): switch saved environments off instead of removing them by @t3dotgg in pingdotgg/t3code#11478
* fix(mobile): stop crashing on launch when a thread has a PR stack by @juliusmarminge in pingdotgg/t3code#11486
* fix(mobile): stop alerting that shared content vanished after sending it by @juliusmarminge in pingdotgg/t3code#11487
* feat(web): add opt-in thread notifications and sounds by @maria-rcks in pingdotgg/t3code#11481
* fix(server): open Cursor links in classic IDE mode by @Yash-Singh1 in pingdotgg/t3code#11498
* feat(source-control): support Forgejo and Gitea with fj and tea by @maria-rcks in pingdotgg/t3code#11436
* fix(web): match draft row heights to thread rows by @Yash-Singh1 in pingdotgg/t3code#11512
* fix(grok): emit task lifecycle for monitors and background shells by @Svyk in pingdotgg/t3code#9139
* fix(web): unify panel resizing and retain final drag width by @maria-rcks in pingdotgg/t3code#11529
* fix(web): hide back button for single linked pull requests by @maria-rcks in pingdotgg/t3code#11520
* fix(files): browse ignored files and load folders on demand by @maria-rcks in pingdotgg/t3code#11527
* feat(web): float the pull request comment composer by @maria-rcks in pingdotgg/t3code#11531
* fix(mobile): stop crashing on launch before the shell snapshot arrives by @juliusmarminge in pingdotgg/t3code#11537
* feat(github): route pull request operations across matching accounts by @maria-rcks in pingdotgg/t3code#11367
* chore(mobile): enable noUncheckedIndexedAccess and noImplicitOverride by @juliusmarminge in pingdotgg/t3code#11538
* feat(mobile): show startup crashes in Settings → Diagnostics by @juliusmarminge in pingdotgg/t3code#11540
* feat(mobile): add pooled subscription usage widgets by @MatthewFeroz in pingdotgg/t3code#11506
* feat(web): add provider selector to pull request toolbar by @maria-rcks in pingdotgg/t3code#11524
* fix(web): offer recovery from missing pages by @shivamhwp in pingdotgg/t3code#11314
* fix(web): retry startup after the server recovers by @shivamhwp in pingdotgg/t3code#11291
* feat(web): add optional compact sidebar rail by @maria-rcks in pingdotgg/t3code#11525
* feat(web): add opt-in in-app thread notifications by @Bil0000 in pingdotgg/t3code#11570
* feat(web): organize connections by environment by @maria-rcks in pingdotgg/t3code#11542
* fix(web): keep sparse sidebar shelves at the bottom by @maria-rcks in pingdotgg/t3code#11595
* fix(cursor): preserve internal agent errors without transport labels by @shivamhwp in pingdotgg/t3code#11365
* fix(server): fall back when new worktrees are unavailable by @tris203 in pingdotgg/t3code#6208
* feat: badge background thread notifications on desktop and web by @Bil0000 in pingdotgg/t3code#11569
* feat(web): add compact thread list mode by @saphid in pingdotgg/t3code#9417
* feat(web): refine compact thread row badges by @maria-rcks in pingdotgg/t3code#11644
* feat(web): show the linked pull request in the compact sidebar rail by @maria-rcks in pingdotgg/t3code#11652
* fix(mobile): adopt system glass for Live Activities by @juliusmarminge in pingdotgg/t3code#11604
* fix(web): separate expanded tool output from adjacent hover highlights by @dominic-r in pingdotgg/t3code#11658
* fix(web): apply device settings to selected environments by @juliusmarminge in pingdotgg/t3code#11541
* feat(server): show finished paragraphs and code blocks while the response streams by @t3dotgg in pingdotgg/t3code#11062
* fix(web): disconnect offline servers from threads by @t3dotgg in pingdotgg/t3code#11671
* feat(web): flatten the connections page into one environments list by @t3dotgg in pingdotgg/t3code#11672
* fix(mobile): keep usage widget rows consistently sized by @juliusmarminge in pingdotgg/t3code#11669
* feat(server): add reusable auth token for dev worktrees by @t3dotgg in pingdotgg/t3code#8606
* feat(settings): choose how responses stream, with a warning on legacy token mode by @t3dotgg in pingdotgg/t3code#11678
* revert(web): remove the compact sidebar by @maria-rcks in pingdotgg/t3code#11685
* build(desktop): bundle the main process and stage only its native externals by @juliusmarminge in pingdotgg/t3code#11410
* build(server): make the CLI bundle loadable as a Node single-executable by @juliusmarminge in pingdotgg/t3code#11316
* ci(release): build, sign, and publish self-contained CLI archives by @juliusmarminge in pingdotgg/t3code#11317
* feat(server): install preview runtimes from release archives by @juliusmarminge in pingdotgg/t3code#11318
* feat(ssh): run preview builds on remotes from the release archive by @juliusmarminge in pingdotgg/t3code#11319
* feat(cli): add t3 update for self-contained installs by @juliusmarminge in pingdotgg/t3code#11451
* feat(server): manage runtimes as release archives only, never from npm by @juliusmarminge in pingdotgg/t3code#11510
* feat(desktop): run the WSL backend from the Linux CLI archive by @juliusmarminge in pingdotgg/t3code#11511
* ci(release): build CLI archives for five targets, each on its own architecture by @juliusmarminge in pingdotgg/t3code#11605
* ci(release): build the JS bundle once and run every platform and architecture in parallel by @juliusmarminge in pingdotgg/t3code#11606
* feat(release): publish npx t3 as a launcher over per-platform executable packages by @juliusmarminge in pingdotgg/t3code#11607
* feat(cli): add t3 uninstall for self-contained installs by @juliusmarminge in pingdotgg/t3code#11659
* feat(web): show each worktree setup step and let users cancel it by @t3dotgg in pingdotgg/t3code#11372
* fix(server): skip device hosts that resolve to the local machine by @juliusmarminge in pingdotgg/t3code#11698
* fix(web): test device hosts across selected environments by @juliusmarminge in pingdotgg/t3code#11699
* feat(desktop): allow disabling the local environment by @juliusmarminge in pingdotgg/t3code#9194
* feat(cli): add t3 service restart and make t3 update repoint the service eagerly by @juliusmarminge in pingdotgg/t3code#11702
* docs(claude): clarify OpenRouter model selection by @shivamhwp in pingdotgg/t3code#11369
* fix(web): keep large image previews from stalling composer typing by @shivamhwp in pingdotgg/t3code#11324
* fix(server): avoid extra round trips for terminal output by @Bil0000 in pingdotgg/t3code#11407
* fix(web): remember panel width for each thread by @shivamhwp in pingdotgg/t3code#11310
* fix(release): preserve updates from npm-based services by @t3dotgg in pingdotgg/t3code#11732
* fix(desktop): restore Node discovery for WSL providers by @akj in pingdotgg/t3code#11741
* fix(release): stop npm from pruning the platform packages' shipped node_modules by @juliusmarminge in pingdotgg/t3code#11750
* fix(server): parse CLI versions with a "v" prefix by @NikodemNowak in pingdotgg/t3code#11738
* fix(desktop): keep preview releases out of the nightly update changelog by @juliusmarminge in pingdotgg/t3code#11753
* fix(web): open video attachment thumbnails in the viewer by @chrisdeeming in pingdotgg/t3code#11734
* Allow setting T3CODE_OTLP_HEADERS by @bahlo in pingdotgg/t3code#11218
* fix(web): use consistent PR section toggles by @Bil0000 in pingdotgg/t3code#11763
* Add T3CODE_OTLP_PROTOCOL to allow protobuf protocol by @bahlo in pingdotgg/t3code#11224
* feat(web): add composer and PR number shortcuts by @Bil0000 in pingdotgg/t3code#11615
* chore(server): keep the legacy service entry point to the npm package only by @juliusmarminge in pingdotgg/t3code#11770
* fix(web): use project monograms for automatic icon fallbacks by @ShpetimA in pingdotgg/t3code#11572
* feat(web): clone repositories in the background instead of holding the palette open by @juliusmarminge in pingdotgg/t3code#11762
* feat(mobile): clone repositories in the background and gate the draft on the clone by @juliusmarminge in pingdotgg/t3code#11774
* fix(mobile): scale inline pills with Dynamic Type by @juliusmarminge in pingdotgg/t3code#11792
* chore(deps): bump the Clerk stack to current releases by @juliusmarminge in pingdotgg/t3code#11764
* feat(mobile): add a T3 Connect page to the Clerk profile by @juliusmarminge in pingdotgg/t3code#11765
* feat(server): use Clerk's device authorization grant for headless connect login by @juliusmarminge in pingdotgg/t3code#11794
* fix(server): stop refreshing providers on every config subscription by @juliusmarminge in pingdotgg/t3code#11811
* fix(web): align monogram project icons in menus by @juliusmarminge in pingdotgg/t3code#11806
* ci(desktop): sign fork PR macOS previews without exposing signing secrets by @juliusmarminge in pingdotgg/t3code#11760
* fix(web): make copy PR link discoverable in keybindings by @Bil0000 in pingdotgg/t3code#11826
* feat: add custom snooze dates and durations by @juliusmarminge in pingdotgg/t3code#11800
* feat(mobile): redesign the Android agent activity card by @SunkenInTime in pingdotgg/t3code#11645
* feat(web): inline worktree setup rows and async setup scripts by @juliusmarminge in pingdotgg/t3code#11832
* fix(server): stream tight list items one at a time in paragraph mode by @juliusmarminge in pingdotgg/t3code#11833
* fix(server): keep thread titles tied to user intent by @t3dotgg in pingdotgg/t3code#10720
* refactor(server): resolve title links through source control providers by @juliusmarminge in pingdotgg/t3code#11844
* refactor(server): align title generation with Effect conventions by @juliusmarminge in pingdotgg/t3code#11847
* fix(server): disable color probes in worktree setup by @juliusmarminge in pingdotgg/t3code#11843
* fix: keep worktree setup visible after leaving and reopening the thread by @t3dotgg in pingdotgg/t3code#11836
* fix(desktop): prevent startup from running twice by @juliusmarminge in pingdotgg/t3code#11857
* feat(mobile): add iPad keyboard shortcuts and command palette by @bmdavis419 in pingdotgg/t3code#11679
* feat(server): persist the worktree setup send and progress on the thread by @juliusmarminge in pingdotgg/t3code#11852
* feat(web): queue messages sent client-side while the agent is working by @t3dotgg in pingdotgg/t3code#11673
* fix(server): bound Git process bursts to keep connections responsive by @Bil0000 in pingdotgg/t3code#11405
* perf(server): speed up worktree fetch and checkout by @Bil0000 in pingdotgg/t3code#11633
* fix(client): show thread state changes before remote replies by @Bil0000 in pingdotgg/t3code#11408
* fix(mobile): restrict row highlighting to pointer input by @juliusmarminge in pingdotgg/t3code#11863
* fix(mobile): ensure a compatible native client before verification by @juliusmarminge in pingdotgg/t3code#11862
* fix(web): restore composer focus after closing option menus by @Bil0000 in pingdotgg/t3code#11884
* fix(web): center refresh devices in the empty state by @shivamhwp in pingdotgg/t3code#11808
* fix(mobile): match command palette colors to sheets by @juliusmarminge in pingdotgg/t3code#11861
* fix(web): keep the composer ready during background worktree setup by @Bil0000 in pingdotgg/t3code#11883
* fix(desktop): keep the sidebar brand and window buttons aligned by @shivamhwp in pingdotgg/t3code#11906
* fix(web): drop the filled well behind the sidebar header buttons by @flamboh in pingdotgg/t3code#11660
* fix(server): explain how to configure a missing Codex executable by @shivamhwp in pingdotgg/t3code#11345
* fix(mobile): add missing thread rename action by @Michel-Liao in pingdotgg/t3code#11503
* fix(mobile): wait for thread deep link hydration by @Michel-Liao in pingdotgg/t3code#11502
* fix(mobile): keep iOS chat rows aligned after measurement by @dominic-r in pingdotgg/t3code#11813
* feat: add customizable soft-tint project monograms by @eimexdev in pingdotgg/t3code#11845
* fix: multiple UI and server bug fixes by @kridaydave in pingdotgg/t3code#11593
* fix(server): release preview hosts after unanswered requests by @yashranaway in pingdotgg/t3code#11381
* Preserve diff tree order and collapsed folders by @juliusmarminge in pingdotgg/t3code#11931
* fix(client-runtime): preserve cached turns and older-page loading by @lnieuwenhuis in pingdotgg/t3code#8309
* chore(deps): bump Clerk stack to latest stable versions by @juliusmarminge in pingdotgg/t3code#11956
* fix(mobile): update Reanimated and Worklets by @juliusmarminge in pingdotgg/t3code#11957
* fix(desktop): paste as text no longer doubles the pasted text by @TonybynMp4 in pingdotgg/t3code#11958
* feat(web): choose queue or steer for follow-up messages by @Bil0000 in pingdotgg/t3code#11964

## New Contributors
* @iamshadmantaqi made their first contribution in pingdotgg/t3code#8541
* @simplythatguy made their first contribution in pingdotgg/t3code#10667
* @Cyberlane made their first contribution in pingdotgg/t3code#10722
* @Nelglor made their first contribution in pingdotgg/t3code#11440
* @akriaueno made their first contribution in pingdotgg/t3code#7110
* @Leos-Khai made their first contribution in pingdotgg/t3code#11199
* @Svyk made their first contribution in pingdotgg/t3code#9139
* @NikodemNowak made their first contribution in pingdotgg/t3code#11738
* @bahlo made their first contribution in pingdotgg/t3code#11218
* @TonybynMp4 made their first contribution in pingdotgg/t3code#11958

**Full Changelog**: pingdotgg/t3code@v0.0.40...v0.0.42

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

Labels

📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. size:M 30-99 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