✨ Added
-
Admin/User Tag Separation
- Admin-only and User-only tags with backend enforcement (
is_admin_tag
). - Role-based filtering across all tag-related endpoints.
- DB migration:
009_add_admin_flag_to_tags.sql
.
- Admin-only and User-only tags with backend enforcement (
-
Version Checker
- About page now checks for the latest GitHub release and indicates update status.
-
Mobile Home Screen Icon Support
- Added Apple touch icon and web app manifest for Android/iOS home screen support.
-
Optional Vendor Field for Warranties
- Vendor info can be added/edited, shown in UI, and included in search.
- DB migration:
017_add_vendor_to_warranties.sql
.
-
Serial Number Search
- Search now matches serial numbers in addition to names, notes, and tags.
-
CSV Import: Vendor Field
- Support for importing vendor via CSV with header
Vendor
.
- Support for importing vendor via CSV with header
-
Date Format Customization
- Users can choose from 6 display formats for warranty dates. Persisted across sessions and tabs.
-
IPv6 Support
- Nginx now listens on both IPv4 and IPv6 (
listen [::]:80;
).
- Nginx now listens on both IPv4 and IPv6 (
-
Cloudflare Compatibility
- Added
data-cfasync="false"
to ensure script loading behind Cloudflare.
- Added
-
New API Endpoint:
/api/timezones
- Structured list of timezones grouped by region.
🛠️ Changed
-
Theme Persistence Overhaul
- Unified theme preference using a single
localStorage
key:darkMode
. - Removed all prefixed or redundant keys and logic.
- Ensured early loading of
theme-loader.js
across all HTML files. - Reliable persistence across sessions and pages.
- Unified theme preference using a single
-
Migration System Refactor
- Improved reliability and removed obsolete files.
-
Warranty Visibility Logic
- Admins now only see their own warranties.
- Fixed leakage of user warranties across roles.
🐛 Fixed
-
Tag Visibility
- Corrected reversed visibility logic between Admins and Users.
-
Date Handling (Off-by-One Errors)
- Used
relativedelta
for accurate date math including fractional years. - Applied consistent UTC-based formatting and parsing on frontend.
- Eliminated timezone-related discrepancies in summary tab and warranty display.
- Used
-
Currency Persistence
- Fixed inconsistent behavior after login and across sessions.
- Unified prefix usage and ensured preferences are loaded before rendering.
-
Settings Sync Issue
- Prevented auto-refreshes and logout when settings are open in multiple tabs.
- Refined inter-tab communication and storage event handling.
-
UI Toast Overlap
- Fixed header z-index conflict in
style.css
.
- Fixed header z-index conflict in
-
User Preferences API Bug
- Resolved failure to update preferences when only timezone was changed.
📁 Files Touched (Highlights)
- Frontend:
script.js
,settings-new.js
,index.html
,about.html
,theme-loader.js
, and others. - Backend:
app.py
, migrations009
,017
- Config:
nginx.conf
,manifest.json
- New:
version-checker.js
,requirements.txt
updated withpython-dateutil
.