11:01 PM · ZRosserMcIntosh
Add comprehensive webhook status documentation
- Document all 4 active webhooks (Stripe, ShipStation, Brevo, Employee)
- Include configuration instructions for each service
- List all events handled and features
- Document security features (signature verification, deduplication)
- Provide production webhook URLs for third-party configuration
- Add monitoring and testing information
- Status: All webhooks operational ✅
10:51 PM · ZRosserMcIntosh
Reduce LWM logo size on diamond education page by 30%
- Change hero logo from w-16 h-16 (64px) to w-11 h-11 (~45px)
- Maintains aspect ratio and centering
- More proportional to the page content
10:22 PM · ZRosserMcIntosh
Add diamond shape images to education/diamond-shapes page
- Replace placeholder images with actual diamond shape images from /public/diamonds/
- Add Image component import from next/image
- Update diamond shapes array to use correct image paths
- Remove Princess shape (per previous request)
- Add Heart shape with image
- Update images for all shapes:
- Round, Oval, Emerald, Cushion, Pear, Marquise, Radiant, Asscher, Heart
- Update 4Cs link to point to /education/diamonds instead of removed /education/4cs
- Images display properly with Next.js Image optimization
10:17 PM · ZRosserMcIntosh
Fix ring sizing page: add printable ring sizer PDF and update content
- Add Katura printable ring sizer PDF to /public/downloads/ring-sizer-guide.pdf
- Update sizing tips content:
- Remove 'Narrow bands fit more snugly' from width description
- Simplify 'When in doubt' tip to just 'easier to size down than up'
- Update sneaky tip: replace 'while they sleep' with 'compare to friend who will discreetly tell you their size'
- Fix 404 error for printable ring sizer download
- Expert care section already mentions 'master jewelers' doing all resizing
9:36 PM · ZRosserMcIntosh
Remove /education/4cs from navigation and add carat size visualization to /education/diamonds
- Remove 4Cs link from header navigation dropdown
- Remove 4Cs link from config.ts navigation
- Remove 4Cs page from sitemap.ts
- Add actual size comparison visualization to Carat Weight section
- Shows 0.5 to 10 carat diamonds at actual screen size
- Uses real-world round brilliant cut diameters in mm
- Converts to pixels at 96 DPI for accurate display
- /education/diamonds now contains all 4Cs information making /education/4cs redundant
9:29 PM · ZRosserMcIntosh
Add LWM hallmark logo to diamond education page
- Replace generic sparkles icon with KATURA hallmark (favicon) in hero section
- Add hallmark icon to CUT tab header for brand consistency
- Uses /brand/favicon.png for the LWM logo
9:17 PM · ZRosserMcIntosh
Update diamond education page: remove sparkles icons, remove 'signature', remove Princess cut, reorder shapes
- Remove Sparkles icon from hero section and CUT tab header
- Remove word 'signature' from cut description
- Remove Princess diamond shape (per client request)
- Reorder diamond shapes:
- Row 1: Round, Emerald, Oval
- Row 2: Asscher, Cushion, Pear
- Row 3: Marquise, Heart, Radiant
Update9:41 AM · ZRosserMcIntosh
Drop and recreate tables to fix partial migration issues
- Use DROP TABLE IF EXISTS CASCADE before CREATE TABLE
- Removes IF NOT EXISTS to ensure clean table creation
- Fixes 'column employeeId does not exist' error from partial migration
- Reorders WholesaleCustomer to be created before WholesaleOrderTemplate
- Removes duplicate WholesaleCustomer definition
Update9:37 AM · ZRosserMcIntosh
Update migration to create Appointment table instead of altering
- Create Appointment table (wasn't in schema)
- Create WholesaleCustomer table
- Create WinBackCampaignSent table
- Create ErrorLog table
- Fix ProductBundle columns (savingsAmount, savingsPercent, isGiftSet, imageUrl)
- Fix EmployeePerformance columns (employeeId, period, topProducts)
- Fix WholesaleOrderTemplate columns (wholesaleCustomerId, totalItems, estimatedTotal)
- Add Order.processedBy for employee tracking
- Add HealthCheck.alertSent and message columns
Feature9:34 AM · ZRosserMcIntosh
Implement all 10 Codex-recommended features
- 2FA with TOTP (otplib) and backup codes
- QR code generation for authenticator setup
- Failed login tracking with auto-lockout
- IP/device-based security alerts
- Device fingerprinting and trusted devices
- Points system (1 point/, 100 points = discount)
- 5 VIP tiers (Bronze → Diamond)
- Referral program with bonuses
- Tier-based discounts and perks
- Real-time stock tracking
- Sales velocity calculation
- Low stock alerts via email
- Stockout forecasting
- Daily metrics calculation
- Leaderboard rankings
- Team summary statistics
- Cron-based aggregation
- 24h and 2h reminder emails
- Calendar links (Google, Outlook, ICS)
- Rescheduling and cancellation
- Dynamic bundle creation
- Savings calculation
- Gift set support
- Availability validation
- Customer lifecycle segmentation
- Automated email campaigns
- Conversion tracking
- Campaign analytics
- Database/API health checks
- Uptime statistics
- Error logging and alerts
- Alert cooldown logic
- Reorder template CRUD
- One-click reorder from templates
- Popular product suggestions
- Cron jobs for automated tasks
- Raw SQL for new schema fields
- Comprehensive documentation
Feature8:53 AM · ZRosserMcIntosh
add employee audit logging with login tracking
- Add GET/POST /api/admin/audit/employee-logins endpoint
- Log employee logins with IP, device, browser, OS info
- Parse user-agent using ua-parser-js for device details
- Add Tabs UI to employees page with Team and Audit Log tabs
- Audit Log tab only visible to OWNER role
- Add i18n translations for EN and PT
- Update employee login page to log successful logins
- Display login time in Eastern Time (EST)
8:41 AM · ZRosserMcIntosh
Add product detail translations for all 9 languages
- addToBag: Add to cart button
- selectSize: Size selector placeholder
- sizeLabel: Size label
- linkCopied/linkCopyFailed: Share link toasts
- shareProduct: Share tooltip
- handMadeCreation: Handmade section title
- handMadeDescription: Handmade description text
- youMayAlsoLove: Related products heading
- addedToCart: Toast title
- itemAddedDescription: Toast description
- addToCartError: Error toast title
- tryAgain: Error toast description
- selectVariantError: Variant required error
- selectVariantDescription: Size selection required
- itemAddedDescription: Added to wishlist description
- itemRemovedDescription: Removed from wishlist description
- pleaseSignIn: Sign in prompt title
- signInToManage: Sign in to manage description
- signInToAdd: Sign in to add description
- error: Error title
- errorDescription: Generic error message
8:33 AM · ZRosserMcIntosh
Add Portuguese translations for product detail page components
- Price on Request text now translates
- Lead Time/Atelier Creation Time now translates
- Hand Made Creation section now translates
- YOU MAY ALSO LOVE heading now translates
- Related product prices now translate
- ADD TO BAG button now translates
- Select size placeholder now translates
- Size labels now translate
- Email Us button now translates
- Contact for pricing text now translates
- Share tooltips now translate
- Link copied/failed toasts now translate
- All toast messages now translate
- Variant selection error messages now translate
- Price on Request text now translates
- All toast titles and descriptions now translate
- Sign in prompts now translate
- Error messages now translate
8:26 AM · ZRosserMcIntosh
Update carat sizes to 0.5, 1-10 full range
8:25 AM · ZRosserMcIntosh
Update diamond education page with real-world sizing and add Princess cut
- Changed from 0.5-2.0 carats to 0.5-10.0 carats range
- Updated to show actual real-world diamond sizes on screen
- Uses accurate round diamond diameters in mm converted to pixels at 96 DPI
- Provides true-to-life size comparison for better customer understanding
- Added Princess cut to main diamond shapes config
- Now available in engagement ring designer
- Uses same /diamonds/princess.png image as education pages
- Ensures consistent diamond shape options across site
8:18 AM · ZRosserMcIntosh
Add founder photo to about page
- Added Lee Wiser McIntosh photo to public/images/
- Updated about page to display founder photo in 'Our Story' section
- Replaced placeholder image with founder portrait
Update7:56 AM · ZRosserMcIntosh
remove 'All Jewelry' from nav dropdown and hide price for 'Price on Request' products
- Remove 'All Jewelry' menu item from jewelry dropdown navigation
- Add priceOnRequest field to RelatedProduct type
- Query priceOnRequest field in getRelatedProducts function
- Conditionally display 'Price on Request' instead of actual price in related products section
- Fixes issue where internal prices were shown for price-on-request items
Docs7:09 AM · ZRosserMcIntosh
reorganize and clean all markdown documentation
- Remove all emojis from documentation for professional appearance
- Move 16 root MD files to appropriate docs/ subfolders
- Organize by category: checkout, features, fixes, integrations, etc.
- Improve readability with consistent formatting
- Add DOCUMENTATION_REORGANIZATION.md summary
- Clean all emoji characters from existing docs/ files
2:54 AM · ZRosserMcIntosh
remove visible breadcrumbs from shop, collections, cart, education pages
2:30 AM · ZRosserMcIntosh
Hide category text on product detail page while maintaining spacing
2:14 AM · ZRosserMcIntosh
Limit product grid to maximum 4 columns per row
2:12 AM · ZRosserMcIntosh
Remove grey divider line and ensure all filters in same row
2:11 AM · ZRosserMcIntosh
Remove box styling from dropdowns - show as plain text with arrows
2:09 AM · ZRosserMcIntosh
Redesign category header: centered title with filters left and sort right
1:04 AM · ZRosserMcIntosh
Fix corrupted import statement in consultation page
1:03 AM · ZRosserMcIntosh
Update consultation page hero text - remove 'finding or'
1:00 AM · ZRosserMcIntosh
Add location info and dynamic descriptions to consultation type options
12:52 AM · ZRosserMcIntosh
Remove compare feature completely from products and navigation
12:48 AM · ZRosserMcIntosh
Remove Bespoke from header navigation dropdown
12:01 AM · ZRosserMcIntosh
Update pnpm lockfile with ai package dependency