Repository navigation
feat(messages): private messages between members - #66
Merged
Merged
Conversation
- theme tokens as CSS variables: light, dark, or follow the system, chosen per user (cookie, applied during SSR so there is no flash) - meaningful colors: green for upload/seed, amber for download/leech, violet for freeleech; contrast inks keep existing controls legible in both themes - self-hosted IBM Plex Sans and Mono (Google Fonts was blocked by the CSP, so the app silently fell back to system fonts) - app shell: grouped sidebar (browse, community, account, staff), top bar with a transfer meter, freeleech pill and account menu (passkey copy, points, theme, language) - command palette (Cmd/Ctrl+K or /): search torrents and jump to pages - mobile navigation drawer, skip link, visible focus, reduced motion - dialog overlays stay dark in both themes; fix icons collapsed to zero width by an inline class Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- greeting, account strip (ratio with upload/download, seeding and leeching counts, bonus points, hit & runs), staff note, new torrents, open bounties and latest forum topics, from a single /api/dashboard request - track per-user seeding/leeching torrents in Redis on announce - show the admin welcome message, which was editable but never displayed - transfer meter reads live upload/download (the sealed session only held the values from sign-in) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- one conversation per pair of members, unread badge in the sidebar, messages page with conversation list and thread, start a conversation from a profile or by username - block a member (they can no longer message you), hide a conversation for yourself (it comes back on a new message) - only participants can read a conversation, staff included; plain text rendered as text, 1 to 5000 characters, rate limited - conversation marked read up to the newest message shown Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 11 minutes. View limit detailsLimit details: You’ve used all 2 included reviews currently available. Review configuration: ⚙️ Run configuration
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (51)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Oct 8, 2026
- closed mobile drawer is invisible so its links leave the tab order; the sidebar gets a landmark label instead of an action label - command palette drops late search answers and resets on close, and returns focus to the element that opened it - passkey copy only shows Copied when the clipboard write succeeds - account switch clears the previous balance and avatar - theme cookie is validated, unknown values fall back to system - fixed colors: paper (white) for text on colored fills and uploaded logos, scrim for shadows, so they do not flip with the theme Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- user activity tracking errors are logged instead of failing the announce (and skipping H&R and completion tracking after it) - the dashboard falls back to empty swarm counts when stats are unavailable instead of returning a 500 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- banned or missing recipients are refused (404) for new conversations and replies alike - blocking an unknown user id returns 404 instead of a 500 - malformed ?before / ?limit return 400 instead of a 500 - hidden conversations are filtered in SQL so they do not use up the 100-row limit and push older visible ones out of the list - block and hide failures show an error instead of an unhandled rejection Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
@coderabbitai review |
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Members can now talk to each other privately.
Privacy and safety
<b>shows literally).ON CONFLICT DO NOTHINGon a unique pair key, so concurrent first messages share one conversation.Schema
New tables
conversations,conversation_members,private_messagesanduser_blocks. They are applied bydrizzle-kit pushat startup, and0014_private_messages.sqlis provided for reference.Test plan
npx vitest run: 165 passing, including the new message rule tests (pair key, body normalization, unread, visibility)🤖 Generated with Claude Code