github sassanix/Warracker 0.10.1.1
0.10.1.1-beta

latest releases: 0.10.1.10, 0.10.1.9, 0.10.1.8...
2 months ago

πŸš€ Massive Update: Owner Role, OIDC-Only Mode, Currency Controls & More!

This massive release delivers powerful new customization and administration features, introducing an immutable Owner role with secure ownership transfer, a site-wide OIDC-only login mode, and flexible currency symbol positioning. It also brings a complete redesign of the About page, granular Apprise notification controls, and crucial bug fixes that resolve long-standing OIDC authentication issues with providers like Authentik.

A huge thank you to the community for reporting bugs, providing feedback, and helping shape this release!


✨ Added

Super-Admin (Owner) Role & Ownership Transfer

A comprehensive ownership management system to secure the primary administrator account.

  • Immutable Owner: The first registered user is automatically designated as the πŸ‘‘ Owner and cannot be deleted, deactivated, or have their admin rights removed.
  • Secure Transfer: The current Owner can securely transfer ownership to another admin via a new, dedicated settings panel that requires explicit confirmation.
  • Protected UI: Edit/delete controls for the Owner are disabled in the user management list, with a crown icon for clear visual identification.

Files: backend/migrations/031_add_owner_role.sql, backend/app.py, backend/auth_routes.py, backend/auth_utils.py, frontend/settings-new.html, frontend/settings-new.js

OIDC-Only Login Mode

Administrators can now enforce Single Sign-On (SSO) across the entire application for enhanced security.

  • Enforce SSO: When enabled, the traditional username/password login form is hidden, requiring all users to authenticate via the configured OIDC provider.
  • Clean Interface: The register and forgot password links are also hidden, providing a streamlined "Login with SSO" experience.
  • Admin Control: A new toggle in the OIDC settings section allows administrators to easily enable or disable this mode.

Files: backend/app.py, backend/oidc_handler.py, frontend/settings-new.html, frontend/settings-new.js, frontend/login.html

Currency Position Control

Users can now customize how currency is displayed throughout the application to match their regional preference.

  • Left or Right: A new "Currency Position" setting allows users to place the currency symbol to the left (e.g., $100.00) or right (e.g., 100.00$).
  • Universal Application: The chosen setting is respected everywhereβ€”on warranty cards, in add/edit forms, and across all views.
  • User-Specific & Persistent: The preference is saved per user and persists across sessions and devices.

Files: backend/migrations/034_add_currency_position_column.sql, backend/auth_routes.py, frontend/settings-new.html, frontend/script.js, frontend/style.css

Product Age Tracking & Sorting

Track the age of your products and sort them by how long you've owned them.

  • Age Display: Warranty cards now show the product's age, calculated from the purchase date (e.g., "2 years, 3 months" or "15 days").
  • Sort by Age: A new "Age" option in the "Sort By" dropdown organizes warranties from oldest to newest.

Files: frontend/index.html, frontend/script.js

About Page Redesign

A complete visual overhaul of the "About" page with a modern, informative, and community-focused design.

  • Modern Card Layout: Information is organized into clean, easy-to-read cards for the project, community, and developer.
  • Discord Community Link: A prominent link to join the official Discord community, complete with branding.
  • Enhanced Social & Project Links: All links feature proper icons and brand-appropriate styling for a polished look.
  • Responsive Design: Fully responsive layout with excellent support for both dark and light modes.

Files: frontend/about.html


πŸ›  Fixes

Critical OIDC Login Failures (RecursionError & HTTPS Proxy)

Resolved two critical OIDC bugs that prevented logins, especially with self-hosted providers like Authentik and when running behind an HTTPS reverse proxy.

  • RecursionError Fix: Implemented an early monkey-patching solution for gevent workers in Gunicorn, eliminating the maximum recursion depth exceeded error during SSL operations.
  • HTTPS Callback Fix: Configured the application to correctly trust X-Forwarded-Proto headers from reverse proxies, ensuring it generates https:// callback URLs instead of http://, which resolves provider mismatches.

Files: backend/gunicorn_config.py, backend/app.py

Critical User Settings Not Saving

Fixed a persistent bug where user preferences for currency symbol and date format would revert to defaults on page refresh.

  • Backend API Fix: The /api/auth/preferences endpoint was corrected to properly read and write user settings to the database instead of returning hardcoded default values.
  • Result: All user display preferences are now saved and loaded correctly across sessions.

Files: backend/auth_routes.py

CSV Import Currency Selection

Fixed an issue where warranties imported via CSV were incorrectly defaulting to USD instead of respecting the user's preferred currency.

  • Smart Detection: The backend import function now queries the user's preferred currency and applies it to the imported items.
  • Comprehensive Mapping: Includes symbol-to-code mapping for over 30 currencies to ensure accuracy.

Files: backend/app.py


✨ Enhanced

Granular Apprise Notification Controls

Significantly enhanced the Apprise notification system with new modes and scopes for ultimate flexibility.

  • Notification Mode: Choose between a single Global Summary notification or personalized Per User notifications.
  • Warranty Scope: Select whether notifications should include warranties from All Users or only the Admin's Warranties.
  • Consistent Formatting: The message format for scheduled notifications is now unified with the manual test format, including urgency emojis (🚨, ⚠️, πŸ“…).
  • Individual Timing: Users can now set their own notification channel (email, apprise, or both) and delivery times, which the scheduler now fully respects.

Files: backend/notifications.py, backend/apprise_handler.py, backend/migrations/032_add_apprise_notification_mode.sql, backend/migrations/033_add_apprise_warranty_scope.sql, frontend/settings-new.html, frontend/settings-new.js

Larger & Clearer Product Photos

Increased the size of product photo thumbnails across all views for better visibility at a glance.

  • Larger Thumbnails: Photos are now larger and more prominent in Grid, List, and Table views.
  • Better Identification: Makes it easier to quickly identify products without opening the full image.

Files: frontend/style.css, frontend/script.js

Smart Currency Default in Add Form

The "Add Warranty" form is now smarter, automatically selecting the user's preferred currency by default.

  • Settings Integration: Reads the preferred currency from user settings, eliminating the need to change it from USD every time.
  • Seamless Experience: Users can still override the currency for individual warranties.

Files: frontend/script.js, frontend/settings-new.js

Persistent View Scope (Global/Personal)

The app now remembers and automatically loads your last-used view (Global or Personal) on page refresh for a more seamless experience.

Files: frontend/script.js, frontend/status.js


🧹 Maintenance & Code Quality

Authentication System Refactoring

Restructured all authentication-related routes into a modular Flask Blueprint for improved code organization, maintainability, and scalability.

Files: backend/auth_utils.py, backend/auth_routes.py, backend/app.py, Dockerfile

Legacy OIDC Code Cleanup

Removed over 290 lines of unused, commented-out, and orphaned legacy OIDC code from the main application file, making the codebase cleaner and easier to maintain.

Files: backend/app.py


πŸ“ Summary of Files Changed

Backend:

  • backend/app.py
  • backend/auth_routes.py
  • backend/auth_utils.py
  • backend/oidc_handler.py
  • backend/apprise_handler.py
  • backend/notifications.py
  • backend/gunicorn_config.py
  • backend/migrations/031_add_owner_role.sql
  • backend/migrations/032_add_apprise_notification_mode.sql
  • backend/migrations/033_add_apprise_warranty_scope.sql
  • backend/migrations/034_add_currency_position_column.sql
    Frontend JS:
  • frontend/script.js
  • frontend/settings-new.js
  • frontend/status.js
    Frontend HTML:
  • frontend/index.html
  • frontend/login.html
  • frontend/settings-new.html
  • frontend/about.html
  • frontend/debug-export.html
    Frontend CSS:
  • frontend/style.css
    Config/Other:
  • Dockerfile

πŸ’” Known Issues

  • Resolved! The critical OIDC bugs preventing logins with providers like Authentik have been fixed in this release.

Don't miss a new Warracker release

NewReleases is sending notifications on new releases.