// changelog

Shipped weekly, tracked openly.

Every update, fix, and improvement that lands in NeatMail.17 releases · 247 documented changes

Latest2026-05-26
v1.7.0

Version 1.7.0

Added
  • GitHub integration for context fetching and issue retrieval in email drafts
  • Notion integration with context fetching and relevant page extraction
  • HubSpotProvider enhanced with methods for fetching notes, tasks, and tickets
  • User deletion functionality in draft and model services with error handling
  • Google verification email handling for history sync in email route
  • Gmail integration enhancement with client retrieval and quota limits in throttle.ts
  • Caching for known repositories in GitHubProvider
  • Stopword package integrated in GitHub and HubSpot providers
Changed
  • GitHubProvider simplified — removed router/scoring, uses Promise.allSettled + unified fetchWithTimeout
  • Unnecessary logging removed in GitHub and Notion providers; logging added in HubSpot
  • Reply generation rules clarified with explicit checks for missing information
  • Timeout duration increased for context fetching and guidance on missing information updated
  • getLastSentMessageInThreadOutlook optimized by directly querying sent items
  • Condition updated to check for top pages in NotionProvider context fetching
  • Google API quota reference and rate limits for Gmail and Calendar APIs
// previous releases
v1.6.02026-05-24
Added
  • HubSpot integration with context fetching and UI components
  • Last message retrieval for email threads in Gmail and Outlook
  • Email draft processing with user name integration and context formatting
  • Trial status response for users with active trials in subscription checks
  • Prompt engineering patterns skill to skills-lock.json
Changed
  • Output token limit adjusted with guidelines for reply generation length
  • Output token limit increased; helper functions exported for better accessibility
  • .agents/skills removed from tracking and added to .gitignore
v1.5.02026-05-21
Added
  • Reply functionality for Gmail and Outlook conversations with FollowUps UI integration
v1.4.02026-05-20
Added
  • `NotSubscribedState` component using `premium.svg` with default "Go to Billing" link
  • Subscription gating on FollowUps, EmailStats (unsubscribe), and StorageAnalysis pages
  • `enabled` parameter on `useGetSentEmails`, `useGetUserEmailStats`, and `useGetFilteredEmails` hooks to skip API calls for unsubscribed users
v1.3.02026-05-19
Added
  • Throttling mechanism for API requests using Redis
v1.2.02026-05-18
Added
  • `reminder_sent_at` field to Subscription model for tracking reminder delivery
  • Cache-Control header to improve caching strategy
  • FollowUps button text updated to indicate email client
Changed
  • next.config settings enhanced for image handling and headers
  • Code structure refactored for improved readability and maintainability
v1.1.02026-05-16
Added
  • Follow-ups page showing sent emails awaiting replies
  • Changelog to document project updates and version history
Fixed
  • Outlook ID handling updated to support multiple IDs in renewal process and various functions
v1.0.02026-05-15
Added
  • Watched folders functionality with Outlook integration
  • Active folder data in Outlook subscription creation
  • Language selection to draft preferences, piped through draft creation
  • Slack integration — OAuth flow, context provider, API routes, and UI
  • Slack provider with search, context retrieval, and user connection check
Fixed
  • Debug logs removed from Gmail and Outlook label correction processing
  • Debug logs removed from SlackProvider fetchContext and buildQuery
  • Slack search parameters updated: count to 6, sort by score
  • Async handling for Slack token decryption
  • Layout adjustments for folder selection in WatchedFolderSelect
Changed
  • activeFolder function corrected to filter and map folder data properly
v0.9.02026-05-10
Added
  • Storage analysis page: find and delete large emails by size and date range
  • ErrorState component replacing Alert in EmailStats and StorageAnalysis
  • PageTransition component for animated page transitions
  • AppSidebar animated active indicator with layout grouping
  • One-Click Cleanup feature image in README
  • Badge UI component with variants
  • Pagination for email retrieval with nextPageToken and maxResults
  • DeleteOutlookMessage function and email deletion logic
  • Outlook message archiving with enhanced filtering
Fixed
  • Date validation schema and error handling for date queries in email and stats routes
  • Audience URL in Gmail webhook now uses environment variable
  • Syncing message clarifies inbox reference
Changed
  • Sidebar restructured with Cleanup section and refined navigation
  • getGmailClient simplified: Redis caching and in-process token cache removed
  • Code structure refactored for readability and maintainability
Removed
  • entity-extractor.ts file and associated OpenAI integration
  • User privacy settings and related API endpoints
v0.8.02026-05-01
Added
  • Auto-archive functionality for Gmail and Outlook messages
  • Archive rules management in API
  • Gmail historical data sync via API endpoint and React hook
  • Outlook email history sync and retrieval
  • Read vs Unread component with API integration for 7-day stats
  • MostEmails component for tracking top email senders
  • Date range picker on dashboard with component updates
  • Skip processing for users not subscribed to archiving rules
Fixed
  • Clutter component layout, loading states, and unsubscribe options
  • Archive option alignment in EmailStats
  • Layout and responsiveness in EmailStats
  • Login.svg added to public folder
  • Total days calculation for email metrics
  • Margin adjustments in Clutter and MostEmails components
  • Take limits in stats API for clutter and top labels queries
  • Greeting calculation optimized with useMemo
  • Dashboard greeting subtitles and LabelDistribution colors
  • Time period references from month to week
  • Traffic data metrics and trend rendering
Changed
  • Debounced date handling in dashboard for performance
  • Email count logic simplified, date range extended
  • archiveMessages renamed to trashMessages with updated response
  • Archive flow simplified to button + duration selection
  • TruncateLabel function limits domain display in EmailStats
Removed
  • MailsByDay component and associated data fetching
v0.7.02026-04-20
Added
  • OpenAI agent for Gmail interaction and email drafting via Telegram
  • HTML-to-text dependency and Telegram HTML formatting functions
  • Automated alerts for email categorization
  • Global API rate limiting with dynamic response headers
  • ioredis migration from Upstash Redis
  • MailsByDay component with time-saved metrics
  • Daily email statistics API integration
Fixed
  • Console logging for missing user token includes clerk user ID
  • Email labeling logic refined, redundant conditions removed
  • inngest downgraded to 3.54.0 for compatibility
Changed
  • Agentic workflow optimized with compact search and increased buffer
  • Agentic loop token usage optimized via result compression
  • OpenAI model updated from gpt-5.4-mini to gpt-5-mini
  • Font sizes increased in MailsByDay and LabelDistribution
  • Color scheme updated in MailsByDay
  • Take limits increased for clutter and top labels queries
v0.6.02026-04-10
Added
  • HeatMap component for inbox traffic and focus time visualization
  • Clutter component with hooks for clutter data management
  • Stats route for email metrics and engagement analysis
  • EmailStats component and fetching hooks
  • Endpoint to fetch email statistics by domain
  • Email unsubscribe functionality — link extraction, redirect handling
  • Outlook mail event update and webhook integration
  • Domain, is_read, and rawDomain fields in email_tracked model
  • Gmail API client with caching, message fetching, parsing, and drafting
  • WelcomeDialog component for onboarding
Fixed
  • Gmail attachment ID rotation handled by falling back to first available
  • Sender name and email assignment in Outlook mail processing
  • Email body snippet sanitization — HTML character escaping
  • Various console logs removed from Gmail processing
  • Truncation of email body for snippet in processing
Changed
  • HeatMap color scheme improved for clarity
  • LabelDistribution background colors updated
  • Clutter component styling: Avatar variant, gap, layout
  • Domain encryption uses libsodium with deterministic nonce
  • Sidebar updated: "Mails" → "Unsubscribe", icon to Shredder
  • Email classification enhanced with tag matching and category normalization
  • Classification rules refined for automated emails and response requirements
  • Sensitivity handling updated across processing functions
v0.5.02026-03-28
Added
  • Telegram integration for email notifications and management
  • Quick reply options and draft notification for Telegram
  • telegramPendingDraft table with unique constraint on chat_id
  • Gmail draft update and send functions with OpenAI text corrections
  • deleteGmailDraft function and route integration
  • checkAndForwardToTelegram with tagName support
  • Forward important mails and draft confirmation fields to TelegramIntegration
  • Integration rules model with user_tokens relation
  • Telegram query processing function with routing
  • sendTelegramMessage function for notifications
  • HTML escaping in handleTelegramQuery response
  • Attachment handling in Gmail and Telegram messaging
  • Chat history management with Redis in handleTelegramQuery
  • Feedback link in AppSidebar, "Delete Account" → "Danger Zone"
Fixed
  • Telegram webhook route matcher corrected
  • Response for unsubscribed users returns JSON
  • Subscription check added before Telegram messages
  • Rotating Gmail attachment IDs handled by fallback
  • Debug logs removed from attachment retrieval
Changed
  • OpenAI model updated from gpt-5.4-mini to gpt-5-mini
  • getModelTagsUser removed, tag references updated in email processing
  • Logging enhanced in checkAndForwardToTelegram
v0.4.02026-03-15
Added
  • Context engine with email entity extraction and Google Calendar integration
  • Draft context API and processing with context generation
  • Outlook calendar integration for draft processing
  • getGmailMessageBody function for full email body retrieval
  • Email classification with response requirement in OpenAI
  • Sensitivity field in draft_preference model and related types
  • Timezone support in draft preferences and processing
  • "Read only" label for specific email categories
  • Description field in tag model and UserTag
  • User Gmail status retrieval with label settings integration
  • Development route for Microsoft OAuth token retrieval
Fixed
  • Timezone encoding in Google Calendar API requests
  • Google Calendar queries respect local timezone boundaries
  • Variable names corrected for token and email body in draft processing
  • GPT model deployment name corrected to gpt-5-mini
Changed
  • OpenAI classifier replaces model classification in email processing
  • classifyEmail enhanced with available categories in prompt
  • max_completion_tokens increased from 20 to 40
  • Label handling simplified, CATEGORY_UPDATES check removed
  • classifyEmail simplified, unused generateEmailReply removed
  • response_required handling removed from classification
  • Email body extraction simplified — HTML handling removed
  • Full email body retrieved and truncated for snippet
  • Classification rules updated for priority and semantic context
  • Category descriptions updated for clarity
  • Conflict messaging shows all busy slots
  • Calendar providers privacy menu item commented out
v0.3.02026-03-05
Added
  • Microsoft Outlook integration — webhook, subscription management, email fetching
  • Outlook email processing and label correction
  • Outlook watch and subscription renewal support
  • Outlook preset field in tag model
  • is_folder field in user_tokens model for folder categorization
  • UpdateFolderPreference component with folder messaging
  • Customer portal with payment history and subscription handling
  • Billing component on billing page
  • DodoPayments integration for payment processing
  • GitHub Actions workflow for production database migration
  • Initial database migration: user_tokens, tag, and related tables
  • Gmail API history and message retrieval error handling
Fixed
  • Subscription query filters by next billing date and cancellation status
  • activateWatch uses clerk_user_id instead of dodoSubscriptionId
  • Default value of is_folder set to false
  • Model deployment name corrected to gpt-4.1-mini
  • /all route error handling and public API route inclusion
  • README updated with Outlook integration details
Changed
  • Privacy settings description updated with link
  • Rate limiting logic enhanced, identifier includes user ID
  • Label mapping simplified in classifyEmail
  • Email classification rules refined for finance and domain contexts
  • Font family updated in globals.css
v0.2.02026-02-14
Added
  • DodoPayments checkout session with country-based product selection
  • Trial period (14 days) if not previously taken
  • Subscription status display and cancel button in Billing
  • Wallet balance retrieval in Billing component
  • Subscription modal with 7-day free trial offer
  • Reserved keywords validation for label names
  • Dockerfile with multi-stage build and .dockerignore
  • Permissions modal and scope fetching logic
  • Custom label creation with description field
  • Email classification with axios integration
  • Cron job endpoint for user deletion
  • Watch renewal endpoint for active subscriptions
  • Refund processing endpoint with automated logic
  • Login.svg asset
  • API timeout increased to 120 seconds
Fixed
  • Subscription status handling extended in addSubscriptiontoDb
  • User subscription check in Gmail webhook handler
  • Hardcoded user check removed from addSubscriptiontoDb
  • Wallet balance display reflects correct value
  • Checkbox and button disabled when user is unsubscribed
  • Timestamp fields updated to Timestamptz
  • Subscription queries ordered by updatedAt
  • Authorization header validation in Gmail webhook
  • Package vulnerabilities fixed
  • Domain updated from neatmail.tech to neatmail.app in CSP
Changed
  • TrackedEmail component layout, header, and sender formatting
  • README updated with Docker support, environment config
  • Endpoint renamed from /create to /addTagtoUser
  • Query invalidation added for watch and tag mutations
  • Tag names trimmed before duplicate check
  • Thread processing logic updated for correct Redis key usage
v0.1.02026-02-01
Added
  • Initial Next.js project setup with App Router and Hono API mount
  • Clerk authentication integration with middleware in proxy.ts
  • Prisma ORM with PostgreSQL — custom output path for generated client
  • Redis-based sliding window rate limiter
  • Gmail webhook handling with PubSub push notifications
  • Gmail API watch management
  • Email tracking model (email_tracked) with user and domain tracking
  • Basic subscription management with DodoPayments
  • User account deletion flow with watch deactivation
  • Content-Security-Policy headers
  • NeatMail Open Source License
Fixed
  • Thread processing logic and duplicate tag prevention
  • Message processing with unmarkMessageProcessed function
Security
  • Authorization header validation for webhook endpoints
  • Environment variable configuration for all secrets
  • Content-Security-Policy for neatmail.app domain
// what's next

Follow the public roadmap.

See what we're building next and join the conversation on GitHub.

View on GitHub