Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

feat(web): larger empty-composer voice/dictate hit target

Closed Beginner friendly
#2,006 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 4 days

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
84/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
react, tailwindcss, typescript

Research direction

Start in web/src/components/AssistantChat/ComposerButtons.tsx at UnifiedButton and trace how it distinguishes an empty composer with voice enabled from send and stop states. Check the existing component tests or nearby composer tests, if present, and add coverage for the empty and non-empty sizes. Done means the empty voice button is visibly larger while the other states keep their compact size and routing.

Written by the indexing model from the issue text.

Description

area:web enhancement

Summary

The composer primary action button (UnifiedButton) is always h-8 w-8 (32px), including the empty-composer voice / dictate state (waveform icon). On touch and VR (Quest browser) that hit target is too small relative to the unused space beside the empty field. Once there is draft text, the same control becomes Send — that size is fine because Send competes with the text area and toolbar.

Proposal

  • Empty composer + voice/dictate afforded: make the primary button a larger hit target by default (e.g. h-12 w-12 / ~48px, icon scaled up).
  • Has text / send / scratchlist send / connected stop: keep the current compact h-8 w-8.
  • No layout competition when empty: Send is not shown until there is something to send.

Why

Quest and other coarse-pointer clients benefit from a large default dictate affordance. Desktop mouse users are not hurt by a larger empty-state control; the compact Send state preserves density once drafting.

Related

  • Closed #1900 (dictate keyboard shortcut) — complementary, not a duplicate
  • Implementation likely in web/src/components/AssistantChat/ComposerButtons.tsx (UnifiedButton)

Acceptance

  1. Empty composer with voice enabled: primary button visibly larger than today and easy to tap on a phone / Quest viewport.
  2. Non-empty draft: button returns to compact Send size.
  3. Existing UnifiedButton routing (scratchlist amber, stop while connected) unchanged except empty-voice size.
Dominant language
TypeScript
Stars
5.3k
Forks
626
Avg merge
6d 5h
Merged PRs (30d)
87

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from tiann/hapi

All issues in tiann/hapi

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.