Commit Graph

305 Commits

Author SHA1 Message Date
sassanix
2cd6cd407a Merge pull request #127 from sjafferali/main 2025-09-09 22:40:13 -03:00
Samir Jafferali
1a2b9c154b Fix querying params for checksum 2025-09-08 22:18:45 -07:00
sassanix
b8b1a461bb Merge branch 'main' of https://github.com/sassanix/Warracker 0.10.1.11 2025-09-07 20:31:00 -03:00
sassanix
441358bea3 Enhances Global View with better document access, claim visibility, and critical bug fixes.
Description:

* Enhanced Global View integration with Paperless-ngx for seamless in-app document viewing.
* Added color-coded visual indicators for warranty claim statuses.
* Introduced read-only access to warranty claims in Global View.
* Fixed authorization issues blocking shared document access.
* Resolved claim creation errors with empty optional fields.
* Corrected JavaScript errors in Global View claims modals.
2025-09-07 20:30:55 -03:00
sassanix
fcc45a8eb1 Update README.md 2025-08-30 11:21:31 -03:00
sassanix
ac626ed922 warranty claims tracking update 2025-08-30 11:21:01 -03:00
sassanix
2e4cb7fa84 Warranty Claim Tracking
Added warranty claim tracking in key features
2025-08-30 11:20:01 -03:00
sassanix
d9d52743e2 Added warranty claims tracking, document URL support, and custom database 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.
0.10.1.10
2025-08-30 11:10:42 -03:00
sassanix
c45de7b1c0 Fix Apprise notification system, scheduler stability, and email configuration
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
2025-08-24 12:47:45 -03:00
sassanix
7ce71a156c Fix Apprise notification system, scheduler stability, and email configuration
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
0.10.1.9
2025-08-24 12:36:11 -03:00
sassanix
60239bd637 Fix Apprise notification system, scheduler stability, and email configuration
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
2025-08-24 12:34:40 -03:00
sassanix
2ece8d0d53 Merge pull request #115 from clmcavaney/from-address
adding SMTP_FROM_ADDRESS for email From address
2025-08-22 08:34:57 -03:00
Christopher McAvaney
982f86f60e adding SMTP_FROM_ADDRESS for email From address 2025-08-05 12:38:59 +10:00
sassanix
d594ca5565 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.
0.10.1.8
2025-07-24 12:22:08 -03:00
sassanix
043891c7fa Update README.md 2025-07-21 18:31:52 -03:00
sassanix
ec774872ef Updated the date 2025-07-20 23:07:06 -03:00
sassanix
154f57d73d Fix env var precedence, PostgreSQL migrations, and major blueprint refactor
### 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.
0.10.1.7
2025-07-20 23:02:03 -03:00
sassanix
6b857ed70c Update README.md 2025-07-17 21:40:02 -03:00
sassanix
eafd72bb5e Update README.md 2025-07-13 21:56:39 -03:00
sassanix
3802e4ba87 Delete images/demowarracker.gif 2025-07-13 21:56:19 -03:00
sassanix
c4c1a372af Merge branch 'main' of https://github.com/sassanix/Warracker 2025-07-13 21:55:30 -03:00
sassanix
4c7d368937 Fixing the demo gif 2025-07-13 21:54:57 -03:00
sassanix
6dac831e7e Update README.md 2025-07-13 21:54:05 -03:00
sassanix
5a171240b7 Rename demo.gif to demowarracker.gif 2025-07-13 21:53:52 -03:00
sassanix
001f88020a Update README.md 2025-07-13 21:53:02 -03:00
sassanix
2fb6b15b33 Merge branch 'main' of https://github.com/sassanix/Warracker 2025-07-13 21:52:00 -03:00
sassanix
d3c94b6a11 Updating demo.gif 2025-07-13 21:51:56 -03:00
sassanix
5132a5845d Update README.md 2025-07-13 21:26:16 -03:00
sassanix
0a06770d38 Merge branch 'main' of https://github.com/sassanix/Warracker 0.10.1.6 2025-07-13 21:06:04 -03:00
sassanix
818ceb5084 Fix UI layout, translation issues, caching bugs, and enhance CSV import & tag updates
- Moved warranty status row to the bottom of cards for better visual hierarchy in both grid and list views.
- Ensured real-time UI updates on tag edits and deletions, fixing stale tag info across the app.
- Added missing tag-related translation keys and warranty addition success messages across 17+ languages.
- Resolved caching issues by updating service worker logic, asset versioning, and nginx headers.
- Removed redundant Docker Compose commands causing migration duplication during updates.
- Enhanced CSV import to support flexible date formats using `dateutil.parser`, improving user experience.
- Fixed warranty duration selection limits by increasing max values in frontend and backend with DB migration.
- Improved Paperless-ngx integration with duplicate document detection and user-friendly linking.
- Fixed DB migration permission issues by granting `CREATEROLE` and removing redundant grants.
- Restored missing product photos by correcting a broken image loader function call.
2025-07-13 21:05:57 -03:00
sassanix
bb8b849622 Update README.md 2025-07-08 23:15:42 -03:00
sassanix
fbf1eb2d7e Update README.md 2025-07-08 22:46:53 -03:00
sassanix
fd38169903 Update README.md 2025-07-08 22:46:18 -03:00
sassanix
03c50336ab Update README.md 2025-07-08 22:45:39 -03:00
sassanix
e68228d161 Update README.md 2025-07-08 22:44:20 -03:00
sassanix
f8c12663a3 Update README.md 2025-07-08 22:43:22 -03:00
sassanix
01ca49f4d6 Update README.md 2025-07-08 22:38:07 -03:00
sassanix
9e3046929a Update README.md 2025-07-08 22:37:28 -03:00
sassanix
99a95d269b Revert README.md to version from June 27 commit 2025-07-08 22:35:22 -03:00
sassanix
a185d7d1d7 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.
0.10.1.5
2025-07-08 22:20:15 -03:00
sassanix
a7241ba8a7 Screenshots 2025-06-27 23:41:19 -03:00
sassanix
45bd8270c2 Update README.md 2025-06-27 09:14:19 -03:00
sassanix
04de5498ff Merge branch 'main' of https://github.com/sassanix/Warracker v0.10.1.4 2025-06-24 23:47:47 -03:00
sassanix
f3ba71bdbc warranty UI improvements & Paperless-ngx integration
- Redesigned warranty card with icon-based info display:
  📅 Age, 📄 Duration, 🔧 End Date, 🪙 Price, 📊 Serial, 🏪 Vendor, 🛡️ Type
- Improved layout across grid/list/table views: better spacing, no thumbnail overlap, dark mode support
- Added serial number display enhancements

- Integrated Paperless-ngx document browser in warranty forms:
  - Browse, search, filter, and select documents from Paperless-ngx
  - Modal UI with responsive design and tag-based filtering
  - Backend API for tag retrieval with auth and error handling

- Added user preference to view Paperless docs in-app:
  - Toggle setting in UI, persisted via DB/localStorage
  - Secure in-app viewing with fallback to external domain
  - Updated backend routes and frontend logic

Files touched: `script.js`, `style.css`, `index.html`, `auth_routes.py`, `app.py`, `settings-new.html`, `settings-new.js`, DB migration
2025-06-24 23:47:39 -03:00
sassanix
ddc6b6d967 Update README.md 2025-06-18 12:11:14 -03:00
sassanix
20f2172b2d Update README.md 2025-06-18 12:11:00 -03:00
sassanix
f2020fa023 Update README.md 2025-06-18 08:22:07 -03:00
sassanix
4318c481aa Update README.md 2025-06-17 22:30:10 -03:00
sassanix
0bc37003d1 Update README.md 2025-06-17 22:18:00 -03:00
sassanix
b81d98a834 Integrate Paperless-ngx for advanced document management and hybrid storage
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`
0.10.1.3
2025-06-17 22:05:29 -03:00