* Added Model Number field to warranties (backend + frontend integration)
* Expanded localization: added Polish and Hebrew (with RTL), completed warranty claim translations for all locales
* Enhanced search: Model Number now searchable on Home and Status pages
* Improved Status page with Archived warranties filtering and display
* Fixed Global view logic for archived warranties and Model Number visibility
* Corrected missing Model Number translations across all languages
* Improved Add Warranty modal responsiveness on small screens
* Fixed document URL visibility bug and Chrome horizontal scrollbar issue
* Updated major dependencies (Python 3.14, gevent 25.9.1, Flask 3.1.2, etc.)
* Added Reddit community link and localization on About page
* PWA and cache updates for faster rollout and consistent asset refresh
* **Fixed:**
* Global view on Index page now correctly shows warranties from all users, including archived ones.
* Added `GET /api/warranties/global/archived` and unified global queries with correlated subqueries to avoid missing or collapsed rows.
* Updated frontend logic to merge archived warranties from the new endpoint when Global scope and Status = “All.”
* Bumped `script.js` and service worker cache to ensure clients receive updated logic.
* Updated files: `backend/warranties_routes.py`, `frontend/script.js`, `frontend/sw.js`, `frontend/index.html`, `frontend/status.html`.
* **Added:**
* Introduced **Model Number** field to warranties.
* Backend: Added `model_number` column, integrated into GET/POST/PUT routes.
* Frontend: Added Model Number input in New/Edit modals and display on warranty cards.
* Updated files: `backend/migrations/047_add_model_number_to_warranties.sql`, `backend/warranties_routes.py`, `frontend/index.html`, `frontend/status.html`, `frontend/script.js`, `locales/en/translation.json`.
* **Enhanced:**
* Improved **Add Warranty modal** tab alignment for responsive layouts (≤740px).
* Adjusted tab label size and spacing to prevent wrapping while keeping icons and labels visible.
* Ensured consistent five-step progress indicator across all breakpoints.
* Updated file: `frontend/style.css`.
* Major usability and reliability improvements across frontend and backend
* Filters (Status, Tag, Vendor, Type, Search, Sort) now persist across views and sync via API for cross-device consistency
* Archived warranties correctly appear under “All” without affecting other filters
* Enhanced OIDC system with admin group support, secure secret handling, and improved attribute synchronization
* New responsive mobile hamburger menu and tablet-specific UI enhancements
* Fixed archived item styling, menu initialization, and login page layout issues
* Includes minor UX refinements, PyJWT compatibility updates, and deprecation clean-ups
Introduced Turkish language support and non-destructive warranty archiving. Modernized login page, filters, sorting, and tag management with responsive, theme-aware UI updates. Persisted filter/sort state across sessions, improved mobile layout, and fixed dark mode, i18n, and SSO alignment issues.
This release introduces three major enhancements:
1. Warranty claims tracking system with full database, API, and frontend integration to manage claims across their lifecycle.
2. Comprehensive URL/link support for documents and invoices, including database schema updates, API handling, responsive frontend integration, and error-resilient JavaScript improvements.
3. Database port configuration support via DB_PORT environment variable, ensuring flexible deployment while maintaining backward compatibility.
Additional improvements include UI/UX enhancements, null safety checks, error resolution in modals, and deployment configuration updates.
Fixes & Enhancements
* Resolved five critical Apprise notification issues:
• Ensured configuration reload during scheduled jobs
• Fixed warranty data fetching for Apprise-only users
• Refactored notification dispatch logic with dedicated helpers
• Corrected handler scoping via Flask app context
• Wrapped scheduler jobs with Flask app context to prevent context errors
→ Verified: Scheduled Apprise notifications now work reliably for "Apprise only" and "Both" channels.
* Added support for SMTP\_FROM\_ADDRESS environment variable, allowing sender address customization independent of SMTP username. (PR #115)
* Fixed duplicate scheduled notifications in multi-worker environments:
• Strengthened should\_run\_scheduler() logic
• Now guarantees exactly one scheduler instance across all Gunicorn modes.
* Fixed stale database connection handling in scheduled jobs:
• Fresh connection acquired each run, properly released via try/finally
• Eliminates "server closed the connection" errors.
* Definitive scheduler logic fix for all memory modes (ultra-light, optimized, performance):
• Single-worker runs scheduler if GUNICORN\_WORKER\_ID is unset
• Multi-worker: only worker 0 runs scheduler.
Impact
* Apprise and Email notifications are now stable, reliable, and production-ready
* No more duplicate or missed notifications across all memory modes
* Improved system efficiency and robustness
This release introduces several key features and improvements
Added:
- Account email change support from Settings with full validation and UI update.
- Progressive Web App (PWA) capability with manifest and service worker integration.
- "Manage Tags" button on the main page to streamline tag management UX.
Changed:
- Improved responsiveness of key pages (index, status) across mobile and tablet views.
- Replaced hardcoded DB credentials with environment variable references (contribution by @humrochagf, commit 20997e9):
• Credentials are now pulled from Docker Compose env vars.
• Redundant superuser credential checks removed.
• Updated migration and permission scripts for dynamic configuration.
This version enhances user flexibility, security, and cross-device compatibility.
### Added
- Collapsible warranty details in the Status page table, showing full warranty info inline.
- Inline warranty editing via "Edit Warranty" button in expanded view.
- Vendor column added to sort options on the main warranty list.
- Vendor filter dropdown added to the main warranty list.
### Changed
- Removed direct product name links from Status page table in favor of inline expansion.
- CSV export now formats dates as YYYY-MM-DD.
### Fixed
- Resolved browser validation error with product URLs in hidden tabs by switching to text input and improving validation logic.
- Edit modal no longer closes on backdrop clicks.
- Migration scripts now support custom `DB_NAME` values by removing hardcoded names.
Refer to changelogs for more details.
- Replaced single warranty period field with separate Year/Month/Day inputs
- Added support for uploading ZIP/RAR documents to warranties
- Made JWT secret and upload size limits configurable via environment variables
- Fixed backend indentation error, SQL migration bug, and smtplib re-import
- Cleaned up obsolete frontend settings files
## [0.5.0] - 2025-03-07
### Added
- Enhanced filtering and sorting capabilities
- Status filter (All, Active, Expiring Soon, Expired)
- Multiple sorting options (Expiration Date, Purchase Date, Name)
- Export filtered warranties as CSV
- Improved filter controls layout
- Mobile-responsive filter design
- Multiple view options for warranty display
- Grid view with card layout (default)
- List view for compact horizontal display
- Table view for structured data presentation
- View preference saved between sessions
- Responsive design for all view types
- Optional purchase price tracking
- Users can now add purchase prices to warranties
- Price information displayed in warranty cards
- Currency formatting with dollar sign
- Included in warranty summary and exports
### Changed
- Completely redesigned user interface
- Modern card-based layout for warranties
- Enhanced filter controls with improved styling
- Better visual hierarchy with labeled filter groups
- Custom dropdown styling with intuitive icons
- Improved spacing and alignment throughout
- Consistent color scheme and visual feedback
- Responsive grid layout for warranty cards
### Fixed
- Status indicator borders now correctly displayed for all warranty states
- Green border for active warranties
- Orange border for warranties expiring soon
- Red border for expired warranties
- Consistent status styling across all warranty cards
- Form now resets to first tab after successful warranty submission
- Manual filename now properly cleared when form is reset
## [0.4.0] - 2025-03-07
### Added
- Improved warranty creation process
- Multi-step form with intuitive navigation
- Progress indicator showing completion status
- Enhanced validation with clear error messages
- Summary review step before submission
- Expiration date preview in summary
- Responsive design for all device sizes
### Fixed
- Progress indicator alignment issue in multi-step form
- Contained indicator within form boundaries
- Prevented overflow with improved CSS approach
- Ensured consistent tab widths for better alignment
- Improved tab navigation visual feedback
## [0.3.0] - 2025-03-07
### Added
- Product manual upload support
- Users can now upload a second document for product manuals
- Manual documents are displayed alongside invoices in the warranty details
- Both add and edit forms support manual uploads
- Product URL support
- Users can now add website URLs for products
- Links to product websites displayed in warranty cards
- Easy access to product support and information pages
### Changed
- Improved document link styling for consistency
- Enhanced visual appearance of document links
- Consistent styling between invoice and manual links
- Better hover effects for document links
- Fixed styling inconsistencies between document links
- Improved warranty card layout
- Document links now displayed side by side for better space utilization
- Responsive design adapts to different screen sizes
- More compact and organized appearance
### Fixed
- Styling inconsistency between View Invoice and View Manual buttons
- Removed unused CSS file to prevent styling conflicts
# Changelog
## [0.05.2-beta] - 2024-03-05
### Added
- Multiple serial numbers support for warranties
- Users can now add multiple serial numbers per warranty item
- Dynamic form fields for adding/removing serial numbers
- Database schema updated to support multiple serial numbers
- Added settings menu
- Added Darkmode
### Changed
- Enhanced warranty management interface
- Improved form handling for serial numbers
- Better organization of warranty details
- Optimized database queries with new indexes
- Added index for serial numbers lookup
- Added index for warranty ID relationships
### Technical
- Database schema improvements
- New `serial_numbers` table with proper foreign key constraints
- Added indexes for better query performance
- Implemented cascading deletes for warranty-serial number relationships
### Fixed
- Form validation and handling for multiple serial numbers
- Database connection management and resource cleanup