From ac574d6c64eebbc38d5d58e96ba2534c59e742a6 Mon Sep 17 00:00:00 2001 From: DodgyBadger <4453217+DodgyBadger@users.noreply.github.com> Date: Sun, 20 Sep 2026 17:31:10 +0000 Subject: [PATCH] fix(mobile): compact the compose key --- src/web/public/keyboard-accessory.js | 14 ++++++++++++-- test/mobile-prompt-composer.test.ts | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/web/public/keyboard-accessory.js b/src/web/public/keyboard-accessory.js index bf0d3cd5..f59ad81c 100644 --- a/src/web/public/keyboard-accessory.js +++ b/src/web/public/keyboard-accessory.js @@ -674,7 +674,12 @@ const KeyboardAccessoryBar = { - + - + diff --git a/test/mobile-prompt-composer.test.ts b/test/mobile-prompt-composer.test.ts index 43c1d777..c2ea77e1 100644 --- a/test/mobile-prompt-composer.test.ts +++ b/test/mobile-prompt-composer.test.ts @@ -115,6 +115,21 @@ describe('mobile prompt composer', () => { expect(template('_shellButtons')).not.toContain('data-action="compose"'); }); + it('uses a compact accessible icon for Compose in both agent layouts', () => { + const { bar, document } = loadComposer(); + + for (const markup of [bar._simpleButtons, bar._extendedButtons]) { + const wrapper = document.createElement('div'); + wrapper.innerHTML = markup; + const button = wrapper.querySelector('[data-action="compose"]') as HTMLButtonElement; + + expect(button.getAttribute('aria-label')).toBe('Compose prompt'); + expect(button.getAttribute('title')).toBe('Compose prompt'); + expect(button.querySelector('svg[aria-hidden="true"]')).not.toBeNull(); + expect(button.textContent?.trim()).toBe(''); + } + }); + it('uses a native autocorrect-aware textarea and stores replacement text exactly once', () => { const { app, bar, document } = loadComposer(); bar.composePrompt();