Releases: sassanix/Warracker
1.0.2
⚙️ Release 1.0.2 – CSV Import Enhancements & Permission Handling Upgrade
Version 1.0.2 introduces major improvements to the CSV import process and backend permission management, enhancing both data flexibility and system reliability.
This release focuses on better handling of real-world import scenarios, improved error tolerance, and more robust permission management for Docker-based deployments.
📄 CSV Import Improvements
🕒 Exact Expiration Date Support
- Added support for a precise
ExpirationDatefield in CSV imports. - Automatically used when duration fields (
WarrantyDurationYears,WarrantyDurationMonths,WarrantyDurationDays) are empty or zero, andIsLifetimeisFALSE. - Documentation updated to reflect the new field and its conditional logic.
- Modified files:
backend/warranties_routes.py,README.md
✅ Result: Enables direct import of warranties with specific expiration dates — improving data accuracy and reducing manual adjustments.
⚙️ Partial Commits with Per-Row Error Reporting
- CSV imports now commit successful rows even when others fail.
- The API response includes detailed per-row error messages.
- Returns
200for partial success and400only if all rows fail. - Modified file:
backend/warranties_routes.py
✅ Result: Easier troubleshooting and improved reliability for large or mixed-quality CSV files.
🔁 Automatic Duplicate Name Suffixing
- If a
ProductNamealready exists for the samePurchaseDate(in the database or within the same file), the importer now automatically renames it toName (1),Name (2), etc. - Prevents hard failures on legitimate, duplicate product entries with unique serials or metadata.
- Modified file:
backend/warranties_routes.py
✅ Result: Seamless import of multiple products sharing identical names and purchase dates.
🧰 Permission Handling Enhancements
- Updated entrypoint logs to clearly indicate permission fixing:
"Fixing permissions (database and upload folder)". - Refactored the logic into
fix_upload_folder_permissions()andfix_database_permissions()for clearer scope and maintainability. - Ensures recursive ownership of uploads to
warracker:warracker(uid:999, gid:999), with improved logging and connection retry handling. - Modified files:
Docker/entrypoint.sh,backend/fix_permissions.py
✅ Result: More reliable startup and consistent file/database permissions in containerized environments.
💡 Credit: Enhancement contributed by @Erwan-loot
🔗 Reference: PR #180
🧭 Upgrade Notes
- No database migrations required.
- Existing CSV templates remain valid; optional new
ExpirationDatefield can be added. - Recommended for all users importing CSV data or running in Docker environments.
This 1.0.2 release enhances import flexibility, error handling, and permission robustness, ensuring a smoother and more reliable experience for all Warracker deployments.
1.0.1
🩹 Hotfix 1.0.1 – PostgreSQL Privilege Handling & Startup Stability
Version 1.0.1 delivers a targeted hotfix addressing a container startup issue affecting environments with restricted PostgreSQL privileges.
This patch ensures the service can start reliably even without elevated database permissions , no feature or schema changes introduced.
⚠️ Note: This hotfix is only required for users deploying in restricted or limited-privilege PostgreSQL setups.
Standard installations and environments with full DB privileges are unaffected.
🐘 PostgreSQL Startup Loop Fix
✅ Stable Startup in Restricted Environments
-
Fixed a container startup loop caused by missing privileges in the PostgreSQL startup script.
-
Wrapped the
ALTER ROLE ... CREATEROLEcommand in a safeDOblock with exception handling.- If insufficient privileges are detected, a NOTICE is logged and startup continues normally.
-
No functional or schema changes — only improved robustness during initialization.
-
Modified file:
backend/fix_permissions.sql
✅ Result: Reliable container startup even in environments without elevated database roles.
🧭 Upgrade Notes
- No migrations or configuration changes are needed.
- Only applies if your deployment runs with restricted PostgreSQL roles.
- If you previously experienced a container restart loop during startup, upgrading to this version will resolve the issue.
This 1.0.1 Hotfix improves startup reliability for deployments with restricted database permissions — ensuring smooth operation without requiring elevated PostgreSQL privileges.
1.0.0
🚀 Release 1.0.0 – Renovate Automation, Audit Trails, and Global Enhancements
Version 1.0.0 marks a major milestone, our 51st release, and the moment we’re officially taking Warracker out of beta 🎉.
This release delivers automated dependency management, a robust admin audit trail, comprehensive multilingual support, and major Docker optimizations cutting the image size by half while improving security and maintainability.
⚠️ Important: It's advised that before upgrading, to please back up your database and configuration.
After updating, clear or refresh your browser data to ensure all new assets load correctly.
🤖 Automated Dependency Management with Renovate
✅ Smarter, Safer Dependency Upkeep
-
Integrated Renovate Bot for continuous dependency maintenance.
-
Intelligent grouping for Debian packages, Python libraries, and GitHub Actions.
-
Automated weekly checks (runs every Monday at midnight).
-
Includes:
- Merge confidence badges
- Version pinning
- OpenSSF Scorecard checks
- Safe handling of major upgrades
✅ Result: Secure, low-maintenance, and fully automated dependency management.
- Contributed by @Erwan-loot
🧾 Administrator Audit Trail
✅ Complete Administrative Transparency
-
Added admin-only audit logging for key events:
- Site setting changes (with secrets masked)
- User updates and deletions
-
New
GET /api/admin/audit-trailendpoint. -
Frontend: dedicated Audit Trail section under Settings for admins.
✅ Result: Full visibility into critical changes with safe and structured logs.
🏷️ New “Model Number” Field for Warranties
✅ Richer Product Tracking
- Added optional Model Number field to all warranty records.
- Displayed in warranty cards and modals across all views (Home, Global, Status).
- Search and statistics updated to include
model_number.
✅ Result: Easier product identification and traceability.
🌍 Global Language Expansion
✅ Two New Languages + Complete Coverage
- Polish (
pl) and Hebrew (he) added with full translation coverage. - Hebrew includes full RTL layout support.
- Completed warranty claim modal translations across all locales (18+ languages).
- Added localized Reddit Community link to the About page.
✅ Result: True global accessibility with complete multilingual support.
Credits:
- Polish by @GaikMarcin
- Hebrew by @ngfblog
🐳 Docker & Infrastructure Upgrades
✅ Streamlined, Secure, and Smaller Than Ever
-
Refactored Dockerfile with multi-stage builds, reducing image size by ~50%.
-
Added dedicated Docker setup:
entrypoint.sh,nginx-wrapper.sh, andsupervisord.conf
-
Enforced LF endings for scripts, pinned dependencies, and applied Docker security best practices.
✅ Result: Faster builds, leaner deployments, and safer runtime environments.
Contributed by @Erwan-loot
⚙️ Core Enhancements
✅ Reliability and Maintainability
- Refactored OIDC handler and database layer for cleaner code and stability.
- Enhanced frontend cache busting to ensure clients always load the latest files.
- PWA service worker now refreshes instantly (
skipWaiting()+clients.claim()).
✅ Result: Faster load times, improved stability, and reduced caching issues.
🧭 Smarter Search and Dashboard Behavior
✅ Model-Aware Search
- Search across Home and Status pages now matches by Model Number.
- Updated search placeholders and backend filters.
✅ Archived Status Support
- Added Archived filter to the Status dashboard.
- Archived warranties now appear under “All” and “Archived” views with neutral styling.
✅ Result: Clearer warranty organization and smoother search experience.
🧩 UI & UX Fixes
- Global warranties now display correctly across users, including archived items.
- Model Number now appears correctly in all locales and views.
- Small-screen optimizations: Tabs and labels adapt below 430 px.
- Document links: External URLs now visible even without notes/files.
- Chrome scrollbar fix: Removed overflow-causing width hacks.
✅ Result: Cleaner, consistent, and mobile-friendly interface across browsers.
📦 Dependency Upgrades
Major updates:
- Python → 3.14
- gevent → 25.9.1
- flask-cors → 6.0.1
- Font Awesome → 7.x
- postgresql-client → 17
Minor updates: Flask 3.1.2, Werkzeug 3.1.3, Psycopg2 2.9.11, PyJWT 2.10.1, APScheduler 3.11.0, Authlib 1.6.5, and more.
✅ Result: Updated dependencies with improved speed, security, and compatibility.
🧭 Migration Notes
-
Migration 047 adds
model_numbercolumn to warranties. -
Migration 048 creates
audit_logtable for admin trail. -
Migration 049–050 adds
plandheto supported language constraints. -
Rebuild required: Rebuild Docker image for Python 3.14.
-
Verify:
- flask-cors v6 compatibility
- Font Awesome 7 rendering
- PostgreSQL 17 client connection
🙌 Credits
- Renovate integration and Docker optimization by @Erwan-loot
- Polish translation by @GaikMarcin
- Hebrew translation by @ngfblog
This 1.0.0 release makes Warracker production-ready, leaner, faster, multilingual, and more maintainable than ever.
While we’re proud to move out of beta, please back up before upgrading and refresh your browser data after the update to ensure a smooth transition.
✨ Welcome to Warracker 1.0 , Stable, global, and future-ready.
0.10.1.14-beta
📦 Release 0.10.1.14 – Persistent Filters, Smarter OIDC, and Mobile Navigation
This release enhances filter persistence, OIDC integration, and mobile navigation, delivering smoother usability across devices and views. Filters now sync via API for cross-device consistency, OIDC gains advanced configuration and admin support, and mobile users benefit from a redesigned hamburger menu. Numerous fixes improve UI consistency, authentication reliability, and tablet layouts.
🔍 Persistent Filters and Smart Sync
✅ Cross-View and Cross-Device Consistency
- Filters (Status, Tag, Vendor, Type, Search, Sort) now persist across navigation and reloads.
- Synced to API
saved_filterswhen authenticated for multi-device continuity. - Skips API writes on initial load to prevent unnecessary saves.
- View switching now reapplies filters seamlessly via
applyFilters(). - Restores saved Search input and clears filters correctly with “Reset.”
✅ Result: Users enjoy consistent filtering behavior across sessions and devices.
🔐 Smarter OIDC Integration and Secure Configuration
✅ Enhanced OIDC Features
- Added admin group support for OIDC-managed permissions.
- Synchronized key user attributes during login.
- OIDC-managed settings are hidden or disabled to prevent conflicts.
- Updated authentication flow for PyJWT 2.10 compatibility.
- Replaced deprecated
utcnow()calls with timezone-safe alternatives.
✅ Result: Stronger identity integration, improved reliability, and future-proofed authentication.
📱 Modern Mobile Navigation
✅ New Slide-Out Hamburger Menu
- Introduced responsive slide-out mobile menu (≤768px) with overlay.
- Dynamically clones navigation and auth links for unified behavior.
- Locks body scroll while open and closes on overlay or link click.
- Tablet (769–820px) now shows branded logo/title on login and refined Status card layout.
- Mobile UX refinement hides redundant user menu button and improves clarity.
✅ Result: A cohesive, intuitive navigation experience on all screen sizes.
🧩 UI/UX Enhancements
- Entire user menu entry now clickable for easier access.
- Archived warranties now appear correctly under “All” with proper styling.
- Non-archived filters correctly exclude archived items.
- Re-merge behavior ensures archived items reload correctly after switching views.
✅ Result: Clearer UI, fewer inconsistencies, and smoother workflow transitions.
🐞 Key Fixes
- Fixed OIDC client reload lifecycle and userinfo source handling.
- Resolved menu toggle issues on Settings page with dedicated script.
- Restored standalone Login page (removed header/menu overlap).
- Corrected Login button label and introduced
auth.login_titletranslation key. - Improved tablet Status layout for clearer summary grouping.
✅ Result: Polished authentication flow and consistent responsive layouts.
💡 Configuration Improvements
- Added configurable upload folder and secure runtime secret generation.
- Supported reading secrets from environment
*_FILEpaths.
✅ Result: More flexible and secure deployment options.
🙌 Credit
OIDC and configuration improvements contributed by @tecosaur in PR #138.
Modified Files:
frontend/script.js, frontend/index.html, frontend/style.css, frontend/mobile-header.css, frontend/mobile-menu.js,
backend/auth_utils.py, backend/oidc_handler.py, backend/app.py, backend/config.py,
backend/auth_routes.py, backend/migrations/046_add_saved_filters_column.sql, and others.
This update makes Warracker more consistent, secure, and user-friendly , ensuring filters, settings, and navigation work effortlessly across sessions, devices, and environments. 🚀
0.10.1.13-beta
📦 Release 0.10.1.13 – Smarter UI, Multilingual Reach, and Archival Power
This release introduces comprehensive Turkish translations, a non-destructive warranty archive system, and major UI/UX improvements across login, filters, sorting, and tag management. Users benefit from cleaner layouts, session-persistent settings, and seamless multi-device usability while maintaining compatibility with existing workflows.
🇹🇷 Full Turkish Language Support
✅ Complete Translations Across Pages
- Added Turkish (
tr) translation file with comprehensive UI, message, and system text coverage. - Applied translations consistently across Index, About, Status, and Settings pages.
✅ Result: Turkish-speaking users now enjoy a fully localized Warracker experience.
🗂️ Non-Destructive Warranty Archiving
✅ Safe and Reversible Archival
-
Added ability to archive warranties without deletion (
archived_attimestamp). -
New API endpoints:
GET /api/warranties/archivedPATCH /api/warranties/{id}/archive
-
Archived warranties hidden by default but retrievable with filter.
-
Neutral gray styling to distinguish archived items.
✅ Result: Users can clean up views without losing historical warranty data.
🎨 Modernized User Interface
✅ Refined Login Page
- Clean two-column layout with branding showcase and improved form controls.
- Branded SSO buttons, dark/light theme compatibility, and mobile logo/title.
✅ Smarter Filters, Sorting, and Data Management
- Unified filter/sort into popover panels for decluttered UI.
- Session persistence with localStorage for filters and sort settings.
- Consolidated Import/Export into a single “Data” menu.
✅ Modern Tag Management
- Inline editing and immediate persistence of tag changes.
- Live UI refresh for tags across modals, filters, and warranty cards.
- Modernized modal design with responsive, theme-aware styles.
✅ Mobile Enhancements
- Three-row layout for improved usability on narrow screens.
- Compact filter/sort labels (icons-only under 425px).
✅ Result: A cleaner, faster, and more consistent UI on desktop and mobile.
🔧 Key Fixes and Improvements
- Fixed dark mode text, caret visibility, and navigation consistency.
- Corrected i18n safety with proper mapping of translation keys.
- Added missing translations across multiple locales.
- Fixed JavaScript error with duplicate
isArchivedViewdeclaration. - Preserved alignment and branding for SSO buttons.
- Improved scrolling and spacing for mobile usability.
✅ Result: Smoother user experience, fewer errors, and improved theme consistency.
Modified Files:
locales/tr/translation.jsonfrontend/login.html,frontend/style.css,frontend/index.html,frontend/script.js,frontend/mobile-header.css,frontend/header-fix.cssbackend/migrations/045_add_archived_at_to_warranties.sql,backend/warranties_routes.py,backend/notifications.py- Multiple locale files (
locales/*.json)
This update delivers a modernized UI, robust archiving, and expanded language support, ensuring Warracker is more accessible, intuitive, and powerful than ever. 🚀
📷 Screenshots

0.10.1.12-beta
📦 Release 0.10.1.12 – Reliable Uploads, Secure Access, Stronger Deployments
This release focuses on fixing critical Paperless-ngx integration issues, restoring full functionality for non-Docker setups, and improving production stability and repository management. Users can now upload documents reliably with Paperless-ngx, connect securely with 2FA, and enjoy smoother deployments across all environments.
📄 Reliable Paperless-ngx Integration
✅ Accurate Duplicate Detection
- Fixed critical bug where all new uploads were flagged as duplicates due to an incorrect API parameter.
- Corrected checksum matching ensures only true duplicates are blocked.
- Users can now upload new documents without interference.
- Credit: Fix contributed by @sjafferali in PR #127.
✅ Result: New files upload correctly, while duplicate detection works as intended.
✅ Secure Token Authentication with 2FA
- Fixed API token failures when Paperless-ngx Two-Factor Authentication (2FA) was enabled.
- Implemented pure token-based authentication with improved error handling.
- Backward compatible for setups without 2FA.
✅ Result: Users with 2FA enabled can securely connect without losing functionality.
🎨 Restored Assets for Non-Docker Installs
✅ Full Status Page and i18n Support
- Restored missing i18next JavaScript libraries that were excluded by .gitignore.
- Updated service worker cache configuration and forced refresh with a new version.
✅ Result: Non-Docker installations now load the status page and internationalization features without errors.
⚡ Stronger Production Deployments
✅ Database Driver Optimization
- Replaced
psycopg2-binarywithpsycopg2for production-grade stability and performance. - Ensures compatibility with system libraries during deployment.
✅ Result: More reliable PostgreSQL connectivity in production.
✅ Repository Library Tracking
- Updated
.gitignoreto include the/libdirectory for essential library files. - Ensures dependencies are properly tracked and available in all environments.
✅ Result: Cleaner repository management and consistent builds.
Modified Files:
backend/paperless_handler.pybackend/file_routes.pybackend/requirements.txtfrontend/sw.js.gitignore
This update delivers reliable uploads, secure API integration, and stronger production stability, ensuring Warracker works seamlessly across both Docker and non-Docker environments. 🚀
0.10.1.11-beta
📦 Release 0.10.1.11 – Smarter Global View, Clearer Claims, Stronger Stability
This release makes Global View more powerful and intuitive by keeping all documents in-app, adding at-a-glance claim visibility, and enabling read-only access to claims across users. It also fixes key issues that blocked shared documents, caused claim creation errors, and broke claim modals.
📄 Smarter Global View Document Handling
✅ Seamless In-App Experience
- Other users’ Paperless-ngx documents now open directly in Warracker—no more external tabs.
- Smart context detection ensures this only applies in Global View, keeping personal preferences intact.
- Provides a consistent, privacy-respecting experience across all shared documents.
✅ Result: Users can review invoices, manuals, and other shared files without leaving their workflow.
🎨 Claims at a Glance
✅ Visual Status Indicators
- Claims buttons are now color-coded: Purple (Open), Blue (Finished), Gray (No Claims).
- Pulsing animations highlight claims that need attention.
- Tooltips provide instant context without opening modals.
- Backend now summarizes claim states across all views for consistency.
✅ Result: Claim status is visible instantly, saving time and improving management.
🔍 Read-Only Claims in Global View
✅ Transparent, Secure Access
- Global View now shows detailed claims from other users’ warranties in read-only mode.
- UI clearly labels “View Only” and hides editing options.
- Permissions ensure only owners can create or update claims.
- Errors when opening claims in Global View have been eliminated.
✅ Result: Teams gain full visibility into claims while keeping data secure.
🛠️ Fixes and Reliability
- Shared Documents in Global View: Fixed missing fields and authorization logic so invoices, manuals, photos, URLs, and Paperless-ngx files display correctly, while private “other documents” remain protected.
- Claim Creation: Empty optional fields (
description,resolution) no longer cause server errors. - Claims Modals: Fixed JavaScript errors that prevented modals from opening in Global View.
✅ Result: Shared documents, claims, and modals now work smoothly and reliably across all modes.
Modified Files:
backend/file_routes.pybackend/warranties_routes.pyfrontend/script.jsfrontend/style.css
This update delivers smarter document workflows, instant claim visibility, and stronger stability , laying the groundwork for even more collaborative Global View features ahead. 🚀
0.10.1.10-beta
📦 Release 0.10.1.10 – Warranty Claims, Document URLs, and DB Port Support
This release introduces a complete warranty claims tracking system, adds flexible URL support for documents and invoices, and provides custom database port configuration for deployment flexibility. Users now have more control over claims, document management, and database connectivity.
📝 Warranty Claims Tracking System
✅ End-to-End Claims Management
- Added new
warranty_claimstable with dates, statuses, claim numbers, descriptions, and resolutions. - Implemented full REST API with authentication and authorization.
- Introduced claims modal UI with intuitive claim workflows and status badges.
- Defined claim lifecycle statuses: Submitted, In Progress, Approved, Denied, Resolved, Cancelled.
- Added validation, error handling, and database constraints to ensure data integrity.
✅ Result: Users can now create, update, and track warranty claims through a structured workflow with clear lifecycle visibility.
🔗 URL Support for Documents and Invoices
✅ Dual Document Handling
- Added
invoice_url,manual_url, andother_document_urlcolumns in migration 043. - Enhanced Add/Edit warranty modals to accept both file uploads and URLs with icons and responsive design.
- Displayed URLs alongside uploaded files on warranty cards, opening links in new tabs.
- Updated Add Warranty summary to intelligently show file names or URLs.
- Extended backend API and JavaScript logic with robust null safety checks.
✅ Result: Users can attach files, external URLs, or both, ensuring maximum flexibility for document storage and access.
⚙️ Database Port Configuration
✅ Flexible Deployment Options
- Added
DB_PORTenvironment variable support with fallback to5432. - Updated backend handlers, Docker configs, and
env.examplefor consistent behavior.
✅ Result: Deployments now support non-standard PostgreSQL ports and multi-instance setups without breaking compatibility.
Modified Files:
backend/migrations/043_add_document_urls_to_warranties.sqlbackend/migrations/044_create_warranty_claims_table.sqlbackend/warranties_routes.pybackend/db_handler.pybackend/fix_permissions.pyfrontend/index.htmlfrontend/status.htmlfrontend/script.jsfrontend/style.cssdocker-compose.ymlDocker/docker-compose.ymlenv.example
This update delivers powerful new warranty workflows, flexible document management, and enhanced deployment configuration, paving the way for smoother operations across all environments. 🚀
Screenshots:

0.10.1.9-beta
📦 Release 0.10.1.9 – Fixed Apprise Notifications, Scheduler Stability, and Email Config
This release delivers critical fixes to the Apprise notification system, ensures scheduler reliability across all Gunicorn modes, and adds better email configuration flexibility. Notifications are now stable, duplicate-free, and production-ready.
🔔 Fixed Apprise Notification System
✅ Critical Failures Resolved
- Added configuration reload to ensure scheduled jobs use latest DB settings.
- Removed faulty email-only filter that excluded Apprise users.
- Refactored dispatch logic with dedicated helpers for email and Apprise.
- Fixed handler scoping by retrieving Apprise handler from Flask app context.
- Wrapped scheduler jobs in Flask app context to prevent context errors.
✅ Result: Apprise notifications now send reliably for both "Apprise only" and "Both" channels. System follows Flask best practices and passes verification tests.
📧 Improved Email Configuration
✅ Custom Sender Address Support
- Added support for
SMTP_FROM_ADDRESSenvironment variable to customize the email From address independently of the SMTP username. - Contributed by @clmcavaney in #115.
✅ Result: Greater flexibility when using email services with different auth vs. sender addresses.
🛡️ Fixed Duplicate Notifications
✅ Only One Scheduler Runs
- Strengthened
should_run_scheduler()logic. - Worker detection now ensures only worker-0 runs the scheduler in multi-worker setups.
- Removed unsafe fallbacks that previously caused multiple schedulers.
✅ Result: Exactly one notification is sent per event—no more duplicates across optimized or performance modes.
🗄️ Fixed Database Connection Handling
✅ Fresh Connections per Job
- Refactored scheduler to acquire a fresh DB connection each run.
- Connections now released safely with try/finally.
✅ Result: No more “server closed the connection unexpectedly” errors. Notifications run reliably long-term.
⚙️ Definitive Scheduler Fix Across All Modes
✅ Works in Single and Multi-Worker Environments
- Single-worker (ultra-light) now runs scheduler correctly when
GUNICORN_WORKER_IDis unset. - Multi-worker (optimized/performance) ensures only worker-0 runs scheduler.
✅ Result: Scheduler works consistently in every Docker mode—ultra-light, optimized, and performance.
Modified Files:
backend/notifications.pybackend/__init__.pybackend/app.py
This update brings full notification reliability across all environments and configurations. Both Apprise and Email notifications are stable, efficient, and production-ready. 🚀
0.10.1.8-beta
📦 Release 0.10.1.8 – Fixed Scheduler Bugs, Mobile Layout, and Missing APIs
This release fixes critical notification failures, restores timezone and locale support, and drastically improves the mobile user experience. Notifications now run reliably in every Docker mode, and mobile UI is much more compact and readable.
🔧 Fixed Notification Scheduler in Docker
✅ Scheduler Now Starts in All Modes
- Scheduler was never initialized in ultra-light Docker mode due to incorrect setup and worker detection.
- Moved scheduler startup into
create_app()to ensure it's triggered. - Updated logic to correctly detect when a single worker should run the scheduler—even in ultra-light mode.
✅ Result: Scheduler starts properly across all memory modes. Only worker-0 runs it in multi-worker setups. Warranty expiration notifications now work consistently every 2 minutes.
🌐 Restored Missing Timezone and Locale APIs
✅ Added /api/timezones and /api/locales
- Fixed frontend errors caused by missing endpoints.
/api/timezonesnow returns data grouped by region (e.g., America/Halifax)./api/localesis now public and returns supported languages.- Timezone endpoint returns data in correct array format for frontend.
✅ Result: Settings page dropdowns for timezones and languages now load correctly again. Admin panel’s “Check Scheduler Status” and test notifications also work across all environments.
📱 Fixed Mobile Layout for Warranty List View
✅ Warranty Cards Now Fit Mobile Screens
-
Cards were too large on mobile: 180px images, wide padding, large fonts.
-
Added responsive CSS:
- Image sizes scale down from 80px → 60px → 50px
- Layout switches to vertical on smaller screens
- Padding, text, and icons shrink progressively
- Disabled hover transforms for better touch interaction
✅ Result: Warranty list is now easy to scroll and read on all phone sizes. No more bloated layouts or awkward interactions.
🧼 Fixed Button Text Overflow
✅ “Manage Tags” Button Cleaned Up
- On screens narrower than 480px, text is hidden and only the icon is shown.
✅ Result: Buttons now display cleanly on all devices without overlapping or overflow.
Modified Files:
backend/__init__.py,notifications.py,warranties_routes.pyfrontend/mobile-header.css,style.css
This update brings complete scheduler reliability and a much smoother mobile UI, thank you for continuing to report issues and test improvements. ❤️