feat(tags): autocomplete, persist tags, and improve tag page UX
Description:
Implemented a tagging system with autocomplete in the description input field.
Users can type # to tag usernames and general tags with real-time suggestions fetched from the backend.
Key features:
- Cursor-aware tag detection (
#word) - Debounced API calls to
/records/tags/suggest - Dropdown with user + tag suggestions
- Keyboard navigation (↑ ↓ Enter Esc)
- Safe async handling (AbortController, requestIdRef)
- Tag replacement without affecting surrounding text
- Clickable tags in view mode (
#username → /user/:username) - Fixed backend URL using environment variable
- Ensured retry works after failed requests (no stuck state)
Type of Change:
Feature Development
Testing:
- Tested on desktop
-
Tested on mobile (basic responsive behavior verified) -
Tested in different browsers (Chrome, Edge)
-
Screenshots (if applicable):
Video Demo:
Screencast from 2026-04-21 10-07-32.webm
AI Usage Disclosure:
AI tools were used to assist in implementation and debugging.
A code walkthrough video explaining the changes will be provided.
Link to code walkthrough:
(Add your walkthrough link here)
Checklist:
- Code follows project style guidelines
-
Self-review completed -
No console errors -
TypeScript types are correct
-



