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();