authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-07 03:01:51-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-07 03:01:51-07:00
logb7175371d9f32f3b759a922cdbf727a3214c99a2
tree7515920b94966beb60a23a35066b3e58eea2b4a0
parente32dd42f8ba0daa2d0c6d6d2e474b7af6b3eb7b4
signature Signed by PGP key B5690EEEBB952194

fix(mobile): restore assistant message bottom padding (#10491)


1 files changed, 9 insertions(+), 7 deletions(-)

apps/mobile/src/features/threads/ThreadFeed.tsx+9-7
...@@ -2260,11 +2260,18 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {...@@ -2260,11 +2260,18 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {
2260 );2260 );
2261 const markdownStyles = useMarkdownStyles(onMarkdownLinkPress, renderMarkdownImage);2261 const markdownStyles = useMarkdownStyles(onMarkdownLinkPress, renderMarkdownImage);
2262 const reviewCommentColors = useReviewCommentColors();2262 const reviewCommentColors = useReviewCommentColors();
2263 const unsettledTurnId =
2264 props.latestTurn &&
2265 (props.latestTurn.completedAt === null || props.latestTurn.state === "running")
2266 ? props.latestTurn.turnId
2267 : null;
2263 // LegendList does not invalidate visible rows when only the renderItem closure changes.2268 // LegendList does not invalidate visible rows when only the renderItem closure changes.
2264 // Keep row-local interaction props in extraData so disclosures and copy feedback repaint.2269 // Include turn completion so unchanged message rows reveal their footer and spacing
2270 // even when the final message update arrives before the turn settles.
2265 const listAppearanceData = useMemo(2271 const listAppearanceData = useMemo(
2266 () => ({2272 () => ({
2267 dispatchingMessageId: props.dispatchingMessageId,2273 dispatchingMessageId: props.dispatchingMessageId,
2274 unsettledTurnId,
2268 copiedRowId,2275 copiedRowId,
2269 expandedWorkRows,2276 expandedWorkRows,
2270 workRowSizing,2277 workRowSizing,
...@@ -2277,6 +2284,7 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {...@@ -2277,6 +2284,7 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {
2277 }),2284 }),
2278 [2285 [
2279 props.dispatchingMessageId,2286 props.dispatchingMessageId,
2287 unsettledTurnId,
2280 copiedRowId,2288 copiedRowId,
2281 expandedWorkRows,2289 expandedWorkRows,
2282 workRowSizing,2290 workRowSizing,
...@@ -2472,12 +2480,6 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {...@@ -2472,12 +2480,6 @@ export const ThreadFeed = memo(function ThreadFeed(props: ThreadFeedProps) {
2472 }2480 }
2473 return new Set(terminalIdsByTurn.values());2481 return new Set(terminalIdsByTurn.values());
2474 }, [props.feed]);2482 }, [props.feed]);
2475 const unsettledTurnId =
2476 props.latestTurn &&
2477 (props.latestTurn.completedAt === null || props.latestTurn.state === "running")
2478 ? props.latestTurn.turnId
2479 : null;
2480
2481 useEffect(() => {2483 useEffect(() => {
2482 const previous = previousLatestTurnRef.current;2484 const previous = previousLatestTurnRef.current;
2483 previousLatestTurnRef.current = props.latestTurn;2485 previousLatestTurnRef.current = props.latestTurn;