π¦ Release 0.10.1.7 β Config Made Right, Modular Codebase, Zero-Hassle Setup
Thanks again for all your feedback! This release is a major step forward in configuration reliability, code maintainability, and PostgreSQL compatibility. From fixing tricky environment variable issues to restructuring the backend into clean Flask Blueprints, this version is all about making the system smarter, leaner, and easier to deploy.
βοΈ Configuration Just Works Now
𧬠Environment Variables Now Take Precedence
- Fixed critical bug where environment variables (e.g., OIDC, Apprise, email settings) were ignored on fresh setups.
- Respected priority order:
- Env Variable > DB Setting > Hardcoded Default
- Applied across:
- OIDC (
OIDC_ENABLED
, etc.) - Apprise (
APPRISE_URLS
, etc.) - Base URL (
APP_BASE_URL
)
- OIDC (
β
Impact: Fresh Docker-based setups can now be fully configured via .env
files without touching the DB. Frontend correctly reflects OIDC state.
π§ͺ PostgreSQL That Doesnβt Fight Back
π Graceful Migration Handling for Limited DB Privileges
- Fixed startup-blocking errors caused by missing
CREATEROLE
privileges. - Migrations now use safe
DO
blocks with exception handling. - Advanced role grants are attempted but skipped with warnings if not permitted.
β Impact: Works out of the box with non-superuser PostgreSQL roles. No more blocked migrations!
π§© Modular Backend with Flask Blueprints
π§Ό Clean Code, Isolated Features
Massive refactor: extracted major backend routes into dedicated Blueprint modules:
Feature Area | New Module | Lines Extracted |
---|---|---|
Warranty Logic | warranties_routes.py
| ~1,500 lines |
Admin Management | admin_routes.py
| ~635 lines |
Statistics | statistics_routes.py
| ~390 lines |
Tag Management | tags_routes.py
| ~323 lines |
File Handling & Paperless | file_routes.py
| ~781 lines |
β
Impact: Smaller app.py
, easier maintenance, no behavior changes.
ποΈ Flask Application Factory Implemented
- Converted to modular app creation using
create_app()
method. - Added:
config.py
for environment-aware settings- Centralized
extensions.py
for clean extension loading
- Updated:
- Dockerfile now runs with
gunicorn "backend:create_app()"
- Dockerfile now runs with
β Impact: Production-ready architecture. Easier testing. Real separation of config, extensions, and entry logic.
π§© Critical Endpoint Restorations
- Fixed accidental removal of key endpoints:
/api/currencies
(for frontend dropdowns)/api/settings/global-view-status
(for user permissions)
β Impact: Frontend UI loads correctly again, no more 404s on currencies or permissions.
π Status Page + Document Fixes
π Status Page Now Shows Full Warranty Details
- Added missing
/api/debug/warranty/<id>
endpoint - Fixed JavaScript bug in toast notifications
β Impact: Clicking a row now shows full details + documents, without console errors.
π Paperless-ngx Documents Now Visible
- Updated logic to include Paperless-ngx docs in:
- Warranty cards
- Status page
- Clearly distinguishes local vs cloud storage with icons
β Impact: Users now see all attached docs, no matter the source.
Modified Files:
backend/__init__.py
,app.py
,config.py
,extensions.py
backend/auth_routes.py
,notifications.py
,oidc_handler.py
,apprise_handler.py
backend/admin_routes.py
,warranties_routes.py
,statistics_routes.py
,tags_routes.py
,file_routes.py
backend/migrations/009z_*.sql
,010_*.sql
,011_*.sql
frontend/script.js
,frontend/status.js
,frontend/settings-new.js
Dockerfile