authorgravatar for passawit.kaovilai@gmail.comTiger Kaovilai <passawit.kaovilai@gmail.com> 2026-10-11 21:40:55-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-12 01:40:55+00:00
logb8d03ba2dd2a511899a5187c0fbe477ef2b40bbe
tree8203d81b9008905121e6ad3c1b167d3535237c02
parentd45d1a1ede45cc4daa88843c2e4bffba938df367
signature Signed by PGP key B5690EEEBB952194

fix(mobile): new thread draft names its repo and says it is a new thread (#17611)

Signed-off-by: Tiger Kaovilai <passawit.kaovilai@gmail.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>

1 files changed, 18 insertions(+), 4 deletions(-)

apps/mobile/src/features/threads/NewTaskDraftScreen.tsx+18-4
......@@ -213,6 +213,20 @@ export function NewTaskDraftScreen(props: {
213213 const controlsBottomPadding = Math.max(insets.bottom, 10);
214214 const keyboardOpenedOffset = Math.max(0, controlsBottomPadding - 8);
215215 const { projectScopes, selectedProject, selectedProjectKey, setProject } = flow;
216 // The picker and sidebar name a project by its repository scope; a workspace
217 // inside it (e.g. apps/server) is titled by its folder, which reads as
218 // ambiguous on its own.
219 const selectedProjectLabel = useMemo(() => {
220 if (!selectedProject) return null;
221 const scope = projectScopes.find((candidate) =>
222 candidate.projectRefs.some(
223 (ref) =>
224 ref.environmentId === selectedProject.environmentId &&
225 ref.projectId === selectedProject.id,
226 ),
227 );
228 return scope?.title ?? selectedProject.title;
229 }, [projectScopes, selectedProject]);
216230 const { connectedEnvironments } = useRemoteConnectionStatus();
217231 const selectedEnvironmentServerConfig = useEnvironmentServerConfig(
218232 selectedProject?.environmentId ?? null,
......@@ -507,7 +521,7 @@ export function NewTaskDraftScreen(props: {
507521 });
508522 const voiceInput = useVoiceInputController({
509523 ownerKey: flow.draftKey,
510 label: selectedProject ? `New task in ${selectedProject.title}` : "New task",
524 label: selectedProjectLabel ? `New task in ${selectedProjectLabel}` : "New task",
511525 readDraftMessage: () => (flow.draftKey ? getComposerDraftSnapshot(flow.draftKey).text : null),
512526 subscribeToDraftChanges: (onChange) => appAtomRegistry.subscribe(composerDraftsAtom, onChange),
513527 selection: composerMenu.selection,
......@@ -1562,7 +1576,7 @@ export function NewTaskDraftScreen(props: {
15621576 <Text className="text-2xl font-t3-medium tracking-tight text-foreground">in </Text>
15631577 <Pressable
15641578 accessibilityHint="Opens the project picker"
1565 accessibilityLabel={selectedProject.title}
1579 accessibilityLabel={selectedProjectLabel ?? selectedProject.title}
15661580 accessibilityRole="button"
15671581 disabled={isComposerInteractionLocked}
15681582 onPress={chooseProject}
......@@ -1572,7 +1586,7 @@ export function NewTaskDraftScreen(props: {
15721586 className="text-2xl font-t3-medium tracking-tight text-foreground"
15731587 numberOfLines={1}
15741588 >
1575 {selectedProject.title}
1589 {selectedProjectLabel ?? selectedProject.title}
15761590 </Text>
15771591 </Pressable>
15781592 <Text className="text-2xl font-t3-medium tracking-tight text-foreground">?</Text>
......@@ -1878,7 +1892,7 @@ export function NewTaskDraftScreen(props: {
18781892 options={{
18791893 headerBackVisible: false,
18801894 headerShadowVisible: false,
1881 title: "",
1895 title: "New thread",
18821896 }}
18831897 />
18841898 <NativeHeaderToolbar placement="left">