Skip to content

[Bug]: Mobile new-task composer has no /, $ or @ picker — the first message of a thread cannot invoke a skill #7498

Description

@kirill-markin

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/mobile

Steps to reproduce

  1. Open the mobile app (iOS) and tap New Task.
  2. Pick a project, so the new-task screen with the prompt composer is shown.
  3. Type / or $ (or @) at the start of the prompt.
  4. No autocomplete menu appears, so there is no way to pick a skill, a slash command, or a file for the very first message.
  5. Send any message to create the thread, then type / or $ in the thread composer — the menu appears there and works as expected.

Expected behavior

The new-task composer should offer the same trigger menu as the thread composer, so the first message of a thread can invoke a skill ($), a slash command (/), and a file mention (@) directly.

This is how it already works everywhere else:

  • mobile thread composer (an existing thread), and
  • web/desktop, where a new thread is a draft route rendered by the same ChatView composer, so the first message supports the triggers.

Actual behavior

On mobile, the very first message of a thread cannot use any composer trigger. In practice the workaround is to send a throwaway first message ("details follow"), wait for the thread to be created, and only then invoke the skill in the second message. That wastes a turn, pollutes the thread history, and — for skill-driven workflows — means the skill is not the opening instruction of the thread, which is exactly when it matters most.

Impact

Minor bug or occasional failure

Version or commit

main @ 7441b36 (desktop 0.0.33)

Environment

iOS app, all providers (the gap is client-side, not provider-specific).

Notes on the cause

This looks structural rather than a rendering glitch: the two screens mount different composers.

  • apps/mobile/src/features/threads/ThreadComposer.tsx mounts ComposerCommandPopover (around L725) and computes the trigger items; it is used only by ThreadDetailScreen.tsx (L717), i.e. an existing thread.
  • apps/mobile/src/features/threads/NewTaskDraftScreen.tsx imports only ComposerSurface from that file (the visual shell, ThreadComposer.tsx L141) and renders a bare ComposerEditor (L809). No popover is mounted, so none of the four trigger kinds in packages/shared/src/composerTrigger.ts (path, slash-command, slash-model, skill) can fire.
  • The skills={flow.selectedProviderSkills} prop the draft screen already passes (L819) only drives inline token labels in the native editor (apps/mobile/src/native/T3ComposerEditor.ios.tsx L135) — it is not a picker.

A fix would extract the trigger/menu logic out of ThreadComposer into a shared hook and mount ComposerCommandPopover on the new-task screen too, feeding it the selected provider's slash commands and skills.

Workaround

Send a filler first message, then use / or $ in the second message.

Activity

  1. kirill-markin commented on Aug 19, 2026

    @kirill-markin
    Author

    Opened #7523 with a fix for the React Native app.

    While working on it I found something worth recording here: the Swift rebuild on t3code/rebuild-mobile-app-swift already closes this gap. apps/swift-ios/Features/Workspace/NewThreadView.swift builds a FeatureComposerPowerFeatures for the new-thread composer with slashCommands, skills, and a project-scoped searchPaths, so /, $ and @ are all available on the first message there.

    So this issue is really about the app that ships today plus Android, which stays on apps/mobile either way. If you would rather let the rewrite carry it on iOS and skip the RN change, say so and I will close the PR.

  2. t3dotgg commented on Sep 1, 2026

    @t3dotgg
    Member

    Note

    🤖 GPT-5.6 Sol responding on behalf of Theo

    Closing because PR #8587 addresses the missing first-message composer menus on main. We have not verified it in a released build. The new-task composer now uses the same /, $, and @ menus as an existing thread, with the selected provider and project.

    This is part of an automated closure pass based on our investigation. The change is in source tag v0.0.38, but App Store and Google Play delivery is not verified.

    If we missed something, please reply with the T3 Code version and reproduction details, and we can reopen it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions