Tags: nonomal/Warracker
Tags
Added warranty claims tracking, document URL support, and custom data… …base port configuration. 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.
Fix Apprise notification system, scheduler stability, and email confi… …guration 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 sassanix#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
Fix notification scheduler init and mobile UI issues Resolved critical scheduler initialization bug in Docker ultra-light mode by moving scheduler setup into the create_app() function and improving worker detection logic. Added missing /api/timezones and /api/locales endpoints to support frontend settings page. Ensured compatibility across all memory modes with single-worker and multi-worker setups. Also fixed mobile UI issues including text overflow on the "Manage Tags" button and oversized warranty cards in list view. Implemented responsive CSS adjustments for mobile screens to improve layout and usability.
Fix env var precedence, PostgreSQL migrations, and major blueprint re… …factor ### Highlights: - **Environment Variable Precedence Fix:** Corrected config loading logic to prioritize environment variables over database defaults on fresh installations. Ensured OIDC, Apprise, and email settings are now correctly derived from `.env` files. Also fixed the `/api/auth/oidc-status` endpoint to reflect the true state. - **PostgreSQL Migration Permissions:** Updated migration scripts to avoid `CREATEROLE` errors on standard DB users by using `DO` blocks with graceful fallbacks. ### Major Code Refactoring: - **Blueprint Extraction:** - Moved admin, warranty, tag, file handling, and statistics routes into dedicated Flask Blueprints for improved maintainability. - Introduced `file_routes.py`, `tags_routes.py`, `admin_routes.py`, `warranties_routes.py`, and `statistics_routes.py`. - **Application Factory Pattern:** - Adopted the Flask Application Factory pattern using `create_app()` for modular, testable architecture. - Added `config.py`, centralized `extensions.py`, and simplified `app.py` to a minimal entry point. ### Additional Fixes: - Restored missing `/api/currencies` and `/api/settings/global-view-status` endpoints. - Fixed status page warranty expansion and toast notification issues. - Updated frontend logic to properly show Paperless-ngx documents on warranty cards and status page. ### Impact: - Configuration via Docker `.env` now works reliably. - Application can now run on standard PostgreSQL setups. - Codebase is modular and easier to maintain. - Frontend issues related to missing endpoints and document visibility are resolved.
Merge branch 'main' of https://github.com/sassanix/Warracker
cache busting and multilingual support with 17 languages ### Enhanced - Implemented comprehensive cache busting with version `v=20250118001` across all HTML, CSS, JS, and service worker assets. - Updated service worker to force cache refresh and manage new asset list. - Improved performance and consistency with synchronized frontend and PWA cache handling. ### Added - Introduced full internationalization support for 17 languages including RTL support for Arabic and Persian. - Language detection, native name display, and instant switching without reload. - Updated UI, dropdowns, and translation files for complete multilingual experience. ### Fixed - Resolved Paperless-ngx document auto-linking when adding a warranty (file association now preserved pre-reset). - Prevented duplicate toast warnings when submitting forms with missing fields. ### Backend - Extended language code validation and updated DB constraints for new language support. ### Files - HTML, JS, CSS, service worker, translation files, and backend routes/migrations.
Merge branch 'main' of https://github.com/sassanix/Warracker
Integrate Paperless-ngx for advanced document management and hybrid s… …torage Introduced full integration with Paperless-ngx to enable intelligent document management and flexible storage options. Key changes: - Added admin settings section for configuring Paperless-ngx (server URL, API token, connection testing, toggle). - Implemented hybrid storage logic in `backend/app.py` allowing per-document selection between local and Paperless-ngx. - Enhanced warranty card UI with visual indicators for storage location (cloud vs. local icons). - Integrated storage selection and upload process into both Add and Edit Warranty workflows with parity. - Enabled direct access to Paperless-ngx documents via the warranty interface. - Ensured automatic cleanup of old documents when storage preference is switched. Affected files: - `backend/app.py` - `frontend/script.js` - `frontend/settings-new.html` - `frontend/settings-new.js`
Fix first user registration failure on fresh deployments Resolved a critical issue preventing the first user from registering on newly deployed instances. The fix includes: - Added missing logger import in `backend/auth_routes.py`, resolving a "logger not defined" error. - Improved the `owner` check in `backend/app.py` to account for missing `is_owner` column during initial database migrations. - Implemented graceful error handling for column existence checks to prevent runtime failures during startup. - These fixes ensure smooth initial registration without internal server errors on fresh deployments.
feat: Add currency controls, owner role, OIDC-only mode & key enhance… …ments This major update introduces several significant new features, critical bug fixes, and key enhancements across the application, focusing on user customization, administration, and system stability. New Features Currency Position Control: Allows users to choose whether the currency symbol appears on the left or right of numbers. This setting is applied universally across the app, including warranty cards and forms, and is saved per-user. Super-Admin (Owner) Role: Implements an immutable Owner role for the primary administrator, who cannot be deleted or demoted. A secure ownership transfer process has been added to the admin settings. OIDC-Only Login Mode: Adds a site-wide setting to enforce OIDC-only authentication, which hides the traditional username/password login form to streamline SSO environments. Product Age Tracking & Sorting: Displays the age of a product (e.g., "2 years, 3 months") on warranty cards and adds a new "Sort by Age" option to organize items by their purchase date. Global View Photo Access: Permits users to view product photos on warranties shared in global view, while ensuring other sensitive documents like invoices remain private to the owner. Persistent View Scope: The application now remembers the user's last selected view (Global or Personal) and automatically loads the appropriate data on page refresh for a seamless experience. Export Debug Tools: Introduces a comprehensive debugging system, including a new debug page and API endpoint, to help administrators troubleshoot and verify warranty exports. Key Enhancements About Page Redesign: A complete visual overhaul of the "About" page with a modern, card-based layout, prominent community links, and improved branding. Flexible Apprise Notifications: Admins can now configure Apprise notifications to be a single global summary or sent as per-user messages. Additionally, the scope can be set to include warranties from all users or only the admin's warranties. Larger Product Photo Thumbnails: Increased the size of product photo thumbnails in all views (grid, list, and table) for better product visibility. Smart Currency Default: The "Add Warranty" form now intelligently defaults to the user's preferred currency setting, rather than always using USD. Bug Fixes Critical OIDC & Proxy Fixes: Resolved two major OIDC issues: a RecursionError with gevent workers and incorrect http:// callback URLs when behind an HTTPS reverse proxy, enabling reliable OIDC login. Critical User Preferences Persistence: Fixed a bug where user settings for currency symbol and date format were not being saved correctly to the database. Apprise & Notification Settings: Corrected an issue preventing user notification channel and Apprise timing settings from saving. The Apprise message format is now standardized, and the admin UI has been cleaned up. CSV Import Currency: Ensured that warranties imported via CSV correctly use the user's preferred currency instead of defaulting to USD. Maintenance & Refactoring Authentication System Refactoring: Migrated all authentication-related routes from app.py into a dedicated Flask Blueprint (auth_routes.py) to improve code organization and maintainability. Legacy Code Cleanup: Removed over 290 lines of orphaned and commented-out legacy OIDC code from the main application file.
PreviousNext