- Add horizontal margins to modals on mobile devices
- Optimize grid layouts with smaller breakpoints (md→sm)
- Make action buttons full-width on mobile with touch optimization
- Adjust text sizes and spacing for better mobile readability
- Enhance date filter and export controls for mobile interaction
- Add checkbox to include 5% processing fee in PDF exports
- Install PDF generation dependencies (@pdfme/common, @pdfme/generator, sharp)
- Add server-side expenses API endpoints
- Update PDF options interface to support processing fee toggle
- Add expense list and detail views with filtering capabilities
- Implement receipt image viewer and PDF export functionality
- Add currency conversion support with automatic rate updates
- Create API endpoints for expense CRUD operations
- Integrate with NocoDB for expense data persistence
- Add expense menu item to dashboard navigation
- Replace iframe embed with full-featured berth status dashboard
- Add BerthDetailsModal and BerthStatusBadge components
- Implement search, filtering, and multiple view modes
- Add berth management API endpoints (get-by-id, update)
- Include measurement conversion utilities and type definitions
- Provide status summaries and visual berth overview
- Integrate libphonenumber-js for proper phone number formatting
- Display phone numbers in national format in PhoneInput component
- Strip non-numeric characters from phone input automatically
- Fix refresh button icon rendering in EmailThreadView
- Improve EOI button layout alignment and centering
UI/UX Enhancements:
- Improved spacing between Generate EOI and Upload EOI Document buttons
- Mobile: gap-3 (12px), Desktop: gap-4 (16px) for better visual separation
- Enhanced mobile table layout with stacked status badges
- Fixed email thread width issues on mobile devices
Database Integrity Fixes:
- Fixed missing embedded signature link cleanup in deletion endpoints
- Enhanced validation system to automatically detect and clean orphaned records
- All EOI deletion operations now properly clear:
* EmbeddedSignatureLinkClient, EmbeddedSignatureLinkCC, EmbeddedSignatureLinkDeveloper
* Legacy signature links and documensoID references
* Sales Process Level and EOI Status resets
Real-time Reactivity Improvements:
- EOI section now immediately updates UI after document deletion/validation
- Added local reactive state for instant visual feedback
- Eliminated phantom signatory status displays
- Enhanced hasGeneratedEOI computed property with validation override
Mobile Responsiveness:
- Implemented stacked badge layout for interest table
- Contact info + status badges in 60% width column
- Proper email thread text wrapping and width constraints
- Optimized button layouts and touch targets
Technical Robustness:
- Comprehensive field cleanup using undefined for proper database resets
- Enhanced error handling and logging throughout EOI workflows
- Better handling of edge cases and external document deletions
- Improved validation and cleanup automation
All EOI operations now maintain complete database consistency while providing immediate, accurate visual feedback to users across all devices.
EOI State Management Improvements:
- Added local reactive state (documentValidated, documentExists) to handle immediate UI updates
- Enhanced hasGeneratedEOI computed property to use local state when validation completes
- Fixed issue where EOI signatory status would persist after document deletion
Real-time UI Responsiveness:
- Component now immediately switches to Generate EOI UI when validation detects cleanup
- No longer requires manual page refresh to see correct state
- Proper state synchronization between validation results and UI display
Validation Logic Enhancement:
- validateDocument function now sets local reactive state immediately upon cleanup detection
- Added comprehensive logging for debugging EOI state transitions
- Handles edge cases where documensoID exists but document was deleted externally
User Experience Improvements:
- Automatic UI state transitions without user intervention
- Clear visual feedback when orphaned data is cleaned up
- Prevents phantom EOI states from confusing users
The EOI section now correctly and immediately shows the generate UI when no valid document exists, eliminating the confusion from phantom signatory status displays.
Interest Table Mobile Layout:
- Fixed broken table layout on mobile screens
- Optimized column widths to fit mobile viewports better
- Improved horizontal scrolling with visual indicators
- Enhanced responsive design for contact information display
- Better badge sizing and text truncation on mobile
Mobile Actions Enhancement:
- Added delete interest button to mobile actions section
- Improved button layout in 2x2 grid for better accessibility
- Added proper loading states and disabled states
- Enhanced visual hierarchy with icons and labels
Email Communication Fixes:
- Fixed refresh email button icon display on mobile
- Added proper mobile styling and tooltips
- Made button more accessible with larger touch targets
Email Thread Width Issues:
- Fixed email threads exceeding screen width on mobile
- Implemented proper text wrapping and overflow handling
- Optimized timeline layout for mobile viewports
- Enhanced email card responsiveness
- Better handling of long email addresses and content
- Improved expansion panel sizing and spacing
Mobile UX Improvements:
- Better touch targets and button sizing
- Improved visual feedback and loading states
- Enhanced text readability with optimized font sizes
- Consistent mobile spacing and padding throughout
- Fixed container overflow issues across components
All mobile components now properly respect viewport constraints and provide optimal user experience on mobile devices.
- Add new /api/eoi/validate-document endpoint to check document existence
- Automatically clean up orphaned database records when documents don't exist in Documenso
- Update EOISection component to validate documents on mount
- Enhanced delete-generated-document endpoint to handle already-deleted documents
- Updated check-signature-status endpoint with validation logic
- Prevents EOI section from showing when document no longer exists
- Self-healing system that fixes data inconsistencies automatically
Key improvements:
- Validates document existence before showing EOI management UI
- Cleans up documensoID, signature links, and status fields when document is missing
- Graceful handling of 404 errors from Documenso API
- Background validation with user-friendly notifications
- Prevents phantom EOI states that appear generated but don't exist
- Add full PWA configuration with manifest and service worker
- Create PWAInstallBanner component with mobile detection
- Implement install banner on login page (shows below login form)
- Add usePWA composable for reusable PWA functionality
- Configure offline support with Workbox caching strategies
- Add PWA initialization plugin
- Update app name to 'Port Nimara Portal' throughout
- Use circular logo in install banner and instructions
- Banner shows only once and hides if already installed
- Support both Android (direct install) and iOS (manual instructions)
- Add comprehensive documentation for PWA implementation
Features:
- Mobile-only install banner with dismissal tracking
- Standalone mode detection to hide banner when installed
- Platform-specific installation instructions
- Offline functionality with API caching
- Auto-updating service worker
- Native app-like experience when installed
EOI ENHANCEMENTS:
- Fix EOI deletion to clear ALL signature fields (embedded links, timestamps, etc.)
- Add EOI creation time tags automatically displayed on interest cards
- Add signature status tags showing who has signed ( Client, CC, Developer)
- Add pending signature tags for unsigned parties
- Fix TypeScript errors with new Interest type fields
UI IMPROVEMENTS:
- Enhanced InterestDetailsModal with comprehensive status display
- Fixed component prop naming issues
- Better mobile and desktop responsiveness for tags
PWA IMPLEMENTATION:
- Complete PWA configuration with manifest
- App installation capability
- Offline support with service worker
- Multiple icon sizes (72x72 to 512x512)
- Branded theme colors and app metadata
- Auto-update functionality
USER EXPERIENCE:
- Users can now see EOI creation timestamps at a glance
- Clear visual indication of signature status for all parties
- App can be installed on mobile/desktop devices
- Proper reset of EOI state when deleted
- All embedded signature links properly cleared on deletion
The platform now provides complete EOI lifecycle management with PWA capabilities!
- Switch from localStorage to sessionStorage for email sessions
- Add session validation on component mount
- Implement IMAP connection pool with folder search capabilities
- Add operation locking utility for concurrent request handling
- Refactor EOI section component structure
- Update API endpoints for better email thread management
- 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