- Removed limit on cached emails - now loads ALL cached emails from MinIO
- Kept IMAP limit at 50 for reasonable performance
- Added loading indicator showing when emails are being fetched
- Fixed ES module import issue in email-utils.ts
- Improved user experience with visual feedback during loading
This ensures all email threads load completely while maintaining reasonable performance
- Fixed refresh button icon not displaying (changed from icon prop to v-icon element)
- Reduced default email limit from 50 to 20 to improve loading speed
- Optimized cached email loading to only load most recent emails (up to limit)
- Fixed CommonJS require error in email-utils.ts (changed to ES module import)
- Added sorting to cached files to ensure newest emails are loaded first
This should significantly improve email loading performance from 578 cached files down to max 20
- Added email attachment viewing and downloading functionality
- Removed 'Insert EOI link' button when EOI is already signed
- Changed refresh button color to black for better visibility
- Fixed Generate EOI button spacing with consistent margins
- Changed 'Interest Details' title to display client's full name
- Fixed mobile table scrolling cutoff in interest list by removing negative margins
- Improved email section mobile layout:
- Fixed button sizes and display for mobile screens
- Fixed thread section width to prevent horizontal scrolling
- Added proper padding and overflow handling for expansion panels
- Improved timeline and card responsiveness
- Removed EOI reminder settings as the field is not supported in database schema
- Fixed reply to thread button visibility with better styling (flat variant, larger size)
- Optimized email loading by reducing fetch limit from 200 to 50
- Fixed thread view visual issues with accordion variant and zero elevation
- Added explicit save button for email signatures
- Fixed reminder-related TypeScript errors by removing unused code
- Improved thread reply button positioning with proper margins
- Fixed delete interest button requiring multiple clicks by removing debounce
- Fixed Generate EOI button display on mobile devices
- Added horizontal scrolling with touch support for mobile interest list
- Removed Place of Residence field from interest creation form
- Enhanced EOI upload with better error handling and logging
- Fixed email attachment upload authentication issues
- Created EmailDetailsDialog component for viewing full email details
- Re-integrated email thread viewing with toggle between threads/all views
- Added reply functionality for individual emails and threads
- Optimized email loading performance by reducing fetch limit to 50
- Fixed visual bugs with thread expansion panels
- Added explicit save button for email signatures
- Improved file upload authentication and bucket creation for attachments
- Add file browser integration for selecting attachments
- Display attached files with remove functionality in composer
- Include attachments in email sending process
- Show attachment info in email thread display
- Update server endpoints to handle file attachments
- Minor UI improvements to EOI status badge layout
- Add reply button to each email in thread timeline
- Pre-fill composer with recipient, subject, and quoted content when replying
- Remove readonly constraint from recipient field in composer
- Handle reply-to-email event to populate composer with proper reply data
Extract EOI links and generation functionality from InterestDetailsModal
into a new reusable EOISection component. This improves code organization
and maintainability while adding debounce support for form submissions.
- Create new EOISection.vue component for EOI management
- Remove inline EOI links section from InterestDetailsModal
- Add debounce utility for form submission handling
- Update email generation and thread fetching logic
- Update related types and utilities
- Move logo to top of email signature for better formatting
- Enhance IMAP search to include CC/BCC fields and multiple folders
- Fix EOI document generation to properly send and extract signing URLs
- Update documentation with all email system fixes
- Handle missing email sessions gracefully without throwing errors
- Clear partial session data when no valid session exists
- Return empty results instead of 401 errors for missing credentials
- Remove hardcoded Documenso API key and require env variables
- Reduce email fetch limit from 50 to 20 for performance
- Add documentation for email system fixes
- Add Documenso API configuration to environment variables
- Create endpoint to generate EOI documents with e-signature capability
- Update email composer to insert generated EOI document links
- Add UI indicators for EOI generation status in interest details
- Emit events to refresh interest data after EOI generation
- Add email components for composing, viewing threads, and credential setup
- Implement server API endpoints for sending emails and fetching threads
- Add encryption utilities for secure credential storage
- Configure email settings in environment variables
- Integrate email functionality into interest details modal
- Standardize sales level color mapping across components
- Enhance delete button styling with flat variant and white text
- Improve stepper visualization with consistent color logic
- Optimize Safari scrolling performance with CSS transforms
- Add TypeScript casting for data operations
- Add colored chip display to dropdown items for better visual clarity
- Apply consistent base color to list items based on sales level
- Change progress bar to use static blue color instead of dynamic coloring
- Improve visual hierarchy and readability of sales process levels
- Add delete button with confirmation dialog to InterestDetailsModal
- Implement delete-interest API endpoint
- Add sales pipeline status section with visual indicators
- Update UI states to handle deletion loading states
- Add color-coded sales process level selection
Implement browser-specific download methods to ensure files download with correct filenames across all browsers. Safari now uses window.location.href while other browsers use blob URLs. Add Content-Disposition header to proxy endpoint for proper filename preservation.
- Implement proxy download endpoint for better mobile Safari compatibility
- Add bulk selection with checkboxes in file browser
- Add bulk actions bar for downloading/deleting selected files
- Replace direct S3 downloads with server-proxied downloads
- Fix download issues on mobile devices by using proper link handling
Replace window.open() with programmatic link creation and click to ensure
file downloads work properly on mobile Safari. Also adds proper filename
handling to preserve extensions during download.
Switch from embed to iframe element for displaying PDFs to improve
cross-browser compatibility and mobile experience. Add responsive
styling with proper positioning and iOS smooth scrolling support.
Adjust preview container heights for mobile devices.
- Implement file/folder rename feature with dialog and API endpoint
- Add rename button to file browser with keyboard shortcuts
- Switch PDF preview from object to embed tag for better compatibility
- Fix CORS issues by fetching preview files as blobs with object URLs
- Add proper cleanup for object URLs to prevent memory leaks
- Add renameObject utility function for MinIO operations
- Add console logging when setting preview proxy URL
- Enhance error handler to capture and log error event details
- Log current preview URL on load failure for debugging
- Create new `/api/files/proxy-preview` endpoint that fetches and serves files directly
- Update FilePreviewModal to use proxy endpoint for images and PDFs
- Set appropriate headers for inline display and caching
- Remove trailing slash from folder display names in file list
Remove conditional mobile styling from toolbar buttons and add dedicated
mobile action buttons section with improved card-based layout for better
mobile user experience.
- Use flagcdn.com for country flag images instead of emoji flags
- Add search functionality to filter countries in dropdown
- Expand country list to include all countries worldwide
- Improve country list UI with better layout and styling
- Add error handling for flag image loading failures
- Remove flag property from Country interface
Implement a custom PhoneInput component to replace the third-party v-phone-input library. The new component provides country selection, phone number formatting, and integrates seamlessly with Vuetify's form controls. Updated CreateInterestModal and InterestDetailsModal to use the new component.
Replace basic text fields with v-phone-input in CreateInterestModal and
InterestDetailsModal to provide country selection, validation, and better
UX for phone number entry. Includes US as default with preferred countries
list and search functionality.