Changelog

Track all notable changes, improvements, and fixes to the HelprPass platform.

# Changelog

All notable changes to Handy Pass will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.4.2] - 2025-09-17

### Fixed
- **Duration Calculation Bug**: Fixed critical issue where dropdown metafield time impacts were not being calculated
  - "Bag and remove" option now correctly adds 20 minutes to service duration estimate
  - "Mulch into lawn" option correctly adds 0 minutes (no time impact)
  - Fixed JSON double-encoding issue in `time_impact_config` that caused time multipliers to default to 0
- **Metafield Time Impact Processing**: Enhanced JavaScript calculation logic to handle `fixed_per_option` type metafields
  - Added missing case for dropdown-based time impacts in duration estimation
  - Improved debug logging to track time impact calculations across all metafield types

### Enhanced
- **Service Duration Accuracy**: Complete time estimation now factors in both acreage-based multipliers and dropdown selection impacts
  - Lawn mowing service now shows accurate total duration (base time + lot size impact + disposal method time)
  - Real-time duration updates when switching between "Bag and remove" vs "Mulch into lawn" options

## [1.4.1] - 2025-08-27

### Enhanced
- **Service Tracker Status Display**: Replaced generic "Completed" and "Self-Completed" statuses with actionable countdown/overdue information
  - Shows "X days until next suggested service" when service is not yet due
  - Shows "Likely overdue by X days" when past suggested service interval
  - Changed "Not Yet Completed" to "Needs Attention" for better clarity
- **Navigation Menu Reorganization**: Improved user workflow with optimized menu structure
  - "Request Service" now first menu item with property dropdown selection
  - "Service Tracker" moved to second position for better discovery
  - Property dropdown shows appropriate icons (home/car/building) for each property type

### Improved
- **Properties Page UX**: Streamlined interface by removing redundant elements
  - Removed duplicate "Active" indicators (kept only checkmark icon)
  - Removed primary property system and "Make Primary" buttons
  - Added "View Service History" button to each property card
  - Changed share icon from generic share to user-plus for clarity
  - Removed home icon from "My Properties" heading for neutrality

### Fixed
- **Service Tracker Bug**: Fixed broken route for viewing service requests from tracker
- **Table Layout**: Enhanced Service Tracker table with proper borders and increased Schedule column width (15% → 25%)

## [1.4.0] - 2025-08-22

### Fixed
- **Template Syntax Errors**: Resolved critical Jinja template issues in property onboarding that caused Internal Server Error
- **JavaScript Function Error**: Fixed "addPresetOption is not defined" error by correcting template block name from {% block scripts %} to {% block extra_js %}
- **Nested Conditional Blocks**: Cleaned up complex if/elif/endif structure in property_question.html template
- **Preset Button Layout**: Maintained col-3 (1/4 width) sizing for preset options as requested for optimal mobile display

### Technical Improvements
- Completely restructured number field template section for better maintainability
- Eliminated duplicate navigation sections and redundant template blocks
- Applied consistent button sizing across all preset option interfaces
- Enhanced template error handling and validation

## [1.3.10] - 2025-08-21

### Fixed
- **Member Pricing Display Bug**: Fixed critical issue where member savings displayed as $0 instead of correct discount amount
- **Property Compatibility**: Improved service request flow to automatically switch to compatible properties with user notification instead of causing errors
- **API Pricing Calculation**: Fixed override_subscriber parameter handling in calculate-price endpoint to properly differentiate member vs non-member pricing

## [1.3.9] - 2025-08-21

### Enhanced
- **Timeline System**: Completely revamped service request timeline display for improved chronological accuracy
- Enhanced timeline styling with larger icons and removed background circles for cleaner appearance
- Fixed chronological ordering to show proper event sequence: Service Requested → Vendor Assigned → Service Accepted → Admin Updates → Service Scheduled → Service Started → Progress Reports
- Added missing vendor acceptance event with estimated timing based on assignment timestamps
- Improved vendor assignment information showing which vendor accepted the request
- Added service start timestamp based on scheduled arrival time for better timeline accuracy

### Technical Improvements
- Updated timeline generation logic with proper event sequencing and chronological sorting
- Enhanced CSS styling for timeline components with better visual hierarchy
- Implemented intelligent date estimation for missing timestamps in historical data
- Added comprehensive timeline sorting function to handle mixed date/null values properly

## [1.3.8] - 2025-08-20

### Enhanced
- **Timeline UI**: Mirrored admin timeline view to customer service request details page
- Updated timeline styling with table-like information display for better readability
- Enhanced chronological ordering including vendor assignment, acceptance, and service start events
- Implemented comprehensive duplicate submission prevention for progress reports with loading states

### Fixed
- Fixed timeline chronological ordering with proper vendor assignment and acceptance timestamps
- Resolved duplicate progress report submissions with button disabling and error handling
- Enhanced timeline styling by removing background circles and making icons larger

### Technical Improvements
- Added proper button state management for progress report forms
- Updated project version tracking and changelog maintenance
- Enhanced customer service request detail view with admin-style timeline display

## [1.3.6] - 2025-08-16

### Fixed
- **CRITICAL**: Completely removed 10% non-subscriber markup from all pricing calculations and displays
- Corrected member pricing to use proper `member_rate` values from metafield configurations
- Fixed dynamic pricing calculations when "Sign Me Up!" membership checkbox is selected
- Resolved savings calculation to show accurate difference between member and non-member pricing
- Enhanced API endpoint with subscriber override support for real-time membership pricing

### Enhanced
- Updated membership checkbox text with "Learn More" link to membership page
- Implemented dynamic savings calculation that updates based on metafield inputs
- Added real-time pricing breakdown display when membership is selected
- Improved member vs non-member pricing transparency with clear calculations

### Technical Improvements
- Enhanced `/api/calculate-price` endpoint with `override_subscriber` parameter
- Added comprehensive JavaScript functions for dynamic pricing updates
- Implemented parallel API calls for accurate savings calculations
- Updated server-side pricing to use actual metafield values for savings computation

## [1.3.5] - 2025-08-15

### Fixed
- **CRITICAL**: Resolved multiple Internal Server Errors in onboarding property-basics route
- Fixed database constraint violations where HomeDetails table required user_id field during property creation
- Corrected SQLAlchemy relationship errors where property_type field was incorrectly assigned strings instead of objects
- Fixed property type mapping ensuring form values (single_family, condo, etc.) properly map to database 'residential' type
- Resolved blueprint naming error in membership offer template (referral_routes → referral)

### Enhanced
- Improved membership offer page with more direct "Become a HelprPass Member" heading
- Updated first membership benefit to "Pays for itself on the first service!" for clearer value proposition
- Made referral code section more discreet with stacked buttons and collapsible design
- Added auto-fade functionality for success alerts that disappear after 4 seconds
- Removed "No long term commitment" text, simplified to "Cancel anytime"

### Technical Improvements
- Implemented robust property type mapping with fallback logic ensuring property_type_id is never null
- Added comprehensive error handling for database constraints in onboarding flow
- Enhanced form validation to ensure all required fields are properly populated
- Updated template references to use correct blueprint names for URL generation

## [1.3.4] - 2025-08-13

### Added
- **MAJOR**: Enhanced vendor service request acceptance with comprehensive decline functionality
- Interactive decline modal with standardized reason selection and optional notes
- Real-time countdown timer showing auto-decline deadline with color-coded urgency indicators
- Customer risk notification system displaying color-coded risk badges (Red/Amber/Green) to vendors
- Complete customer scoring configuration viewer with detailed formula display
- Privacy-focused decline messaging that doesn't reveal internal routing decisions to vendors

### Enhanced
- Vendor request acceptance interface now includes both accept and decline options in single view
- Customer risk information prominently displayed during vendor decision-making process
- Auto-decline timer changes color as deadline approaches (warning at 2 hours, danger at 1 hour)
- Admin customer scoring dashboard with working configuration detail viewer
- Comprehensive decline reason tracking with proper categorization and notes

### Technical Improvements
- Added CSRF token protection to decline form modal
- Implemented `viewConfig` JavaScript function with modal display for configuration details  
- Created new backend route `/admin/scoring/customer/config/<id>/details` for configuration data
- Enhanced vendor routing system with privacy-conscious success messaging
- Improved decline workflow with proper vendor routing and customer notifications
- Updated replit.md with latest customer scoring system implementation status

### Fixed
- Missing JavaScript function for customer scoring configuration eyeball icon clicks
- CSRF token security error when submitting decline requests
- Configuration viewer modal now properly displays all scoring parameters and component weights

## [1.3.3] - 2025-08-10

### Added
- **MAJOR**: Comprehensive billing transparency for shared properties
- Complete service history visibility for all authorized property users
- User identification system showing who requested and paid for each service
- Enhanced property sharing system with full access control integration

### Enhanced
- Service request queries now show ALL property services (not just user-owned)
- Service history templates display "Requested by [User Name]" for transparency
- Dashboard service cards show requester information for shared properties
- Property access control uses accessible_properties() method throughout application
- Integrated shared property support across all service-related interfaces

### Technical Improvements
- Updated all service request database queries to filter by property rather than user
- Enhanced service history and dashboard templates with conditional user identification
- Improved property context processor for consistent shared access
- Strengthened billing transparency with clear service ownership indicators
- Comprehensive template updates across service history, dashboard, and property management

## [1.3.2] - 2025-08-07

### Fixed
- **CRITICAL**: Metafield deletion functionality completely restored
- Fixed nested form submission issue where delete button triggered edit form instead of delete form
- Added missing PropertyTypeMetafield association cleanup to prevent database constraint violations
- Resolved "Metafield updated successfully" message appearing when attempting deletion
- Fixed database foreign key constraint errors during metafield deletion process

### Technical Improvements
- Separated delete form from edit form to ensure proper route targeting
- Enhanced delete route with comprehensive cleanup of all related database tables:
  - ServiceRequestMetafieldValue records
  - UserMetafieldPreference records  
  - PropertyMetafieldPreference records
  - PropertyTypeMetafield associations
  - ServiceMetafield assignments
- Improved error handling and logging for metafield deletion operations
- Added proper transaction rollback on deletion failures

## [1.3.1] - 2025-08-07

### Enhanced
- Service-Property Type Association System Implementation
- Enhanced Service Request Page & Dashboard Search Animation  
- Rewards System Enhancement - First Property Completion Bonus
- Admin Dropdown Enhancement & Menu Consistency
- Property Edit Page Enhancement & Profile Completion Fix

## [1.3.0] - 2025-08-06

### Added
- Sticky save changes bar to property edit page with real-time change tracking
- Visual indicators for modified fields (yellow background and left border)
- Keyboard shortcut support (Ctrl+S) for saving changes
- Warning prevention system for legitimate form submissions
- Profile completion notification system with proper section mapping

### Fixed
- Profile completion notification bug where missing sections weren't displayed
- False "Changes may not be saved" browser warnings when clicking save buttons
- Template section name mapping from deprecated field names to current property system
- Form submission handling to prevent unnecessary browser warnings

### Technical Improvements
- JavaScript change tracking system with pendingChanges object
- Form submission flag system to bypass warnings during saves
- Real-time sticky bar updates with change count display
- Enhanced form validation and user experience consistency

## [1.2.0] - 2025-08-06

### Added
- Google Analytics integration with conditional loading
- Property management cleanup and navigation reorganization
- Enhanced service status management system with disable/archive functionality
- Comprehensive client-side input validation for vendor business profiles
- Property-specific service history filtering
- Photo upload enhancement with conditional display
- Dedicated Service History page with comprehensive service tables and filtering

### Changed
- Moved "Billing" menu item from primary navigation to Account dropdown
- Relocated "Manage Properties" and "Add Property" from property switcher to Account dropdown
- Updated navigation structure for better organization and user experience
- Enhanced vendor validation with EIN and phone auto-formatting
- Improved photo upload section visibility logic
- Reorganized dashboard by moving service tables to dedicated Service History page
- Added "Service History" link to Account dropdown menu for easy access
- Replaced "Request New Service" button with prominent gradient search bar featuring live filtering
- Enhanced search bar with attractive gradient design and integrated category dropdown filter
- Removed "Your Services" heading for cleaner dashboard layout
- Replaced service credit display with property switcher in header
- Updated welcome message to show current property name and full address
- Fixed property address display issue (was checking wrong field name)
- Updated address display to single line format without location icon
- Fixed profile completion notification to show missing sections properly
- Added sticky save changes bar to property edit page with real-time change tracking
- Fixed false "Changes may not be saved" warning when clicking save buttons

### Removed
- Obsolete `/property-details` page and associated template
- Legacy property details functionality (superseded by modern property system)

### Fixed
- Property switching dropdown functionality across all pages
- Authentication errors in AJAX requests for property switching
- Photo upload display bug where section appeared incorrectly
- Service status management to prevent orphaned records
- Enhanced data integrity for service deletion operations

### Technical Improvements
- Database schema synchronization with production
- Column rename operation: "current_date" to "submitted_date" in date_change_request table
- Enhanced delete protection for services with request history
- Real-time formatting for vendor input fields
- Google Places autocomplete integration for address validation

## [1.1.0] - 2025-07-28

### Added
- Multi-property management system
- Property-specific service isolation
- Enhanced user experience with property switcher
- Comprehensive license verification system
- Google address validation for vendor profiles
- Federal EIN requirements for vendor registration
- Easily fulfillable services for manual vendor matching

### Enhanced
- Vendor verification system with Google Places autocomplete
- Property onboarding with metafield customization
- Service request workflow improvements
- Admin interface with property-specific views

## [1.0.0] - 2025-06-01

### Added
- Initial release of Handy Pass platform
- Flask-based web application with PostgreSQL database
- User authentication and authorization system
- Service request and vendor management
- Payment processing with Stripe integration
- Rewards system with tiered benefits
- Email and SMS verification capabilities
- Google Maps integration for service areas
- Admin dashboard for platform management
- Comprehensive metafield system for customizable services

### Features
- Multi-role user support (homeowners, vendors, admins)
- Dynamic service catalog with flexible pricing
- Recurring service management
- Vendor application and approval workflow
- Real-time service request matching
- Payment processing with hold and release mechanisms
- Review and rating system
- Responsive web design with Bootstrap integration

---

## Version History Summary

- **v1.2.0**: Navigation improvements, Google Analytics, enhanced validation
- **v1.1.0**: Multi-property system, vendor verification enhancements  
- **v1.0.0**: Initial platform release with core functionality