Autocomplete teammate mentions in mobile conversations #447

Closed
opened 2026-08-10 02:51:41 +00:00 by timmy · 0 comments
Owner

User problem

On a phone, operators can reply to assigned issues, pull requests, and unread updates without leaving Stackchain, but they must already know exact teammate logins to mention someone. Looking up a username in Gitea abandons the in-progress mobile conversation flow.

Slice

Add repository-scoped @mention autocomplete to all three existing conversation composers. Candidate lookup must be authenticated, bounded, sanitized, and non-blocking; selection must preserve the draft and caret context. The same component must support touch and keyboard interaction.

Acceptance criteria

  • Typing at least two characters after @ shows matching repository assignees in issue, pull-request, and unread-update composers.
  • Tap or Enter inserts @login at the active token while preserving surrounding text; Escape dismisses without changing the draft.
  • Stale responses and repository switches cannot leak or overwrite candidate lists.
  • Lookup failure/offline state never prevents literal typing or comment submission.
  • API requires an operator session, validates repository access, returns bounded {login, name} records, and sends Cache-Control: no-store.
  • Suggestion rows remain touchable and contained at 320px mobile width; listbox semantics and active-option announcements are present.
  • Existing draft, outbox, comment-and-next, and posting behavior remain green.

Evidence / non-duplication

Current origin/main has plain textareas at frontend/index.html lines 294, 464, and 498 and no mention/autocomplete implementation. The complete historical issue/PR title scan through #446 contains no mention or autocomplete feature; adjacent #153/#154, #281/#282, #323/#324, and #429/#430 implement replies, handoff, keyboard safety, and continuation but not teammate discovery.

## User problem On a phone, operators can reply to assigned issues, pull requests, and unread updates without leaving Stackchain, but they must already know exact teammate logins to mention someone. Looking up a username in Gitea abandons the in-progress mobile conversation flow. ## Slice Add repository-scoped `@mention` autocomplete to all three existing conversation composers. Candidate lookup must be authenticated, bounded, sanitized, and non-blocking; selection must preserve the draft and caret context. The same component must support touch and keyboard interaction. ## Acceptance criteria - Typing at least two characters after `@` shows matching repository assignees in issue, pull-request, and unread-update composers. - Tap or Enter inserts `@login ` at the active token while preserving surrounding text; Escape dismisses without changing the draft. - Stale responses and repository switches cannot leak or overwrite candidate lists. - Lookup failure/offline state never prevents literal typing or comment submission. - API requires an operator session, validates repository access, returns bounded `{login, name}` records, and sends `Cache-Control: no-store`. - Suggestion rows remain touchable and contained at 320px mobile width; listbox semantics and active-option announcements are present. - Existing draft, outbox, comment-and-next, and posting behavior remain green. ## Evidence / non-duplication Current `origin/main` has plain textareas at `frontend/index.html` lines 294, 464, and 498 and no mention/autocomplete implementation. The complete historical issue/PR title scan through #446 contains no mention or autocomplete feature; adjacent #153/#154, #281/#282, #323/#324, and #429/#430 implement replies, handoff, keyboard safety, and continuation but not teammate discovery.
timmy self-assigned this 2026-08-10 02:51:41 +00:00
timmy closed this issue 2026-08-10 03:04:27 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#447
No description provided.