A React Native app for the ultimate thinking partner.

Phase 1: Fix spacer lifecycle to prevent scroll jumps

Changes to chatStore.ts:
- stopStreaming(): Keep lastMessageNeedsSpace = true (don't remove spacer)
- addMessage(): Set lastMessageNeedsSpace = false on user messages
- clearMessages(): Reset lastMessageNeedsSpace = false

Result: Spacer now stays after streaming completes, preventing scroll jump.
Only removed when next user message arrives.

🐾 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Letta <noreply@letta.com>

Changed files
+3 -2
src
stores
+3 -2
src/stores/chatStore.ts
··· 101 101 console.log('[CHAT STORE] addMessage:', message.id); 102 102 set((state) => ({ 103 103 messages: [...state.messages, message], 104 + lastMessageNeedsSpace: message.role === 'user' ? false : state.lastMessageNeedsSpace, 104 105 })); 105 106 }, 106 107 ··· 120 121 121 122 clearMessages: () => { 122 123 console.log('[CHAT STORE] clearMessages'); 123 - set({ messages: [], earliestCursor: null, hasMoreBefore: false }); 124 + set({ messages: [], earliestCursor: null, hasMoreBefore: false, lastMessageNeedsSpace: false }); 124 125 }, 125 126 126 127 // Streaming actions - DEAD SIMPLE ··· 136 137 137 138 stopStreaming: () => { 138 139 console.log('⏹️ STOP STREAMING'); 139 - set({ isStreaming: false, lastMessageNeedsSpace: false }); 140 + set({ isStreaming: false }); 140 141 }, 141 142 142 143 // Accumulate reasoning (delta)