remarkbox/docs/tickets/6.md
russell@unturf.com f1cffe2e79 Resolve all 14 tracked tickets (T0-T13)
High priority fixes:
- T0: Profile page now filters comments by namespace (was leaking cross-site)
- T1: URI hostnames and namespace names normalized to lowercase (was causing
  duplicate threads and "stock comments" bug). Includes merge script.
- T2: Thread detail API now paginated with SQL-side filtering (was 502 on
  267+ reply threads)

Features:
- T3: GDPR account deletion (tombstone user with scrubbed PII) and data export
- T4: Customizable button text and comment labels per namespace
- T5: Self-service namespace deletion for owners
- T6: @mention notifications with profile links
- T7: Webmention receiving endpoint with h-card extraction
- T8: Configurable max nesting depth and collapse depth per namespace
- T9: AJAX thread title search to prevent duplicates
- T10: Browser push notification support (VAPID/service worker)

Docs and housekeeping:
- T11: Documented thread_uri behavior when moving embeds
- T12/T13: Drafted community replies for resolved feature requests
- Collapse depth defaults to infinite (load-more disabled unless configured)

364 tests pass, 4 skipped.
2026-02-01 20:02:47 -05:00

33 lines
1.4 KiB
Markdown

# T6: Mention notifications (@username)
**Status**: resolved
**Priority**: low
**Source**: meta `b82332ce-b4cb-11e7-b510-040140774501`
**Filed**: 2026-02-01
## Problem
Users want to @mention other Remarkbox users in comments and have those users receive notifications. Currently only reply notifications exist (notify when someone replies to your comment).
## Proposed Implementation
1. Parse comment body for `@username` patterns on save
2. Look up mentioned users and create notifications for them
3. Render @mentions as links to the user's profile
## Files
- `remarkbox/lib/mentions.py` — new module: parse @mentions, resolve users, replace with links
- `remarkbox/lib/render.py` — integrate mention resolution into markdown_to_html pipeline
- `remarkbox/models/node.py` — pass dbsession through set_data() for mention resolution
- `remarkbox/lib/notify.py` — add get_mentioned_user_watchers() for mention notifications
- `remarkbox/views/reply_node.py` — pass dbsession to set_data()
- `remarkbox/views/new_thread.py` — pass dbsession to set_data()
- `remarkbox/api/views.py` — pass dbsession to set_data() in API endpoints
- `remarkbox/static/css/common.css` — CSS for .mention class
## Acceptance Criteria
- [x] @username in a comment triggers a notification to that user
- [x] Mentioned usernames are rendered as links
- [x] Non-existent usernames are left as plain text