Remove exhaustive component/test/terraform listings that are easily
discoverable. Fix non-existent typecheck script reference. Consolidate
deployment info into single table. Add missing Matomo env vars and
single-test-file command.
- Add Gitea Actions workflow for automated frontend and API deployment
- Update all raw download URLs from GitHub to Gitea
- Remove deprecated Amplify config and GitHub-specific Terraform variables
- Clean up commented-out Amplify resources from Terraform
- Update documentation to reflect new repository and CI/CD setup
- Dashboard now accessible at /dashboard instead of /upadaj/dashboard
- Updated all navigation links to use new /dashboard route
- Login page still at /upadaj, redirects to /dashboard on success
- Colors and requests remain under /upadaj prefix
- Updated test files to reference new dashboard path
- Update CloudFront Function to handle Next.js static export .html files
- Fix TypeScript interface for color request service (add required user_phone field)
- Update ColorRequestForm component to include phone field
- Fix FilamentForm to preserve prices when updating quantities
- Add isInitialLoad flag to prevent price override on form load
- Only update prices when color is actively changed, not on initial render
- Add bulk filament price editor to dashboard
- Filter by material and finish
- Set refill and/or spool prices for multiple filaments
- Preview changes before applying
- Update all filtered filaments at once
- Add bulk color price editor to colors page
- Edit prices for all colors in one interface
- Global price application with search filtering
- Individual price editing with change tracking
- Add auto-kill script for dev server
- Kill existing processes on ports 3000/3001 before starting
- Prevent "port already in use" errors
- Clean start every time npm run dev is executed
- Added comprehensive color migration with 76 new Bambu Lab colors
- Includes glow, metallic, sparkle, gradient, ABS, and translucent variants
- Added PAHT material type with CF and Bez Finisha finish support
- Added Tough+ finish option for PLA filaments
- Fixed refill/spulna restrictions for specific combinations:
- ABS GF Yellow/Orange now refill-only
- TPU 95A HF now refill-only
- Removed spool restrictions for Galaxy and Basic finishes
- Updated frontend color mappings with all new colors
- All colors now available in admin panel for inventory management
Update deployment script to set appropriate cache-control headers:
- HTML files: no-cache to prevent stale content
- Next.js static assets: 1 year cache with immutable flag
- Other assets: 1 day cache for optimal performance
This resolves chronic caching issues with admin panel updates.
- Create CloudFront Function to rewrite directory requests to index.html
- Fix admin login page routing issue (/upadaj -> /upadaj/index.html)
- Attach function to CloudFront distribution default cache behavior
- Enables proper routing for all admin pages without .html extension
- Replace router.push with window.location.href for reliable redirects
- Fix auth check to wait for component mount before accessing localStorage
- Ensure proper redirect after successful login
- Fix redirect behavior on all admin pages (dashboard, colors, requests)
- Add CloudFront distribution with S3 origin
- Configure S3 bucket with website hosting
- Add Origin Access Control (OAC) for security
- Configure SPA error handling (404/403 -> index.html)
- Add Cloudflare DNS records (commented out due to invalid token)
- Add deployment script for future updates
- Update outputs to include CloudFront info
Added 16 new PLA Matte refill-only colors and 3 PLA Wood spool-only colors.
Updated admin panel to automatically handle Matte prefix and Wood finish.
Fixed sale banner not displaying due to expired sale dates.
Updated all active sales to expire in 7 days (November 7, 2025).
- Add Serbian status labels instead of English status names
- Fix dark mode colors for better contrast
- Update date formatting to use Serbian locale
- Fix request count display to show proper total
- Improve text colors consistency across light/dark themes
- Tested all API endpoints (create, read, update, delete) - working correctly
- Build succeeds without errors
- Implement color request modal popup instead of separate page
- Add Serbian translations throughout
- Fix Safari form styling issues with custom CSS
- Add 'Other' option to material and finish dropdowns
- Create admin panel for managing color requests
- Add database migration for color_requests table
- Implement API endpoints for color request management
- Add migration to correct 14 colors that should be refill-only
- Create helper script for applying the fix
- Add frontend tracking for refill-only colors
- Update README with current project state
- Add development guidance documentation
- Add comprehensive test suite for api.ts service layer
- Create component tests for BackToTop, ColorCell, MaterialBadge
- Add tests for data modules: bambuLabColors and bambuLabColorsComplete
- Include specialized tests for UI features, CRUD operations, and data consistency
- Achieve 100% coverage for core components and data utilities
- All 91 tests passing with robust mocking strategies
- Update isRefillOnly function to check spool-only status first
- Spool-only finishes now override refill-only color restrictions
- PLA Metal and Silk+ with refill-only colors now correctly enable spool option
- Reorder function definitions to avoid circular dependency
- Add type parameter to all isRefillOnly function calls
- Add Metal and Silk+ finishes as spool-only for PLA
- Add PPA material with CF finish (spool-only, black color only)
- Add PA6 material with CF and GF finishes (spool-only)
- Add FR finish option for PC material (spool-only)
- Disable refill price field when refill option is disabled
- Add color filtering for PPA CF to show only black colors
- Fix SaleCountdown useEffect dependency array to include saleEndDate
- Remove console logs and debug output from page.tsx
- Clean up date parsing logic and remove unnecessary error handling
- Ensure countdown recalculates when sale end date changes
- Fix TypeScript type comparison for sale_active boolean check
- Always set sale end time to 23:59:59 of target date
- Ensures proper day counting regardless of time selected in admin
- July 11 to July 18 should now show 7 days instead of 2
- Countdown now shows time until the furthest sale end date
- When setting new 7-day sale, banner shows 7 days instead of old shorter countdown
- Shows the latest active sale deadline instead of earliest one
- Countdown now uses actual sale_end_date from database instead of hardcoded Sunday
- Shows time until earliest sale end date when multiple sales are active
- Falls back to next Sunday if no end dates are set
- Banner now reflects real deadlines set in admin panel
- Added Light Jade (#A4D6AD) and Cherry Pink (#E9B6CC) PLA Translucent colors
- Implement dynamic finish options based on selected filament type
- ABS now only shows GF and Bez Finisha options
- Each filament type has appropriate finish options
- Auto-reset finish when changing type if incompatible
- Remove 'apply to all' option from sale manager - only selected items
- Fix PLA Translucent to be spool-only (no refill option)
- Sale countdown shows actual max percentage from database
- Update banner design: blue-purple-orange gradient instead of red
- Remove fire emoji and promotional text
- Make percentage number larger and yellow for emphasis
- Change 'do' to 'od' in discount text
- Add shimmer animation for subtle effect
- Added logic to handle Translucent finish as spool-only (no refill)
- Purple color stays as refill-only except when finish is Translucent
- Updated form to disable refill field for Translucent finish
- Updated form to enable spool field for Translucent finish even for normally refill-only colors
- Added visual indicators (samo spulna postoji) and (samo refil postoji)
- Skip failing color management tests until API is updated
- Created SaleCountdown component with real-time countdown
- Displays days, hours, minutes, seconds until sale ends
- Responsive design with fire emoji and urgency messaging
- Auto-calculates next Sunday at 23:59:59
- Positioned prominently above filament table
- Added call button next to Kupujem Prodajem link
- Added footer with contact section
- Implemented click tracking for phone calls
- Responsive design for mobile and desktop
- Add database migration for sale fields (percentage, active, dates)
- Update API to handle sale operations and bulk updates
- Create SaleManager component for admin interface
- Update FilamentTableV2 to display sale prices on frontend
- Add sale column in admin dashboard
- Implement sale price calculations with strikethrough styling