# feat\(web\): opt-in setting to start new threads in background · PR \#23915 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/23915)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: open

Source repository: Unavailable fork

Source branch: feat/start-in-background-send-setting

Target branch: main

Head commit: 9433d7d7f8b6c40f00e25ef3acfb6d682f795d46

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/23915)

[Commits](https://git.cafe/pingdotgg/t3code/pull/23915/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/23915/diffs?format=markdown)

## Description

---

![Settings → General, before and after](https://github-assets.skylive.world/files/StivenKN/t3code/feat/start-in-background-send-setting/daeaa515793d-settings-compare.png)

![With the setting on, Enter starts the thread in the background and Ctrl+Enter opens it](https://github-assets.skylive.world/files/StivenKN/t3code/feat/start-in-background-send-setting/17bdead70fb9-flow.gif)

With the setting on, Enter starts the new thread in the background and keeps a fresh composer open. `Ctrl+Enter` opens the next thread.

## Problem

In a new thread, a plain send opens the thread. The **Composer: Start in Background** binding (`Mod+Enter`) starts it in the background and keeps a fresh new-thread composer open. A user who starts many threads in a row has no way to make background the default.

## Change

- A new client setting, **Settings → General → Start new threads in background**. It is off by default.
- When the setting is on, a send from a new thread starts it in the background. This covers Enter, the send button, and citation submit-and-send. The Start in Background binding does the opposite and opens the thread.
- `composerDefaultSendIntent` in `apps/web/src/composer-logic.ts` owns the rule. The slash and mention menu check now compares against that default, so Enter still picks a menu item.
- When the send shortcut requires `Mod+Enter`, that chord is also the Start in Background binding. It keeps starting the thread in the background, and `Mod+Alt+Enter` opens it. The settings hint and `docs/user/keybindings.md` name the right chord for each send shortcut.

## Scope and approval

There is no prior issue or discussion. I submit this under the configuration route in CONTRIBUTING.md. Start in Background already exists. The option only swaps which key triggers it in a new thread. It is off by default, and existing threads behave the same with it on. The mobile app has no start-in-background send, so it does not change.

The Keybindings page still names the command "Composer: Start in Background", even when the setting makes it open the thread. I left that label alone.

## Verification

- `vp test run apps/web/src/composer-logic.test.ts` passes 75 tests. The new rows cover each send shortcut with the setting on and off. The setting-on rows fail on the base logic.
- `tsc --noEmit` reports 0 errors for `apps/web` and `packages/contracts`. `vp lint` is clean on the changed files.
- I ran the web dev server with the setting on and Claude Haiku 5.5 in a scratch repo. Typing `/` and pressing Enter ran `/model` and sent nothing. Enter showed "Started in background" and a fresh draft. `Ctrl+Enter` opened the new thread. The send button showed "Started in background".
- I did not check the desktop build, macOS, or the `mod-enter` send shortcut in a real client. Unit tests cover the `mod-enter` cases.

### Review loop
- Reviewer: claude-opus-5-5 (xhigh) via delegate_task, fresh context
- Rounds: 2 of 3 (head 03f9c88915)
- Findings: 4. Fixed 2, rejected 0, skipped nits 1, open 0
  - [Important] apps/web/src/composer-logic.ts:97. With a modifier send shortcut, the send chord Mod+Enter is also the Start in Background binding, so the setting flipped it to foreground and no key started in the background. Fixed in a1a8212c49
  - [Nit] SettingsPanels.tsx:1561, docs/user/keybindings.md. The hint named the wrong chord for modifier send shortcuts. Fixed in a1a8212c49 (remap-aware label skipped)
  - [Nit] SettingsPanels.tsx:1564. macOS showed "⌘ + Alt". Fixed in 03f9c88915
- Pre-existing: with a modifier send shortcut and the setting off, no key starts a new thread in the foreground (Mod+Enter and Mod+Alt+Enter both start it in the background)
- Decisions for you: the Keybindings page still names the command "Composer: Start in Background" while the setting makes it open the thread
- Outcome: clean with open nits

---

Built with Claude Opus 5.5 (`claude-opus-5-5`) in Claude Code, running inside T3 Code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

