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.
1.4 KiB
1.4 KiB
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
- Parse comment body for
@usernamepatterns on save - Look up mentioned users and create notifications for them
- Render @mentions as links to the user's profile
Files
remarkbox/lib/mentions.py— new module: parse @mentions, resolve users, replace with linksremarkbox/lib/render.py— integrate mention resolution into markdown_to_html pipelineremarkbox/models/node.py— pass dbsession through set_data() for mention resolutionremarkbox/lib/notify.py— add get_mentioned_user_watchers() for mention notificationsremarkbox/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 endpointsremarkbox/static/css/common.css— CSS for .mention class
Acceptance Criteria
- @username in a comment triggers a notification to that user
- Mentioned usernames are rendered as links
- Non-existent usernames are left as plain text