• Adekunle James Adeniji's avatar
    feat(chat input): recall previous messages using Up Arrow (#2343) · ac309b61
    Adekunle James Adeniji 提交于
    Closes #1999
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2343">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Introduces terminal-style history recall in the chat input using a
    zero-width trigger and the mentions menu.
    > 
    > - New `HistoryNavigation` plugin listens for `ArrowUp` on empty input
    to insert `HISTORY_TRIGGER` and open a history menu; `Escape` clears it
    > - Integrates `messageHistory` from `ChatInput` (per-chat user
    messages, newest first) into `LexicalChatInput`; home input passes an
    empty history
    > - Extends mentions to support history items under `HISTORY_TRIGGER`,
    customizes menu item rendering, and strips the trigger from the external
    value sync/onChange flow
    > - Adds comprehensive Playwright e2e tests for opening, navigating,
    selecting (Enter/mouse), closing (Escape), and guard cases (non-empty
    input, empty history), plus normal message sending after closing
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    ea2a9298c6dc7e72a6cc1d3b044a4b6bcacf5bb4. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Recall previous user messages in the chat input using the Up Arrow. This
    adds a simple history menu that lets you quickly reuse past prompts
    without leaving the input.
    
    - **New Features**
    - Press Up Arrow in an empty input to open a history menu (only if
    history exists).
    - Navigate with Arrow keys, select with Enter or mouse click, and close
    with Escape. Defaults to the most recent item.
    - Integrates with Lexical via an invisible trigger, and won’t open when
    the input has content.
    - Pulls user-only messages per chat for history; includes end-to-end
    tests covering open, navigation, selection, closing, and guard cases.
    
    <sup>Written for commit d87bc2f712a69f411c3046e9376099656326bca1.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
    ac309b61