| ... | @@ -441,10 +441,8 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -441,10 +441,8 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 441 | const iconSubtleColor = useThemeColor("--color-icon-subtle"); | 441 | const iconSubtleColor = useThemeColor("--color-icon-subtle"); |
| 442 | const screenColor = useThemeColor("--color-screen"); | 442 | const screenColor = useThemeColor("--color-screen"); |
| 443 | const drawerColor = useThemeColor("--color-drawer"); | 443 | const drawerColor = useThemeColor("--color-drawer"); |
| 444 | const mutedColor = useThemeColor("--color-foreground-muted"); | | |
| 445 | const pressedBackgroundColor = useThemeColor("--color-subtle"); | 444 | const pressedBackgroundColor = useThemeColor("--color-subtle"); |
| 446 | const selectedBackgroundColor = useThemeColor("--color-user-bubble"); | 445 | const selectedBackgroundColor = useThemeColor("--color-user-bubble"); |
| 447 | const selectedMutedColor = useThemeColor("--color-user-bubble-foreground-muted"); | | |
| 448 | | 446 | |
| 449 | const { thread, onSelectThread, onArchiveThread, onDeleteThread } = props; | 447 | const { thread, onSelectThread, onArchiveThread, onDeleteThread } = props; |
| 450 | const status = resolveThreadStatus(thread); | 448 | const status = resolveThreadStatus(thread); |
| ... | @@ -452,12 +450,12 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -452,12 +450,12 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 452 | const timestamp = relativeTime( | 450 | const timestamp = relativeTime( |
| 453 | thread.latestUserMessageAt ?? thread.updatedAt ?? thread.createdAt, | 451 | thread.latestUserMessageAt ?? thread.updatedAt ?? thread.createdAt, |
| 454 | ); | 452 | ); |
| | 453 | const threadAccessibilityLabel = pr ? `${thread.title}, ${pr.accessibilityLabel}` : thread.title; |
| 455 | const subtitleParts = [props.environmentLabel, thread.branch].filter((part): part is string => | 454 | const subtitleParts = [props.environmentLabel, thread.branch].filter((part): part is string => |
| 456 | Boolean(part), | 455 | Boolean(part), |
| 457 | ); | 456 | ); |
| 458 | | 457 | |
| 459 | const backgroundColor = compact ? screenColor : drawerColor; | 458 | const backgroundColor = compact ? screenColor : drawerColor; |
| 460 | const effectiveMuted = selected ? selectedMutedColor : mutedColor; | | |
| 461 | const effectivePressedBackground = selected ? "rgba(255,255,255,0.16)" : pressedBackgroundColor; | 459 | const effectivePressedBackground = selected ? "rgba(255,255,255,0.16)" : pressedBackgroundColor; |
| 462 | const effectiveStatus = | 460 | const effectiveStatus = |
| 463 | selected && status | 461 | selected && status |
| ... | @@ -496,12 +494,6 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -496,12 +494,6 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 496 | <View className="mt-px flex-row items-center gap-1.5"> | 494 | <View className="mt-px flex-row items-center gap-1.5"> |
| 497 | {subtitleParts.length > 0 ? ( | 495 | {subtitleParts.length > 0 ? ( |
| 498 | <> | 496 | <> |
| 499 | <SymbolView | | |
| 500 | name="arrow.triangle.branch" | | |
| 501 | size={10} | | |
| 502 | tintColor={compact ? iconSubtleColor : effectiveMuted} | | |
| 503 | type="monochrome" | | |
| 504 | /> | | |
| 505 | <Text | 497 | <Text |
| 506 | className={cn( | 498 | className={cn( |
| 507 | "shrink", | 499 | "shrink", |
| ... | @@ -516,10 +508,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -516,10 +508,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 516 | </> | 508 | </> |
| 517 | ) : null} | 509 | ) : null} |
| 518 | {pr !== null ? ( | 510 | {pr !== null ? ( |
| 519 | <View | 511 | <View className="flex-row items-center gap-0.5"> |
| 520 | accessibilityLabel={pr.accessibilityLabel} | | |
| 521 | className="flex-row items-center gap-0.5" | | |
| 522 | > | | |
| 523 | <PullRequestIcon | 512 | <PullRequestIcon |
| 524 | size={compact ? 13 : 11} | 513 | size={compact ? 13 : 11} |
| 525 | color={selected ? "#ffffff" : pullRequestTintColor(pr.state, colorScheme)} | 514 | color={selected ? "#ffffff" : pullRequestTintColor(pr.state, colorScheme)} |
| ... | @@ -540,7 +529,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -540,7 +529,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 540 | compact ? ( | 529 | compact ? ( |
| 541 | <Pressable | 530 | <Pressable |
| 542 | accessibilityHint="Swipe left for archive and delete actions" | 531 | accessibilityHint="Swipe left for archive and delete actions" |
| 543 | accessibilityLabel={thread.title} | 532 | accessibilityLabel={threadAccessibilityLabel} |
| 544 | accessibilityRole="button" | 533 | accessibilityRole="button" |
| 545 | className="bg-screen" | 534 | className="bg-screen" |
| 546 | onPress={() => { | 535 | onPress={() => { |
| ... | @@ -586,7 +575,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { | ... | @@ -586,7 +575,7 @@ export const ThreadListRow = memo(function ThreadListRow(props: { |
| 586 | ) : ( | 575 | ) : ( |
| 587 | <Pressable | 576 | <Pressable |
| 588 | accessibilityHint="Opens the thread" | 577 | accessibilityHint="Opens the thread" |
| 589 | accessibilityLabel={thread.title} | 578 | accessibilityLabel={threadAccessibilityLabel} |
| 590 | accessibilityRole="button" | 579 | accessibilityRole="button" |
| 591 | accessibilityState={{ selected }} | 580 | accessibilityState={{ selected }} |
| 592 | onHoverIn={() => setHovered(true)} | 581 | onHoverIn={() => setHovered(true)} |