Build And Push Image / docker (push) Successful in 3m15sDetails
- Enhanced session endpoint to fetch complete member data from database
- Added getMemberByKeycloakId function to nocodb utils for member lookup by Keycloak ID
- Session endpoint now returns both user authentication data and complete member profile
- User dashboard will now display proper member information instead of 'Not provided'
- Handles cases where member record might not exist gracefully
Build And Push Image / docker (push) Successful in 3m11sDetails
- Fix malformed verification links caused by config.public.domain
- Use absolute HTTPS URLs for verification links in both registration and verification emails
- Ensures verification buttons work correctly in all email clients
- Fixes the 'app://renderer/' URL prefix issue seen in email clients
Build And Push Image / docker (push) Has been cancelledDetails
- Fix logo URLs in all email templates to use absolute HTTPS URL
- Ensures MonacoUSA logo displays correctly in all email clients
- Updated all email service methods to use https://portal.monacousa.org/MONACOUSA-Flags_376x376.png
Build And Push Image / docker (push) Successful in 3m20sDetails
- Convert all email templates to table-based layouts for compatibility with Outlook, Gmail, Apple Mail, etc.
- Use only inline CSS and email-safe properties
- Fix welcome.hbs, verification.hbs, password-reset.hbs, dues-reminder.hbs, test.hbs templates
- Enhanced user dashboard with complete member information (Member ID, registration date, dues status, etc.)
- Added proper loading states and error handling for member data
- Improved member profile page with comprehensive information display
- Fixed missing wiring information in user and profile screens as requested
Build And Push Image / docker (push) Successful in 3m25sDetails
- Generate and store unique member IDs during user registration
- Update email templates to include formatted member ID and registration date
- Add member_id field mapping in NocoDB utility functions
- Enhance email service with better logging and template data handling
Build And Push Image / docker (push) Successful in 3m23sDetails
- Add payment date dialog when marking dues as paid with date validation
- Replace direct member view emission with dedicated ViewMemberDialog component
- Add backend support for custom payment dates in mark-dues-paid endpoint
- Prevent future date selection for payment records
- Improve user workflow for viewing and editing member details
Build And Push Image / docker (push) Successful in 2m55sDetails
- Add grace period logic for new members (1 month from join date)
- Enhance dues status computation with actual payment date validation
- Update member card to show grace period status with warning indicators
- Remove overdue dues banner from member list
- Add payment due date calculation in registration process
- Update email templates for improved member communication
Build And Push Image / docker (push) Successful in 2m42sDetails
- Enhanced update-overdue-statuses API to calculate and return specific overdue durations (years/months)
- Updated overdue-count API to provide detailed member information with overdue durations
- Enhanced DuesOverdueBanner component to display expandable list of overdue members with their specific overdue time
- Added automatic marking of members as inactive when dues are over 1 year overdue
- Improved UI to show 'Dues Overdue - X Members Affected' with detailed breakdown
- Members with overdue dues now display exact time overdue (e.g., '2 years 3 months overdue')
- Added proper TypeScript interfaces for overdue member data
- Enhanced banner shows inactive status and overdue duration for each affected member
Build And Push Image / docker (push) Successful in 2m55sDetails
- Create DuesOverdueBanner component for displaying overdue member counts
- Add API endpoints for overdue count retrieval and status updates
- Integrate overdue dues banner into admin and member list dashboards
- Implement handlers for viewing overdue members and updating statuses
- Add dues management section to admin dashboard
Build And Push Image / docker (push) Successful in 3m3sDetails
- Add BoardDuesManagement and DuesActionCard components
- Create API endpoints for dues status tracking and payment marking
- Integrate dues management section into board dashboard
- Move create portal account button to member card action buttons
- Add edit button to member view dialog
- Implement member update handlers and navigation between views
Build And Push Image / docker (push) Successful in 3m3sDetails
Remove global fixed-position logo from app.vue and integrate it as the navigation drawer toggle button in the dashboard layout's app bar. This improves the layout by eliminating overlay positioning issues while maintaining logo visibility and functionality.
Build And Push Image / docker (push) Successful in 3m2sDetails
- Add MonacoUSA logo component with global header placement
- Implement member ID generation and migration system
- Create profile page and improve dashboard navigation
- Add member ID as payment reference in dues banner
- Enable support contact functionality with pre-filled email
Build And Push Image / docker (push) Successful in 2m54sDetails
Temporarily comment out PWA module configuration and service worker
unregistration to debug reload loop issues on mobile Safari. Added
test documentation and console logging for debugging purposes.
Build And Push Image / docker (push) Successful in 3m2sDetails
- Implement comprehensive reload loop prevention utility
- Add initialization checks to setup-password, verify, and signup pages
- Include timeout protection and error handling for config loading
- Add fallback defaults to prevent page failures on mobile devices
- Document mobile reload loop prevention system
Build And Push Image / docker (push) Successful in 2m56sDetails
- Store config cache in window.__configCache instead of module-level variable to maintain persistence across Vue reactivity cycles
- Fix cardClasses ref to store computed value instead of function
- Add client plugin for config cache initialization
- Add documentation for mobile Safari reload loop fix
Build And Push Image / docker (push) Successful in 3m31sDetails
Convert reactive computed() query parameters to static ref() values in auth pages to prevent infinite reload loops on mobile browsers. Affects setup-password, verify-expired, and verify-success pages.
Build And Push Image / docker (push) Successful in 2m53sDetails
Implement rate limiting and attempt tracking to prevent verification abuse and infinite reload loops. Add temporary blocking with clear user feedback, enhanced error states, and retry logic. Includes new verification state utilities and improved UI components for better user experience during blocked states.
Build And Push Image / docker (push) Successful in 3m7sDetails
- Replace reactive device detection with static utilities to prevent
infinite reload loops on mobile Safari
- Add static-device-detection.ts for one-time device info computation
- Add config-cache.ts for improved configuration loading performance
- Apply mobile Safari viewport and CSS optimizations across auth pages
- Remove reactive dependencies that caused rendering issues on iOS
Build And Push Image / docker (push) Failing after 2m27sDetails
Replace custom useMobileDetection composable with Nuxt's useDevice(),
removing reactive mobile detection in favor of static detection to
prevent reload loops and simplify viewport handling
Build And Push Image / docker (push) Successful in 3m21sDetails
- Add togglePasswordVisibility function with mobile-specific handling
- Set font-size to 16px on password inputs to prevent iOS zoom
- Add autocomplete="new-password" attribute to password fields
- Increase tap target size for password visibility toggle on mobile
- Configure viewport meta tag to disable zoom on iOS devices
- Disable transitions on mobile for better performance
Build And Push Image / docker (push) Successful in 3m3sDetails
- Disable transitions and make menu persistent on mobile devices
- Add keyboard open/close detection to prevent unwanted viewport updates
- Differentiate between keyboard events and actual viewport changes
- Improve resize debouncing with longer delays for mobile
- Handle orientation changes separately from keyboard events
Build And Push Image / docker (push) Successful in 2m54sDetails
- Replace server-side redirects with JSON API responses for better error handling
- Add support for partial success when Keycloak update fails but token is valid
- Improve error messages with specific status codes (410 for expired, 409 for already used)
- Extract email from API response instead of URL query parameters
- Enable client-side navigation with proper error state management
Build And Push Image / docker (push) Successful in 3m2sDetails
- Replace external password setup link with internal navigation
- Add comprehensive password validation utility with strength requirements
- Create dedicated password setup page and API endpoint
- Streamline user flow from email verification to password creation
Build And Push Image / docker (push) Successful in 3m0sDetails
```
Fix mobile Safari country dropdown with touch-optimized dialog interface
- Replace broken v-select with mobile-friendly dialog for Safari
- Add device detection to switch between desktop and mobile interfaces
- Implement full-screen country selection with search functionality
- Add touch-optimized UI with larger targets and smooth scrolling
- Update documentation with fix details and implementation notes
```
The main change is addressing a completely broken country selection dropdown on mobile Safari by implementing a mobile-specific dialog interface while maintaining the original desktop experience.
Build And Push Image / docker (push) Successful in 2m59sDetails
- Update domain configuration to portal subdomain with HTTPS
- Add keycloak_id field to member creation and update operations
- Add API endpoint for linking Keycloak accounts to existing members
Build And Push Image / docker (push) Successful in 3m7sDetails
- Update domain config to use portal.monacousa.org for verification links
- Correct membership fee from €50 to €150/year in welcome emails
- Add password setup link to verification success page
- Include registration date in welcome email template
Build And Push Image / docker (push) Successful in 2m50sDetails
- Add Keycloak user deletion to member removal process
- Implement Handlebars email templates for verification, password reset, and dues reminders
- Improve JWT secret configuration with multiple fallbacks
- Add getMemberById function and enhance error handling
- Update Dockerfile to include email templates in production build
Build And Push Image / docker (push) Successful in 2m51sDetails
- Add jwtSecret to runtime config with fallback to sessionSecret
- Enhance email error tracking in portal account creation API
- Fix jsonwebtoken imports and improve type safety
- Include detailed email error information in API responses
Build And Push Image / docker (push) Successful in 2m54sDetails
Handle masked sensitive fields (passwords/secrets) in reCAPTCHA and SMTP
configuration endpoints. When the frontend sends masked values (bullets),
preserve existing credentials instead of overwriting them. This prevents
accidental credential loss when updating other configuration fields.
- Check for masked placeholder values ('••••••••••••••••')
- Preserve existing secretKey/password when masked
- Add logging to track credential update actions
Build And Push Image / docker (push) Successful in 2m56sDetails
- Add explicit POST method to portal account creation API call
- Improve error handling with specific messages for different failure cases
- Remove SMTP verification step that was causing issues with some servers
- Make email sending non-critical to portal account creation success
- Add better response data handling for keycloak_id
- Add integration review documentation
Build And Push Image / docker (push) Successful in 2m54sDetails
- Simplify admin dashboard by consolidating configuration sections
- Fix mobile dropdown display issues in PhoneInputWrapper component
- Add proper flex layout and minimum height for mobile country list
- Update email configuration and testing functionality
- Remove redundant configuration cards in favor of unified portal settings
Build And Push Image / docker (push) Successful in 3m10sDetails
Convert getEmailService() to async function and update all callers to use await.
Replace synchronous require() with dynamic import() for admin-config module.
Add SMTP config loading to admin configuration dialog.
Build And Push Image / docker (push) Successful in 3m1sDetails
- Add SMTP configuration UI in admin panel with test functionality
- Implement email verification workflow with tokens and templates
- Add verification success/expired pages for user feedback
- Include nodemailer, handlebars, and JWT dependencies
- Create API endpoints for email config, testing, and verification