refactor(chat): two-row ChatComposer + model/reasoning chips (#669)
* feat(chat): add reasoningLevel to ChatUiState + ViewModel methods * feat(chat): add ComposerToolbar with model + reasoning chips * refactor(chat): rewrite ChatInputBar to two-row layout * feat(chat): wire ComposerToolbar into ChatScreen * fix(chat): make model chip fixed 120dp with horizontal scroll for long names * feat(chat): reasoning chip opens dropdown menu with all 9 levels instead of cycling * fix(chat): remove Auto level from reasoning menu — backend only supports none..ultra, default is medium * feat(chat): sync model + reasoning level from backend session.resume response * fix(chat): handle session.info events for model/reasoning sync + fix null value 4002 * fix(chat): safety timeout for createNewSession + try-catch event loop * fix(chat): address agy review findings - Restore InsertDriveFile icon for non-image attachments - Add widthIn(max=120.dp) constraint on attachment filename - Restore stringResource reference for remove-attachment description - Remove dead cycleReasoningLevel() method (dropdown supersedes) - Fix createNewSession timeout race with generation counter * fix(chat): update instrumented test for two-row layout chatScreen_renders_and_acceptsInput had an assertion that the mic button disappears when text is entered — this was the OLD single-row layout behavior. The new two-row composer always shows the mic button in the toolbar row, independent of input state. --------- Co-authored-by: M57 <Hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
c16f6e3e0b
commit
bb4149eb0d
6 files changed
+430
-166
No files matched your search
@@ -68,9 +68,10 @@ class ChatScreenTest {
|
||||
composeTestRule.onNodeWithTag("mic_button").assertIsDisplayed()
|
||||
composeTestRule.onNodeWithTag("send_button").assertDoesNotExist()
|
||||
|
||||
// Verify entering text switches mic button to send button
|
||||
// Verify entering text shows send button in input row
|
||||
// Mic stays visible in toolbar row (new two-row layout)
|
||||
composeTestRule.onNodeWithTag("chat_input").performTextInput("Hello Hermes")
|
||||
composeTestRule.onNodeWithTag("send_button").assertIsDisplayed()
|
||||
composeTestRule.onNodeWithTag("mic_button").assertDoesNotExist()
|
||||
composeTestRule.onNodeWithTag("mic_button").assertIsDisplayed()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user