๐Ÿ“ Changelog

Recent updates and improvements to ClaimIt

115 total commits ยท Last updated: November 20, 2025 7:49 PM

November 20, 2025

  • 96d522d 7:49 PM
    Center loading indicator on home page
    - Fix loading message being offset to the left
    - Add CSS to make loading indicator span all grid columns and center horizontally
    - Loading indicator now properly centered when it's the only child in items-grid
    by Dave Shevett
  • cf3dcd0 5:43 PM
    Add search functionality with compact search box in navigation
    by Dave Shevett

November 15, 2025

  • c68cb0e 10:38 PM
    Add paste-to-upload with validation and loading overlay
    New Features:
    - Paste images directly with Ctrl+V/Cmd+V on claim page
    - Client-side file size validation (8MB limit)
    - Professional loading overlay during upload (~10 seconds)
    - Image preview for pasted and selected files
    Paste-to-Upload:
    - Detects images in clipboard and auto-attaches to file input
    - Creates proper File object from pasted blob
    - Works with screenshots, copied images, etc.
    - Shows instant preview with success message
    File Size Validation:
    - Client-side validation before upload (8MB limit)
    - Matches PHP's actual upload limit to prevent failures
    - Shows red error box with actual file size if too large
    - Applies to both pasted and manually selected images
    - Updated all error messages and help text to reflect 8MB limit
    Loading Overlay:
    - Appears when form is submitted with valid data
    - Centered modal with animated spinner
    - Clear messaging: 'Posting Your Listing...'
    - Prevents double-submission by disabling button
    - Professional design with dark semi-transparent background
    Bug Fixes:
    - Removed closing PHP tags from config.php and functions.php
    - Fixed 'headers already sent' errors caused by whitespace
    - Added output buffering to allow redirects from templates
    - Updated redirect() function to discard output buffer
    Technical:
    - Added ob_start() in index.php for output buffering
    - Updated redirect() to call ob_end_clean() before header
    - Client-side JS validates required fields before showing overlay
    - All file size checks now consistent at 8388608 bytes (8MB)
    UX Improvements:
    - Faster workflow - paste screenshots directly
    - Immediate feedback on file size issues
    - Visual confirmation during upload process
    - Prevents confusion during slow uploads
    by Dave Shevett
  • 5f6b899 9:53 PM
    Add paste-to-upload image functionality
    New Feature:
    - Users can now paste images directly from clipboard (Ctrl+V or Cmd+V)
    - Works on the claim page when posting new items
    - Automatically attaches pasted image to file input
    Implementation:
    - Added paste event listener to detect clipboard images
    - Creates File object from pasted blob and assigns to file input
    - Shows instant preview of pasted image with success message
    - Also shows preview for manually selected files
    - Handles cleanup of object URLs to prevent memory leaks
    UX Improvements:
    - Added helpful hint: 'Press Ctrl+V (or Cmd+V) to paste'
    - Visual feedback with green success box and image preview
    - Preview shows max 300x200px thumbnail
    - Works with screenshots, copied images, etc.
    Usage:
    1. Copy an image (screenshot, right-click copy, etc.)
    2. Go to claim page
    3. Press Ctrl+V (Windows/Linux) or Cmd+V (Mac)
    4. Image is attached and preview shown
    5. Submit form normally
    Makes posting items much faster and more convenient!
    by Dave Shevett
  • 04c5646 7:59 PM
    Set changelog timezone to Eastern Time (EDT/EST)
    Changes:
    - Added date_default_timezone_set('America/New_York') to generator
    - Automatically handles EDT (summer) and EST (winter) transitions
    - All timestamps now display in local Eastern time instead of GMT
    - Regenerated changelog with 110 commits showing correct times
    Example: '7:58 PM' instead of '12:58 AM' (GMT)
    This makes commit times more intuitive for development team.
    by Dave Shevett
  • 42c6212 7:53 PM
    Fix deploy workflow to handle local file changes
    Issue:
    - Production server had local changes to composer.lock
    - Git pull was aborting due to conflicts
    - New files (scripts/generate-changelog.php) weren't being pulled
    - Changelog generation failed with 'Could not open input file'
    Solution:
    - Added 'git stash' before 'git pull' in deploy workflow
    - Stashes any local changes on server before pulling
    - Allows clean pull without conflicts
    - Ensures all new files are properly deployed
    This prevents deployment failures when files are modified on server.
    by Dave Shevett
  • 2a98de3 7:47 PM
    Tighten changelog spacing and remove blank lines
    Changes:
    - Reduced line-height for better text density (1.3 for subjects, 1.4 for body)
    - Added regex filter to collapse multiple newlines into single ones
    - Removes excessive blank lines between bullet points in commit messages
    - Regenerated changelog with 108 commits
    Result: Cleaner, more compact changelog display
    by Dave Shevett
  • 5f11a0f 7:40 PM
    Fix navigation links to work from clean URLs
    Issue:
    - Navigation links used relative URLs (?page=home)
    - When on /changelog, links became /changelog?page=home
    - Router didn't recognize these, so navigation broke
    Solution:
    - Changed all navigation links to absolute URLs (/?page=home)
    - Works correctly from any page including clean URLs
    - Affects: header nav, footer, login, settings, logout links
    Testing: Navigation now works from /changelog page
    by Dave Shevett
  • bdf42fd 7:28 PM
    Add automated changelog feature
    New Features:
    - Automated changelog generation from git commit history
    - Accessible at /changelog with clean URL routing
    - Displays commits grouped by date with full details
    - Shows commit hash, subject, body, author, and timestamp
    - Auto-generates during deployment via GitHub Actions
    Files Added:
    - scripts/generate-changelog.php: Generates changelog JSON from git log
    - templates/changelog.php: Displays changelog with nice formatting
    - public/data/changelog.json: Generated changelog data (106 commits)
    Updates:
    - .github/workflows/deploy.yml: Added changelog generation step
    - router.php: Added /changelog route mapping
    - public/index.php: Added 'changelog' to available pages & footer link
    Implementation:
    - Changelog script parses git log with formatted output
    - Groups commits by date for better organization
    - Filters out merge commits for cleaner history
    - JSON output includes full commit details
    - Template displays in card layout with hover effects
    - Runs automatically on every deployment
    - Can also be run manually: php scripts/generate-changelog.php
    UI:
    - Modern card-based layout
    - Grouped by date with collapsible sections
    - Monospace font for commit hashes
    - Shows total commit count and last update time
    - Responsive design matching site style
    by Dave Shevett
  • bf2dbea 7:08 PM
    Fix PHP 8.4 AWS SDK compatibility warnings
    Issue:
    - AWS SDK was trying to parse system ~/.aws/config files
    - PHP 8.4's stricter INI parser was throwing warnings about
    incompatible multi-line syntax (e.g., 's3 =' with no value)
    - Warning: 'syntax error, unexpected = in Unknown on line X'
    Solution:
    - Added 'use_aws_shared_config_files' => false to AWS client configs
    - This prevents SDK from loading ~/.aws/config and ~/.aws/credentials
    - App now only uses credentials from config/aws-credentials.php
    - Eliminates PHP 8.4 compatibility warnings completely
    Also:
    - Updated aws/aws-sdk-php from 3.356.5 to 3.359.13
    - Better PHP 8.4 support in newer SDK version
    Result: Clean console output, no AWS warnings
    by Dave Shevett
  • b915614 6:39 PM
    Add multiple images per listing feature
    Major Features:
    - Support up to 10 images per listing
    - Thumbnail gallery with click-to-swap main image
    - Add/rotate/delete individual images (owners only)
    - Smart CDN cache bypass for instant updates after rotation
    File Naming:
    - Primary image: 20251115171627-a7k3.jpg (no index)
    - Additional images: 20251115171627-a7k3-1.jpg, -2.jpg, etc.
    New Helper Functions:
    - getItemImages() - Fetches all images for an item
    - getImageIndex() - Extracts index from filename
    - deleteImageFromS3() - Safely deletes images with validation
    - getNextImageIndex() - Gets next available slot
    New API Endpoints:
    - upload_additional_image - Add images to existing listings
    - delete_image - Delete specific images (prevents deleting last/primary)
    - rotate_image (updated) - Now supports rotating any image by index
    UI Enhancements:
    - Thumbnail gallery below main image
    - Hover controls on thumbnails (rotate/delete buttons)
    - Click thumbnails to view in main display
    - Add Image button for owners (when < 10 images)
    - Informational note on upload form
    Bug Fixes:
    - Fixed tracking number validation for new format (YmdHis-xxxx)
    - Updated both POST and GET-based request handlers
    - Fixed delete_item action mismatch in multiple templates
    - Fixed image index extraction in both PHP and JavaScript
    - Fixed thumbnail click event blocking by overlay controls
    - Fixed CloudFront CDN bypass for thumbnail images after rotation
    Backward Compatibility:
    - Old format (YmdHis) still fully supported
    - Single-image listings work as before
    - All validation handles both formats
    by Dave Shevett
  • 24dc0f7 10:49 AM
    Add random suffix to tracking numbers to prevent upload collisions
    - Changed tracking number format from YmdHis to YmdHis-xxxx
    - Adds 4-character random hex suffix (65,536 combinations per second)
    - Prevents filename collisions when multiple users upload simultaneously
    - Only affects new uploads; existing files remain unchanged
    by Dave Shevett

October 27, 2025

  • 8261b4d 11:09 PM
    Fix image rotation with CloudFront CDN caching
    - Add CloudFront invalidation support to clear CDN cache after image rotation
    - Implement hybrid approach: direct S3 URLs for immediate display + CloudFront invalidation
    - Add bypass_cdn flag to use presigned S3 URLs while CloudFront cache propagates
    - Fix broken cache clearing functions that weren't actually clearing PHP static caches
    - Add CloudFront distribution ID to AWS config
    - Update aws-credentials.example.php with CloudFront configuration template
    This ensures users see rotated images immediately without cache-related delays or image 'pop-back' issues.
    by Dave Shevett

October 9, 2025

  • 2b1664f 11:22 AM
    Fix image rotation functionality
    - Fix image key lookup to use correct 'images/' prefix for S3 storage
    - Add cache-busting timestamp to force CloudFront refresh after rotation
    - Enhance JavaScript to immediately update image with cache-busting parameter
    - Improve user experience with better visual feedback and timing
    Fixes issue where rotated images weren't displaying due to CloudFront caching.
    by Dave Shevett

September 29, 2025

  • 6871f83 1:42 PM
    Improve loading indicators and fix layout issues
    - Enhanced loading indicator design with rounded box and animated dots
    - Improved horizontal centering of loading indicators
    - Added smooth scaling animation for loading dots with staggered timing
    - Better typography and color contrast for loading text
    - Enhanced error message styling with helpful instructions
    - Fixed broken CSS grid layout on items and user-listings pages
    - Restored proper grid rendering after layout issues
    - Maintained improved loading indicator on home page
    - All pages now have consistent, professional loading experience
    by Dave Shevett
  • b30366e 12:23 PM
    Optimize user-listings page performance
    - Add getUserItemsEfficiently() function with batch YAML loading
    - Add getItemsClaimedByUserOptimized() function to eliminate AWS API bottlenecks
    - Replace O(nร—m) image searches with O(1) lookup tables
    - Pre-process claims data to avoid redundant AWS calls
    - Add 5-minute caching for user items and claimed items
    - Reduce template rendering time from 6+ seconds to milliseconds
    - Maintain all existing functionality while dramatically improving performance
    - Add comprehensive performance logging for monitoring
    by Dave Shevett
  • 4bcb948 11:31 AM
    Add mailto button for contacting claimants
    - Add email button next to each claimant on item page (only for item owners)
    - Pre-fill email with subject and body template for easy communication
    - Style both mailto and delete buttons with consistent pale green background
    - Improve button visibility with better contrast and unified design
    - Only show mailto button if claimant has email address
    - Secure implementation with proper escaping and conditional display
    by Dave Shevett

September 27, 2025

  • c8b7a9f 4:16 PM
    Add smtp-config.php to .gitignore
    - Prevent accidental commits of SMTP configuration file containing sensitive data
    - Ensures production deployments won't conflict with local SMTP config files
    by Dave Shevett

September 26, 2025

  • 67b0e11 12:45 PM
    Add new listing notifications feature and fix image upload regression
    - Add 'Notify me of any new listings' checkbox to settings page (defaults to unchecked)
    - Create getUserNewListingNotifications() function to retrieve user preferences
    - Update settings save handler to include new listing notification preference
    - Add sendNewListingNotifications() method to EmailService for bulk notifications
    - Create beautiful HTML and text email templates for new listing notifications
    - Integrate email notifications when new items are posted
    - Fix image upload regression - store images in images/ subdirectory for CloudFront compatibility
    - Fix EmailService listObjects() array structure access (use 'objects' key and lowercase 'key' property)
    - Add comprehensive error handling and logging for email notifications
    - Exclude item owner from receiving notifications about their own items
    by Dave Shevett
  • 365c8a5 12:09 PM
    Replace settings modal with dedicated settings page
    - Create new /settings page with modern responsive design
    - Remove settings modal from home page to improve performance
    - Update navigation to link to dedicated settings page
    - Clean up JavaScript by removing modal-related functions
    - Fix checkbox layout styling for better visual balance
    - Maintain all existing settings functionality
    - Add account information sidebar with user details
    - Improve mobile responsiveness and user experience
    by Dave Shevett

September 24, 2025

  • ce585e5 9:19 AM
    Implement SMTP email notifications with admin test functionality
    - Add email notification checkbox to user settings
    - Create EmailService class with SMTP support
    - Add administrator test email functionality
    - Support both authenticated and non-authenticated SMTP
    - Add comprehensive SMTP debugging and error handling
    - Support TLS/SSL with certificate verification options
    - Add helo_hostname configuration for proper SMTP identification
    - Include beautiful HTML and plain text email templates
    - Integrate email notifications when items are claimed
    by Dave Shevett

September 18, 2025

  • dadfb9e 7:39 PM
    Fix CloudFront image URLs to work with /images origin path
    - Updated getCloudFrontUrl() to remove /images prefix from generated URLs
    - Updated image detection logic to look for images in images/ folder in S3
    - Fixed image loading in getAllItemsEfficiently(), user-listings, and item templates
    - CloudFront now correctly maps requests to S3 images/ folder via origin path
    by Dave Shevett

September 16, 2025

  • efe6df4 6:15 PM
    Fix missing images on user-listings page by adding image_url generation
    by Dave Shevett
  • 2b51d7e 5:50 PM
    Fix regression: Show claim status for logged-out users
    - Always compute activeClaims and primaryClaim in getAllItemsEfficiently()
    - Previously only computed claim data when user was logged in
    - Now logged-out users can see if items have been claimed
    - User-specific data (isUserClaimed, canUserClaim) still only computed for logged-in users
    - Fixes claim status display on home and items pages for anonymous users
    by Dave Shevett
  • 9916f94 5:43 PM
    Implement CloudFront CDN integration for massive performance improvement
    by Dave Shevett
  • fe93ddd 3:56 PM
    Add configurable debug logging system
    - Add DEBUG configuration option in config.php (default: 'no')
    - Create debugLog() function that only logs when DEBUG='yes'
    - Convert all performance timing logs to use debugLog() instead of error_log()
    - Enable detailed timing logs for:
    - YAML file discovery and batch loading
    - Image URL generation (getCachedPresignedUrl)
    - YAML processing and item creation
    - AJAX request timing (getAllItemsEfficiently, template rendering)
    - Page load timing (routing, auth, Open Graph data, template rendering)
    Usage:
    - Set DEBUG='yes' in config.php to enable detailed performance logs
    - Set DEBUG='no' in config.php to suppress performance logs (default)
    - All timing logs now appear in server output when DEBUG is enabled
    - Clean server output when DEBUG is disabled
    by Dave Shevett
  • 42f301f 3:45 PM
    Major performance optimization: pre-compute expensive operations
    - Pre-generate image URLs during getAllItemsEfficiently() to avoid AWS calls during template rendering
    - Pre-compute item states (isItemGone, canEditItem) to avoid function calls during template rendering
    - Pre-compute claim data (activeClaims, primaryClaim, isUserClaimed, canUserClaim) to avoid AWS calls during template rendering
    - Add comprehensive performance timing logs to identify bottlenecks
    - Add performance display in footer for monitoring
    Performance improvements:
    - Total AJAX request time: 6.5s โ†’ 3.7s (43% improvement)
    - Template rendering time: 4.5s โ†’ 1.6s (64% improvement)
    - Individual item rendering: 225-265ms โ†’ 75-90ms (65% improvement)
    This eliminates the N+1 problem where expensive AWS calls were being made for each item during template rendering.
    by Dave Shevett

September 14, 2025

  • 0d8cc08 10:23 PM
    Fix Open Graph meta tags undefined array key errors
    - Add fallback case for item pages when item data is not available
    - Add safety checks to ensure required meta tag keys always exist
    - Prevent undefined array key warnings and null parameter deprecation errors
    - Ensure graceful fallbacks for all Open Graph meta tag scenarios
    - Fix production errors: undefined 'title', 'description', 'type' keys
    by Dave Shevett
  • 85f9b7d 10:20 PM
    Enhance Open Graph meta tags for better link unfurling
    - Add item title and description to Open Graph meta tags for item pages
    - Format title as 'Item #ID - [Item Title]' for better link previews
    - Include item description and price in meta description
    - Add image detection for Open Graph image previews
    - Implement graceful fallbacks when item data unavailable
    - Improve link sharing experience in Slack, Discord, and social media
    - Single S3 call per item page for meta tag data (performance optimized)
    by Dave Shevett
  • f475d04 12:20 PM
    Enhance user-listings dashboard with comprehensive stats
    - Rename 'Items Claimed' to 'Items I've claimed' for better clarity
    - Add 'Items people have claimed' stat showing items with active claims
    - Add 'Items gone' stat showing items marked as gone
    - Fix claims counting logic to use proper claims array structure
    - Optimize stats calculation by including claims data in item processing
    - Add responsive CSS for 6 stat cards with mobile-friendly layout
    - Support waitlist functionality with proper active/removed claim status
    - Improve dashboard visual design with hover effects and better spacing
    by Dave Shevett
  • 57868f8 12:01 PM
    Implement batching mechanism for YAML file loading
    - Load all YAML files in batches of 20 to prevent performance issues
    - Users now see all items instead of being limited to first 20
    - Added detailed performance logging for batch processing
    - Maintains reasonable load times (6-7s) while showing complete catalog
    - Improved error handling for individual file failures
    - Reverted from parallel HTTP approach to optimized sequential batching
    by Dave Shevett
  • 95feb65 11:18 AM
    Remove pagination functionality
    - Removed pagination parameters and logic from getAllItemsEfficiently()
    - Simplified home and items templates to show all items at once
    - Removed pagination controls and CSS styles
    - Updated AJAX endpoint to load all items without pagination
    - Simplified JavaScript fetch calls to remove pagination parameters
    Performance impact:
    - Initial page loads remain fast (13ms for home page)
    - Item loading now takes longer (7+ seconds) but shows all items
    - Eliminates pagination-related bugs and complexity
    - All items are now visible without navigation controls
    by Dave Shevett

September 13, 2025

  • e70e946 9:26 PM
    Major performance optimizations and OAuth navigation fixes
    - Implemented lazy loading for AWS services to eliminate 5+ second startup delays
    - Added AJAX-based item loading for home page (2ms initial load vs 5+ seconds)
    - Fixed OAuth navigation bar authentication state display
    - Optimized static variable caching and OPcache handling
    - Added loading indicators and error handling for async operations
    - Maintained full functionality while dramatically improving performance
    - Fixed variable name conflicts in home template pagination logic
    Performance improvements:
    - Initial page load: 5.27s โ†’ 0.002s (99.96% faster)
    - Home page with items: 5.27s โ†’ 0.002s + 1.09s async (instant page + deferred items)
    - Navigation bar now properly shows logged-in state on all pages
    - AWS initialization only occurs when actually needed
    by Dave Shevett
  • f0bc951 9:05 PM
    Major performance optimizations: Fix N+1 S3 API calls, add pagination, implement caching
    - Fixed N+1 S3 API calls: Reduced from 200+ calls to 2-3 calls per page (95% reduction)
    - Implemented pagination: 20 items per page with navigation controls
    - Added aggressive caching: 5-minute item cache, 1-hour image URL cache
    - Optimized image loading: Cached presigned URLs to avoid repeated generation
    - Added cache invalidation: Automatic clearing when items are modified
    - Fixed layout shift: Added image dimensions and CSS aspect-ratio
    - Added performance monitoring: Built-in load time tracking
    Expected performance improvement: 20 seconds โ†’ 1-2 seconds (90% faster)
    by Dave Shevett
  • 504a76b 8:00 PM
    Fix item card button positioning and centralize CSS
    - Add flexbox layout to item cards to ensure buttons are always at bottom
    - Make item content and meta sections flexible to push buttons down
    - Centralize all button styling in main CSS file
    - Add complete button color schemes (primary, secondary, success, warning, danger)
    - Add hover effects and transitions for all buttons
    - Add claim status styling for consistent appearance
    - Remove duplicate CSS from item-card.php template
    - Improve responsive design with proper button stacking on mobile
    - Ensure consistent visual hierarchy across all item cards
    by Dave Shevett
  • 4ae6fb3 7:49 PM
    Add 'Gone!' functionality for item owners
    - Add markItemAsGone() and relistItem() functions to mark items as gone/not gone
    - Add isItemGone() function to check item status
    - Add getUserShowGoneItems() and saveUserShowGoneItems() for user preferences
    - Add AJAX handlers for mark_gone and relist_item actions
    - Add 'Gone!' and 'Re-list' buttons to item cards for owners
    - Add 'Show gone items' checkbox to user settings modal
    - Filter gone items from listings based on user preference (default: hidden)
    - Fix item data mapping to include gone fields from YAML in all templates
    - Add gone functionality to single item view, items listing, home, and user listings
    - Items marked as gone are hidden by default but can be shown via user setting
    by Dave Shevett
  • 1120942 4:01 PM
    Add login button for non-logged-in users viewing items
    - Add 'Log in to claim this!' button for non-logged-in users on item cards
    - Button appears when user is not logged in and item is not their own
    - Uses same login link as toolbar login button (?page=login)
    - Styled consistently with other primary buttons
    - Improves user experience by making login requirement clear
    - Only shows in listing/home contexts where users browse items
    Resolves issue where non-logged-in users couldn't easily discover they need to log in to claim items.
    by Dave Shevett

September 10, 2025

  • d2e1185 5:04 PM
    Clean up duplicate code across templates
    - Remove duplicate edit modal HTML from items.php, user-listings.php, and home.php
    - Remove duplicate edit modal CSS from individual templates
    - Remove duplicate JavaScript functions from item.php and index.php
    - Remove duplicate showMessage function from index.php
    - Add centralized edit modal CSS to main stylesheet
    - Centralize all edit functionality in shared files (app.js, index.php, style.css)
    Reduces codebase by ~400+ lines while maintaining full functionality.
    All edit buttons continue to work across all pages.
    by Dave Shevett
  • dc43dd6 4:49 PM
    Add cache-busting parameters to app.js references
    - Add version parameter to all app.js script tags to force browser cache refresh
    - Resolves production issue where edit buttons weren't working due to cached JavaScript
    - Ensures production site loads the latest JavaScript with openEditModalFromButton function
    by Dave Shevett
  • 8564785 4:14 PM
    Fix edit button functionality across all pages
    - Add edit button to listing context in item-card.php
    - Add JavaScript file references to all templates using item cards
    - Fix JavaScript syntax errors by using data attributes instead of inline parameters
    - Add openEditModalFromButton() function for safer data handling
    - Add edit modal HTML and CSS to items.php, user-listings.php, and home.php
    - Ensure edit functionality works consistently across all item card views
    Resolves edit button not working on items, user-listings, and home pages.
    by Dave Shevett

September 9, 2025

  • c633026 5:08 PM
    Standardize button layouts across all item card views
    - Create consistent button layout with right-justified, same-sized buttons
    - Centralize all button styling in item-card.php template
    - Remove conflicting CSS from individual templates (items.php, user-listings.php, dashboard.php)
    - Standardize button colors: primary (blue), danger (red), secondary (gray), warning (orange)
    - Add responsive design: buttons stack vertically on mobile
    - Improve user experience with consistent button placement and sizing
    - Fix full-width delete button issue on items page
    - Ensure all contexts (listing, dashboard, claimed) use same button layout
    by Dave Shevett
  • eb97de1 4:54 PM
    Add image rotation feature for item owners
    - Add rotation button (โ†ป) to single item view for item owners
    - Implement 90-degree clockwise rotation using GD library
    - Support multiple image formats (JPEG, PNG, GIF, WebP)
    - Download image from S3, rotate, and upload back
    - Add proper error handling and user feedback
    - Fix image key detection to work with dynamic image extensions
    - Include loading states and success messages
    - Page refreshes after successful rotation to show updated image
    by Dave Shevett

September 5, 2025

  • 0997fcb 9:08 PM
    Fix admin delete button visibility and permissions
    - Fix backend delete handlers to use canUserEditItem() for proper admin permissions
    - Add delete buttons for admins in all contexts (home, listing, dashboard)
    - Add complete delete functionality to home page (modal, JS, CSS)
    - Fix redirect after deletion to go to home page instead of items page
    - Ensure currentUser is properly passed to item-card template
    - Update error messages to include admin privileges
    Fixes issue where administrators couldn't see delete buttons on home/items pages
    and were getting 'You can only delete your own items' warnings.
    by Dave Shevett
  • 09bddac 8:55 PM
    Implement administrator functionality
    - Add ADMIN_USER_ID configuration in config.php
    - Add isAdmin() and canUserEditItem() helper functions
    - Update item-card.php to show edit/delete buttons for admins
    - Update item.php to show edit/delete buttons for admins
    - Update AJAX handlers to check admin permissions for edit/delete
    - Update user-listings.php to show admin controls for all users
    - Admins can now edit and delete any item, just like item owners
    by Dave Shevett
  • 848c778 4:35 PM
    Fix mobile email client URL encoding issue for Contact Seller links
    - Replace urlencode() with rawurlencode() in all mailto: links
    - Fixes issue where spaces appeared as + signs in mobile email clients
    - Affects Contact Seller links in item-card.php and item.php templates
    - rawurlencode() uses %20 for spaces which is more universally supported
    by Dave Shevett
  • 4a33fd1 12:47 PM
    Remove debugging code from file upload validation
    - Remove DEBUG error_log statements for file upload details
    - Remove file preservation logic in /tmp/claimit_debug/
    - Clean up Apache error logs now that upload issue is resolved
    - GD extension is now installed and image resizing should work
    by Dave Shevett
  • ef99b87 12:32 PM
    Fix file upload limit - update MAX_FILE_SIZE to 50MB
    - Change HTML form MAX_FILE_SIZE from 500KB to 50MB (52428800 bytes)
    - This was causing UPLOAD_ERR_FORM_SIZE (error 2) for files > 500KB
    - Browser was rejecting uploads before they reached server validation
    - Now matches server-side 50MB limit configuration
    by Dave Shevett
  • a14b5c6 12:04 PM
    Add debugging for file upload issues
    - Add detailed logging of file upload attempts (name, size, error code, tmp path)
    - Preserve rejected files in /tmp/claimit_debug/ for inspection
    - Debug both PHP upload errors and custom size validation
    - Help diagnose 7.9MB file upload rejection despite 50MB limit
    by Dave Shevett

September 4, 2025

  • 3ccf029 11:42 PM
    CRITICAL FIX: Update all remaining 10MB limits to 50MB
    - Update ini_set() calls in public/index.php (50M/51M)
    - Update ini_set() calls in router.php (50M/51M)
    - Update php.ini file (50M/51M)
    - Update dev-php.ini file (50M/51M)
    - These ini_set() calls were overriding the server configuration
    - This should finally allow 50MB uploads to work properly
    by Dave Shevett
  • 254bdd5 11:32 PM
    Fix remaining 10MB error message in PHP upload error handling
    - Update UPLOAD_ERR_INI_SIZE and UPLOAD_ERR_FORM_SIZE error messages to show 50MB
    - This was the last remaining reference to the old 10MB limit
    - Should now show consistent 50MB limit in all error messages
    by Dave Shevett
  • 5639342 11:23 PM
    Increase upload limit from 10MB to 50MB
    - Update server-side validation in templates/claim.php (50MB limit)
    - Update client-side validation in public/assets/js/app.js (50MB limit)
    - Update form help text to show 50MB limit
    - Update Apache .htaccess configuration (50M/51M)
    - Update .user.ini configuration (50M/51M)
    - This removes the hard-coded 10MB limit that was blocking larger uploads
    - Images will still be automatically resized to under 500KB after upload
    by Dave Shevett
  • 78a8cf1 11:09 PM
    Remove php_admin_value directives from .htaccess
    - Remove php_admin_value directives that are causing Apache alerts
    - Keep only php_value directives which should be allowed
    - This should eliminate the 'php_admin_value not allowed here' errors
    - The .user.ini file should still provide alternative configuration
    by Dave Shevett
  • d860545 11:06 PM
    Remove debug logging to clean up Apache error logs
    - Remove all DEBUG error_log statements from getActiveClaims() function
    - Remove all DEBUG error_log statements from isUserClaimed() function
    - Remove production debug logging from templates/claim.php
    - Keep only essential error logging for actual errors
    - This should eliminate the large array dumps in Apache error logs
    - Error logs should now be much cleaner and more manageable
    by Dave Shevett
  • bdcafc9 11:05 PM
    Try multiple approaches for production upload limits
    - Add .user.ini file as alternative to .htaccess for PHP config
    - Add php_admin_value directives in .htaccess (may work when php_value doesn't)
    - Add production debugging to show actual server limits
    - Try both php_value and php_admin_value approaches
    - .user.ini files are often allowed when .htaccess php_value is restricted
    - This should help identify what the actual server limits are
    by Dave Shevett
  • 70eadb4 10:51 PM
    Configure production Apache upload limits for 10MB
    - Update public/.htaccess with comprehensive PHP upload settings
    - Add php.ini file for production server configuration
    - Remove debugging code from templates/claim.php
    - Set upload_max_filesize=10M, post_max_size=11M
    - Add max_execution_time=300, max_input_time=300, memory_limit=256M
    - These settings should work with Apache in production environment
    - Local development server issues can be addressed separately
    by Dave Shevett
  • ca3728c 10:45 PM
    Fix PHP upload limits - ini_set() not working
    - Root cause: PHP ini_set() calls were being ignored (actual limit was 2M instead of 10M)
    - Add .htaccess in root directory with php_value directives
    - Add php.ini file with upload configuration
    - Add putenv() calls as alternative approach
    - Add max_execution_time, max_input_time, and memory_limit settings
    - This should override the 2M limit that was preventing 7.9MB uploads
    by Dave Shevett
  • 8ab233c 10:40 PM
    Add debugging for PHP upload limits
    - Add error_log statements to show actual PHP upload_max_filesize and post_max_size values
    - Show file upload error code and file size in debug logs
    - Update error message to show actual PHP limit for better debugging
    - This will help identify if PHP ini_set() calls are working correctly
    by Dave Shevett
  • 44cc716 6:34 PM
    Increase upload limit from 5MB to 10MB
    - Update PHP ini_set() calls in public/index.php and router.php (10M/11M)
    - Update Apache upload limits in public/.htaccess (10M/11M)
    - Update client-side JavaScript validation in public/assets/js/app.js (10MB)
    - Update server-side validation in templates/claim.php (10MB)
    - Update HTML form help text to show 10MB limit
    - Images will still be automatically resized to under 500KB after upload
    - All environments (development and production) now support 10MB uploads
    by Dave Shevett
  • cab4ed2 6:31 PM
    Fix JavaScript validation error message for file uploads
    - Change error message from 'Picture uploads are limited to 5MB' to 'File is too large. Maximum upload size is 5MB.'
    - Makes it clearer that this is an error for files exceeding the limit
    - Avoids confusion since we do allow 5MB uploads (the limit is exactly 5MB)
    by Dave Shevett
  • 745aee1 6:28 PM
    Fix form help text to show correct 5MB upload limit
    - Update HTML form help text from 'max 500k' to 'max 5MB - will be automatically resized'
    - Clarifies that users can upload up to 5MB and images will be automatically resized
    - Matches the actual server-side validation limits
    by Dave Shevett
  • d7365d0 6:07 PM
    Implement 5MB upload limit with automatic image resizing
    - Raise upload limits to 5MB for both development and production
    - Add PHP ini_set() calls in public/index.php and router.php
    - Add Apache upload limits in public/.htaccess
    - Implement GD library image resizing function in includes/functions.php
    - Resize images to max 1200x1200px and under 500KB final size
    - Update server-side validation in templates/claim.php (5MB limit)
    - Update client-side validation in public/assets/js/app.js (5MB limit)
    - Add automatic image resizing before S3 upload
    - Maintain aspect ratio and preserve transparency for PNG/GIF
    - Fallback to original image if resizing fails
    - Clean up temporary files after processing
    by Dave Shevett
  • aceba3d 5:52 PM
    Fix mobile dropdown menu behavior
    - Change mobile dropdown from always-visible to proper toggle behavior
    - Use absolute positioning instead of static for mobile dropdown
    - Add proper opacity, visibility, and transform transitions
    - Dropdown now properly shows/hides on mobile when clicked
    - Maintains consistent behavior across desktop and mobile
    by Dave Shevett

September 3, 2025

  • 77985f9 5:06 PM
    Improve Contact Seller email format
    - Update subject line to 'ClaimIt Interest - [Item Title]'
    - Add direct link to item in email body
    - Apply consistent formatting across all Contact Seller buttons
    - Update templates/item.php and templates/item-card.php
    - Better email experience for buyers and sellers
    by Dave Shevett

September 2, 2025

  • 71fc52d 9:18 PM
    Add Edit button to single item page
    - Add Edit button for item owners on single item page (/?page=item&id=...)
    - Include Edit modal with form for title and description editing
    - Add JavaScript functions for modal handling and AJAX submission
    - Edit button appears alongside Delete button for item owners
    - Maintains consistency with user-listings page functionality
    by Dave Shevett
  • 91a10ef 9:12 PM
    Remove debugging from edit_item functionality
    - Remove all error_log debug statements from both POST and GET edit_item handlers
    - Clean up the code while maintaining full functionality
    - Item editing is now working correctly and saving to S3
    by Dave Shevett
  • 0f4bdee 7:07 PM
    Fix edit_item AJAX routing and add debugging
    - Fix JavaScript to send request to correct URL: ?page=claim&action=edit_item
    - Add comprehensive debugging to both POST and GET edit_item handlers
    - This should now properly route edit requests and show debug output
    by Dave Shevett
  • 58246b1 6:30 PM
    Add debugging to edit_item functionality
    - Add error_log statements to track YAML conversion and S3 upload
    - This will help identify why item edits are not being saved
    by Dave Shevett
  • 4275b0b 5:52 PM
    Fix AJAX request for item editing
    - Change JavaScript to send action as POST data instead of GET parameter
    - This ensures the edit_item action reaches the correct backend handler
    - Item editing should now properly save changes to S3 YAML files
    by Dave Shevett
  • 7fa912a 5:49 PM
    Fix JavaScript syntax error in Edit button onclick
    - Replace json_encode() with htmlspecialchars() and addslashes() for proper escaping
    - Remove debugging alert from openEditModal function
    - Fix JavaScript syntax error that was preventing modal from opening
    by Dave Shevett
  • 8ea3c60 5:45 PM
    Add debugging to edit modal functionality
    - Add console.log and alert debugging to openEditModal function
    - Verify if function is being called and modal element is found
    by Dave Shevett
  • d1ab536 5:40 PM
    Add item editing functionality for item owners
    - Add 'Edit...' button to dashboard context for own listings
    - Create edit modal dialog with title and description fields
    - Add backend AJAX handler for edit_item action in both POST and GET routes
    - Implement JavaScript functions for modal management and form submission
    - Add CSS styling for textarea elements in modal forms
    - Use JSON encoding for JavaScript parameters to handle quotes properly
    - Validate ownership before allowing edits and update S3 YAML files
    by Dave Shevett
  • 62e1480 5:07 PM
    Fix AJAX routing for claim management functions
    - Add GET-based AJAX handler for ?page=claim&action=* endpoints
    - Fix mismatch between JavaScript URL parameters and PHP POST data handling
    - Ensure both POST and GET-based claim requests work properly
    - Add delete_item action to supported actions list
    by Dave Shevett
  • c7798d1 5:04 PM
    Add debugging to removeMyClaim functionality
    - Add console.log statements to JavaScript removeMyClaim function
    - Add error_log statements to PHP remove_claim action handler
    - Improve error handling and debugging for claim removal process
    by Dave Shevett
  • dc54cee 4:59 PM
    Fix 'Remove my claim' functionality and add missing JavaScript functions
    - Add missing JavaScript functions (addClaimToItem, removeMyClaim, deleteItem) to main index.php
    - Add delete_item action handler for item deletion
    - Add getItem() function to functions.php for retrieving individual items
    - Fix JavaScript function availability across all templates
    - Add showMessage() function for user feedback
    - Ensure all claim management functions work with unified item card system
    by Dave Shevett
  • 4e7fac4 4:29 PM
    Fix remaining include path in user-listings.php
    - Fix the last include statement on line 290 that was still using relative path
    - This resolves the production error: 'Failed opening templates/item-card.php'
    by Dave Shevett
  • ec90700 4:19 PM
    Fix include paths for production environment
    - Change relative include paths to absolute paths using __DIR__
    - Fixes 'Failed opening templates/item-card.php' error in production
    - Affects home.php, user-listings.php, and items.php templates
    by Dave Shevett
  • d3576fe 4:15 PM
    Add user settings functionality with custom display names
    - Implement settings modal dialog accessible from user dropdown
    - Add display name field allowing users to customize their displayed name
    - Store user settings in S3 under users/{userId}.yaml
    - Integrate custom display names throughout the application
    - Update unified item card template to use custom names
    - Add comprehensive CSS styling for modal and form elements
    - Include JavaScript functions for modal handling and AJAX submission
    by Dave Shevett
  • 02979a0 3:53 PM
    Add ClaimIt logo to header and favicon - Add claimit-logo.jpg to public/assets/images/ - Set logo as favicon in HTML head section - Display logo image next to ClaimIt text in navigation header - Add CSS styling for logo display (40x40px with rounded corners) - Logo appears in browser tabs and navigation bar for better branding
    by Dave Shevett
  • 8d39044 3:34 PM
    Fix image display in unified item card template - Change image_file to image_key to match actual data structure - Images now display correctly across all pages using unified template - Fixes 'No Image' placeholder issue that was showing instead of actual images
    by Dave Shevett
  • d290c17 3:08 PM
    Implement unified item card system - Create templates/item-card.php for consistent item display across all pages - Add comprehensive CSS styles for unified item cards in style.css - Update templates/items.php to use unified template with 'listing' context - Update templates/home.php to use unified template with 'home' context - Update templates/user-listings.php to use unified template with 'dashboard' and 'claimed' contexts - Add truncateText() helper function to functions.php - Maintains all existing functionality while providing consistent UI - Supports different display contexts (listing, home, dashboard, claimed) - Includes proper action buttons based on user permissions and context
    by Dave Shevett
  • 5c223a2 2:32 PM
    Add action buttons to posted items in user-listings template - Added Contact Seller and Delete buttons for items posted by the user - Buttons only appear when viewing own listings (isOwnListings = true) - Added CSS styling for .item-actions class with proper button layout and hover effects - Improves user experience by providing quick access to item management actions
    by Dave Shevett

September 1, 2025

  • 6127526 11:51 AM
    Fix hardcoded localhost base URL in redirect() function - Added dynamic environment detection for base URL - Uses localhost:8000 for development and claimit.stonekeep.com for production - Fixes OAuth redirect loop when accessing production site
    by Dave Shevett

August 31, 2025

  • cba2a6d 9:02 PM
    Fix OAuth redirect URI for production environment - Added dynamic redirect URI detection based on HTTP_HOST - Uses localhost:8000 for development and claimit.stonekeep.com for production - Updated example configuration with proper documentation - Fixes OAuth redirect loop when accessing production site
    by Dave Shevett
  • efc4f37 8:52 PM
    Add claimed items section to user listings page - Added getItemsClaimedByUser function to find items claimed by a user - Enhanced user-listings page to show claimed items when viewing own listings - Added dashboard stat showing 'Items Claimed' count - Fixed image URL generation using correct getPresignedUrl method - Improved UI to show claim status and position for claimed items - Added proper handling for users with claimed items but no posted items
    by Dave Shevett

August 30, 2025

  • b66d83d 11:02 PM
    Fix YAML parser and claim system - Fixed parseSimpleYaml to handle malformed claim entries with proper indentation detection - Added multi-line value support for claimed_at fields - Improved claim status filtering (active vs removed) - Enhanced UI to show 'You! (User Name)' for current user's claims - Moved About link to footer - Added comprehensive waitlist section styling - Fixed claim button logic and AJAX handlers - All claim system functionality now working correctly
    by Dave Shevett
  • 4f8f67c 7:09 PM
    Add Open Graph meta tags for social media previews - Implement generateOpenGraphTags function for Slack/Facebook/Twitter previews - Add dynamic meta tags for individual items with thumbnails and descriptions - Add user listings previews showing item counts - Support both development and production URLs - Include Twitter Card meta tags for enhanced Twitter previews
    by Dave Shevett
  • c7c1dba 7:01 PM
    Make My Listings link shareable and fix dashboard styling - Update My Listings to use user-listings format with user ID for sharing - Add dashboard-style interface to user-listings when viewing own items - Move dashboard styles to main CSS file for consistency - Make stat cards more compact with tighter design
    by Dave Shevett
  • d82f459 8:04 AM
    Fix OAuth redirect loop by using absolute URLs in redirect function
    by Dave Shevett

August 29, 2025

  • 1fc30df 5:21 PM
    Update deploy.yml
    by Dave Shevett
  • afb1538 4:56 PM
    Test deployment workflow - remove sudo commands
    by Dave Shevett
  • 4be6930 4:34 PM
    Move contact link from navigation to footer
    - Remove contact link from main navigation menu
    - Add contact link to footer with separator pipe
    - Add CSS styling for footer link with hover effects
    - Cleaner navigation with contact accessible in footer
    - Footer link styled with gray color and blue hover state
    by Dave Shevett
  • 33010f3 4:25 PM
    Add GitHub Actions deployment workflow
    - Create automated deployment workflow for production server
    - Triggers on push to main branch
    - Uses SSH to connect to production server
    - Pulls latest code and updates dependencies
    - Sets proper file permissions
    - Ready for GitHub Secrets configuration
    by Dave Shevett
  • 4245b8a 12:24 PM
    Transform home page to show available items directly
    - Replace hero section with items grid display
    - Remove phone, hours, and address from contact page
    - Home page now shows all available items immediately
    - Add 'Post a New Item' button in header
    - Include empty state when no items exist
    - Maintain AWS credentials check for development
    - Users can now browse items without extra navigation steps
    by Dave Shevett

August 28, 2025

  • 39e3cfe 5:57 PM
    Fix OAuth redirect URI and localhost asset serving
    - Update Google OAuth config to use production redirect URI
    - Add auth route rewrite rules to .htaccess for clean URLs
    - Update router.php to find assets in public/ directory for localhost dev
    - Fixes OAuth redirecting to localhost instead of production domain
    - Maintains CSS/JS functionality in both localhost and production
    by Dave Shevett
  • a88c473 5:29 PM
    Move assets directory into public/ and remove rewrite rule
    - Move assets/ from project root to public/assets/
    - Remove assets rewrite rule from .htaccess (no longer needed)
    - Fixes Apache security error with directory traversal (/../assets/)
    - Assets now served directly from DocumentRoot/assets/
    by Dave Shevett
  • 8d83245 5:23 PM
    Fix assets loading by removing file existence check in .htaccess
    - Remove RewriteCond %{REQUEST_FILENAME} -f from assets rule
    - This was preventing assets from loading when DocumentRoot is set to /public
    - Assets requests now properly redirect to ../assets/ directory
    by Dave Shevett
  • e180b7d 2:59 PM
    Update claim button text and fix user-listings image scaling
    - Changed 'Never mind' button to 'You have claimed this!' with checkmark emoji
    - Kept mouseover tooltip as 'Unclaim this item' for clarity
    - Fixed image scaling on user-listings page to match main items display
    - Added proper CSS for item cards and grid layout consistency
    - Updated both individual item view and items grid view templates
    by Dave Shevett
  • 6e8bf4e 2:21 PM
    Improve image upload error messages and reduce size limit to 500KB
    - Replace generic 'An error occurred' with specific 'Picture uploads are limited to under 500k'
    - Add detailed server-side error handling for different PHP upload error codes
    - Implement client-side file validation with immediate feedback
    - Reduce upload limit from 5MB to 500KB
    - Add MAX_FILE_SIZE form field for browser-level enforcement
    - Show file size and name on successful selection
    - Add success/danger color variables to CSS
    by Dave Shevett

August 27, 2025

  • ef4c5e6 5:47 PM
    Update about page and navigation improvements
    - Added company image to about page replacing placeholder
    - Reformatted about page content with proper paragraph breaks
    - Changed 'My Posts' to 'My Listings' in navigation menu
    - Added responsive image styling with hover effects
    - Updated documentation references to reflect 'My Listings' terminology
    by Dave Shevett
  • d7104bb 5:23 PM
    Fix navigation toolbar alignment and implement Google avatar fallback system
    - Fixed vertical alignment issues in navigation bar caused by user avatars
    - Added consistent min-height values for nav elements to prevent height changes
    - Implemented comprehensive Google profile picture fallback system
    - Added automatic fallback to user initials when avatar image fails to load
    - Improved Google OAuth picture URLs with proper sizing parameters
    - Added CORS handling with referrerpolicy for cross-origin images
    - Enhanced responsive design for navigation on mobile devices
    - Includes proper error handling and graceful degradation for avatars
    by Dave Shevett

August 26, 2025

  • db3bc0b 10:17 PM
    Add title field and improve UI consistency
    - Add required title field to item posting form with validation
    - Update YAML data structure to include title field for all new items
    - Display item titles prominently on both listing and detail pages
    - Ensure backward compatibility: items without titles use description
    - Change Claim button color from green to blue to match Contact Seller button
    - Improve responsive design for item headers on mobile devices
    - Fix image sizing on individual item pages (max-width: 500px, max-height: 70vh)
    This enhances the user experience by providing clearer item identification
    and consistent button styling throughout the application.
    by Dave Shevett
  • 791b8f9 9:26 PM
    Implement individual item URLs and detailed view pages
    - Add 'item' route to available pages for individual item viewing
    - Create templates/item.php with detailed item view including:
    * Large image display with sticky positioning
    * Prominent price display with FREE badge for /bin/zsh items
    * Full description with proper line breaks
    * Item details grid (ID, posted date, contact)
    * Action buttons (Contact Seller, Claim, Delete)
    * Back navigation to items listing
    * Mobile responsive design
    - Make item listings clickable by wrapping cards in links to individual pages
    - Add hover effects and smooth animations for better UX
    - Move parseSimpleYaml function to includes/functions.php for reuse
    - Maintain all existing functionality (delete, claim, contact) on individual pages
    - URLs: ?page=item&id=TRACKING_NUMBER (clean URLs via .htaccess on Apache)
    - Proper z-index handling to keep action buttons clickable within linked cards
    by Dave Shevett
  • 59defc7 8:56 PM
    Change 'View items' URL from '/s3' to '/items'
    - Rename templates/s3.php to templates/items.php
    - Update routing in index.php to handle 'items' instead of 's3'
    - Update all navigation links from ?page=s3 to ?page=items
    - Update home page button to link to items page
    - Update redirect after posting item to go to items page
    - Update all error redirects in items template
    - Update deployment guide with new URL structure
    - Provides more user-friendly URLs hiding implementation details
    by Dave Shevett
  • 37fa6c2 8:52 PM
    Add Apache deployment configuration and guide
    - Add .htaccess for clean URLs, static asset handling, and security headers
    - Create comprehensive DEPLOYMENT.md guide for Apache hosting
    - Include virtual host configuration examples
    - Add SSL, permissions, and troubleshooting sections
    - Enable clean URLs like /claim and /s3 instead of ?page=claim
    by Dave Shevett
  • 6160afc 8:38 PM
    Replace 'Share image' button with 'Claim this!' button
    - Remove conditional Share Image button that linked to presigned URLs
    - Add new 'Claim this!' button with success styling (green)
    - Implement claimItem() JavaScript function with placeholder functionality
    - Add CSS styling for .claim-btn with hover effects and smooth transitions
    - Button shows 'Not implemented yet' alert dialog with tracking number
    - Prepares foundation for future claiming functionality
    by Dave Shevett
  • 1d60715 8:35 PM
    Update text to include giveaway option alongside sales
    - Change 'for sale' to 'for sale or for giveaway' across templates
    - Updated posting page subtitle to be more inclusive
    - Updated items listing page descriptions to reflect both sale and giveaway options
    - Updated 'no items available' message to include giveaway option
    - Makes the platform more welcoming for free item sharing
    by Dave Shevett
  • 01a08a3 8:33 PM
    Replace 'Learn More' button with 'View available items' link on home page
    - Remove the 'Learn More' button that linked to About page
    - Add 'View available items' button that links to marketplace (s3 page)
    - Maintains consistent navigation experience across site
    - Users can now directly access available items from the home page
    by Dave Shevett
  • 8ffbc36 8:26 PM
    Replace JavaScript confirm dialog with styled HTML modal
    - Replace browser confirm() popup with custom modal dialog
    - Add proper HTML modal with header, body, and action buttons
    - Style modal to match site design with rounded corners and shadows
    - Include smooth animations for modal show/hide transitions
    - Add keyboard support (ESC key to close) for accessibility
    - Add click-outside-to-close functionality
    - Responsive design for mobile devices
    - Maintain all existing delete functionality and error handling
    by Dave Shevett
  • f1795bf 8:13 PM
    Redirect to View Available Items page after posting
    - Change redirect destination from 'claim' to 's3' after successful item posting
    - Users now see their posted item immediately after submission
    - Improves user experience and confirms item was posted successfully
    by Dave Shevett
  • 1784c9f 8:03 PM
    Fix delete functionality AJAX response
    - Move delete handler from s3.php template to index.php before HTML output
    - Prevents HTML headers from being sent with JSON response
    - JavaScript can now properly parse the clean JSON response
    - Resolves 'There was an error' message during item deletion
    by Dave Shevett
  • 4756c6f 7:58 PM
    Simplify page title to just 'ClaimIt'
    - Remove dynamic page names from browser title
    - Change from '[Page] - ClaimIt' format to simply 'ClaimIt'
    - Provides consistent branding across all pages
    by Dave Shevett
  • 4f79e56 7:54 PM
    Add delete functionality with trash can icon for marketplace items
    - Add deleteObject method to AwsService.php for S3 object deletion
    - Implement AJAX-based delete functionality in s3.php template
    - Add trash can icon (๐Ÿ—‘๏ธ) button to each item card with confirmation dialog
    - Include smooth fade-out animation when items are deleted
    - Add proper error handling and user feedback with floating notifications
    - Style delete button with red danger styling and hover effects
    - Handle both YAML metadata and image file deletion
    - Update item count and show 'no items' message when all items deleted
    - Add responsive styling for mobile devices
    by Dave Shevett
  • 7476063 7:50 PM
    Implement comprehensive error handling and logging system
    - Add custom error handler to suppress AWS SDK PHP 8.4 compatibility warnings from browser display while preserving them in environment logs
    - Update router.php and public/index.php with environment-appropriate error logging
    - Configure clean user experience with professional error suppression
    - Maintain developer debugging capabilities through proper log routing
    - Ensure compatibility with both development server and production deployment (Apache/nginx)
    - Error logs now automatically route to appropriate environment logs (console for dev, web server logs for production)
    by Dave Shevett
  • 4094897 5:29 PM
    Implement complete marketplace functionality with modern UI
    Major Features Added:
    - ๐ŸŽจ Modern UI with Inter fonts, gradients, and glass-morphism effects
    - ๐Ÿ“ฑ Fully responsive design with hover animations and card layouts
    - ๐Ÿ›๏ธ Complete marketplace functionality for posting and browsing items
    - ๐Ÿ“ธ Photo upload support with S3 storage integration
    - ๐Ÿ’ฐ Support for /bin/zsh (free) item pricing
    - ๐Ÿ“ง Direct email contact integration with pre-filled subjects
    AWS S3 Integration:
    - Automatic tracking number generation (reverse datestamp)
    - Image upload to S3 bucket with tracking number naming
    - YAML metadata files for item details (description, price, email)
    - Presigned URL generation for secure image access
    - Complete S3 bucket scanning and YAML parsing
    UI/UX Improvements:
    - ClaimIt logo now serves as home navigation link
    - Removed redundant Home link from navigation
    - Beautiful item cards with image placeholders when no photo available
    - Modern gradient hero sections and smooth transitions
    - Professional marketplace layout with grid display
    Technical Enhancements:
    - Custom router.php for proper static file serving
    - PHP 8.4 compatibility with deprecation warning suppression
    - Form validation improvements (allows /bin/zsh values)
    - CSRF protection and secure file handling
    - Comprehensive error handling and user feedback
    The application now functions as a complete online marketplace where users can post items for sale (including free items) and browse available listings with modern, professional UI.
    by Dave Shevett
  • 512113a 3:59 PM
    Initial commit: ClaimIt web application
    - Complete PHP web application for claims management
    - Modern responsive design with professional UI/UX
    - Form validation and CSRF protection
    - Multiple pages: Home, About, Claims, Contact
    - Built with PHP 8.4, HTML5, CSS3, JavaScript
    - Composer dependency management
    - Security features and error handling
    by Dave Shevett