Releases: Msparihar/ReddiChat
Releases · Msparihar/ReddiChat
v2.0.0 — Community Intelligence
Community Intelligence
New AI Tools
- Sentiment Analysis — visual sentiment bar with positive/negative/neutral distribution
- Cross-Subreddit Comparison — compare how different communities view the same topic
- Trending Topics — velocity-ranked hot posts per subreddit
- Thread Summarizer — TLDR with key points, consensus, and dissenting opinions
Enhanced UI
- Rich source previews with thumbnails, link domains, and relative timestamps
- SentimentBar component renders inline in chat responses
- Subreddit pages (
/r/[subreddit]) with design tokens and floating "Ask" CTA - Enhanced system prompt for intelligent tool selection
Design System (v1.7.0)
- Full Orangered brand identity with Apple-inspired shadows
- Warm token system for light/dark themes
- 2-font typography (Plus Jakarta Sans + JetBrains Mono)
v1.7.0 — Design System Overhaul
Design System Overhaul
- Reddit Orangered (
#ff4500) as singular brand accent, replacing all purple --rc-*CSS custom property token system for light/dark themes- Warm gray surfaces with cream undertones (not cold grays)
- Apple-inspired diffused card shadows with hover lift on light theme
- Consolidated to 2 fonts: Plus Jakarta Sans + JetBrains Mono
- Semi-transparent rgba borders throughout
- Orange focus rings and active states
- Full DESIGN.md documentation
- All hardcoded colors converted to Tailwind
brandtoken classes
v1.6.0 — User Roles & Tier-Based Access Control
ReddiChat v1.6.0
Features
- User Roles — role column on user table (free/pro/team/admin) exposed via Better Auth session
- Tier Configuration — single source of truth in
tiers.tsfor all per-tier limits and model access - Model Locking — free tier limited to Gemini 2.5 Flash; locked models show lock icon in UI
- Tier-Aware Limits — daily usage limits scale per tier (100→1000→5000→unlimited msgs/day)
- Admin API —
GET /api/admin/users(paginated user list with usage) andPATCH /api/admin/users/[id]/role(role management) - Dynamic Plan Badge — profile dropdown shows actual tier name and limits
- Auto Model Reset — if user's selected model isn't in their tier, silently resets to default
Tier Limits
| Free | Pro | Team | Admin | |
|---|---|---|---|---|
| Messages/day | 100 | 1,000 | 5,000 | Unlimited |
| Models | Gemini 2.5 Flash | All | All | All |
v1.5.0 — Search, Export & Interaction Polish
ReddiChat v1.5.0
Features
- Conversation Search — filter threads by title from the sidebar with real-time filtering
- Markdown Export — download any conversation as a .md file with sources
- Streaming Phases — elapsed time display during AI responses, >15s warning banner
- Keyboard Shortcuts — Cmd/Ctrl+K (search), Cmd/Ctrl+N (new chat), Escape (close)
- Error UI — styled retry button with contextual hints (rate limit, timeout, network)
- Accessibility — aria-busy on streaming messages, aria-labels on all interactive elements, focus-visible rings
v1.4.2 — Quick Topic Chips
ReddiChat v1.4.2
Changes
- Quick topic chips in the contact dialog — select a topic and the form fills instantly
- 5 topics: Upgrade to Pro, Billing Question, Report Issue, Feature Request, Other
- Each chip prefills both subject and a structured message template
- "Upgrade to Pro" auto-inserts the user's email address
- Active chip highlighted with purple accent
- Textarea auto-focuses after selection with cursor at end
- 3-click flow: open → select topic → send
- Full dark mode support, chips wrap on mobile
v1.4.1 — In-App Contact Form
ReddiChat v1.4.1
Changes
- In-app contact form replaces the raw
mailto:link in the profile dropdown - Contact dialog with pre-filled subject ("Billing Inquiry — ReddiChat"), character limits, and toast feedback
POST /api/contactendpoint sends email via Nodemailer with HTML escaping andreplyTosupport- Rate limited to 5 contact messages per user per day
- User's email is read from session (not editable) to prevent spoofing
v1.4.0 — Profile Dropdown & UX Polish
ReddiChat v1.4.0
Features
Profile Dropdown
- Rich dropdown replacing sidebar footer: user info, usage progress bar, plan badge, settings, billing contact, sign out
- Inline display name editing with
PATCH /api/user/profile(auth, validation, rate limiting) - Theme toggle moved into dropdown (removed from sidebar header)
- Usage progress bar with color-coded thresholds and reset countdown
- "Free Plan — 100 msgs/day" badge
- Works in both expanded and collapsed sidebar states
Copy Button on AI Responses
- Copy-to-clipboard button on every assistant message
- Visible on hover (desktop), always visible (mobile)
- Toast confirmation with check icon feedback
Mobile-Responsive Layout
- Sidebar overlays content on mobile (<768px) instead of pushing
- 44px minimum touch targets on all interactive elements
- Reddit source cards stack vertically on small screens
- Model selector dropdown goes full-width on mobile
v1.3.1 — Usage Visibility
ReddiChat v1.3.1
Patch release completing v1.3.0 security work with user-facing usage visibility.
Features
- Usage API —
GET /api/usagereturns daily usage, limits, and UTC reset time - Usage indicator — shows remaining messages in the chat input bar with color-coded thresholds (gray → amber → red)
- Precise limit errors — "You've used 100/100 messages today. Resets at midnight UTC." instead of generic messages
- Send button disabled when daily message limit is exhausted
- Tooltip on usage indicator shows full breakdown (messages, tokens, uploads)
- Auto-refreshes usage every 60 seconds
Bug Fixes
- Usage data now visible to users before they hit limits
- Error messages include exact counts for all limit types (messages, tokens, uploads, upload bytes)
v1.3.0 — Security & Cost Protection
ReddiChat v1.3.0
Features
- DB-backed daily usage limits (100 msgs/day, 500K tokens/day, 50 uploads/day, 100MB/day)
usage_trackingtable with per-user daily aggregation via upsert- Token budget system — caps input at ~32K estimated tokens, truncates oldest history
- File upload hardening: MIME whitelist with magic byte validation, max 5 files/request, filename sanitization
- Request body size limit (50MB)
- Error sanitization — no internal error details leak to client
- Comprehensive request logging with requestId tracing on all endpoints
- requestId generation in structured logger
Security Improvements
- Every chat request now logs: requestId, userId, model, input size, file count, tools used, response size, duration
- Daily limits enforced at database level — survives restarts and deploys
- File content validated against declared MIME type using magic bytes
- AI provider errors mapped to safe user-facing messages
v1.2.0 — Production Hardening
ReddiChat v1.2.0
Features
- In-memory rate limiting (30/hr chat, 20/hr upload, 60/hr reddit)
- Zod input validation on all API endpoints
- DB connection pooling (max 20, idle 30s, connect 5s)
- Database indexes on conversations, messages, and attachments
- N+1 query fix — batch attachment fetch replaces Promise.all loop
- Exponential backoff retry for Reddit API token refresh
- 10s timeout on S3 uploads
- Partial AI response guard — only saves after full stream
- Structured JSON logger replacing all console.log/error