## v0.6.0 - 2026-04-11 01:49:22 ### Highlights - Added authenticated /portal/services page as a service hub - Introduced modular route backend/routes/portal_services.py - Created shared templates/portal_base.html layout - Converted portal pages to base-template architecture - Added service cards (Follow-me, Video, Miner Rentals) - Fixed branding, nav, footer, and toggle consistency - Corrected Follow-me external link - External services now open in new tabs - Improved identity display for logged-in user ### Notes - portal_base.html is now the standard structure for future pages and projects - Billing portal is now the launch point for all OTB services ## v0.5.3 - 2026-03-27 21:25:11 - Fixed stale pending crypto payment lock issue so abandoned wallet attempts no longer trap the invoice - Confirmed crypto quote expiry and refresh flow works cleanly - Improved wallet/payment lifecycle stability for MetaMask and Rabby - Added retry logic for payment-received emails - Fixed dark-mode styling for the payment method dropdown - General crypto payment UX and recovery cleanup ## 2026-03-27 — v0.5.2 - Added retry logic for payment-received emails - Payment email helper now retries up to 3 times with delay - Added clearer retry failure logging for email send issues ## 2026-03-27 — v0.5.1 - Fixed crypto payment email auto-send path - Fixed payment-received emails to attach the real invoice PDF - Switched helper PDF generation to use the working invoice PDF route - Added explorer link into the payment-received email body - Improved invoice PDF payment section with time, TXID, wallet, and rate display - Cleaned helper error handling back to safe non-debug behavior ## 2026-03-27 — v0.5.1 - Fixed crypto payment email auto-send failure - Replaced internal PDF generator call with route-based PDF fetch - Restored PDF attachments in payment emails - Improved Payments Applied layout in invoice PDF (multi-line details + rate display) - Stabilized send_payment_received_email() (removed debug raise, safe failure handling) ## v0.5.0 - 2026-03-14 22:01:59 - Added per-invoice Square payment links - Added Square webhook validation and automatic invoice payment application - Added duplicate webhook protection - Added Square reconciliation page with filters and summary cards - Added Accountbook page with today / month / YTD totals - Added Accountbook CSV export - Added reminder worker logging plus systemd service/timer - Confirmed end-to-end automatic Square payment flow updates invoice, payments table, portal state, and email notifications ## v0.4.3 - 2026-03-13 Portal lifecycle features completed. New functionality: - Portal invite email from admin panel - Portal password reset email from admin panel - Single-use access code behavior clarified and enforced - Portal password reset invalidates previous credentials - Admin controls for portal enable/disable and code reset - Portal access wording updated to reflect single-use token design Existing functionality confirmed: - Client portal login - Forced password creation - Invoice dashboard - Invoice detail view - PDF invoice download - Deduplicated backend/app.py This version represents the first **complete client portal credential lifecycle**. ## v0.4.2 - 2026-03-12 - Deduped backend/app.py and removed duplicated major route/function sections. - Removed the text_for_pdf_routes snapshot hack from active runtime path. - Added secure portal-safe invoice PDF route. - Confirmed portal login, dashboard, invoice detail, invoice itemization, and PDF access flow. - This version is the first clean post-dedupe checkpoint. ## v0.4.1 - 2026-03-12 - Added secure client portal login using email plus one-time access code. - Added forced password setup on first portal login. - Added client portal dashboard with invoice listing. - Added portal invoice detail page. - Wired new and editable invoices to create invoice_items automatically. - Confirmed live admin edits refresh correctly in client portal views. - Polished invoice edit notice bar contrast for dark theme. - This version is the pre-refactor savepoint before cleaning duplicate sections in backend/app.py. - System package dependency note: install `zip` on deployment hosts for release snapshot creation. ## v0.4.0 - 2026-03-12 - Released stable service-managed build of OTB Billing. - Added working /health styled page and /health.json endpoint. - Added health backend module for app/server/db/disk/memory status reporting. - Added .env-based runtime configuration through run_dev.sh shell loading. - Moved runtime control to systemd via otb_billing.service. - Confirmed reboot persistence and mintme webfront reachability through LAN bind on port 5050. - Kept debug off and reloader disabled for stable service operation. # otb-billing ## v0.3.0 — 2026-03-09 Major operational milestone release. New Features ------------ - Revenue reporting system - JSON export for reports - Batch invoice printing - Batch CSV export - Filtered invoice export - Invoice logo support (PDF + print) - Business identity settings - Report frequency selector (monthly / quarterly / yearly) Infrastructure -------------- - Improved reporting backend - Cleaner filter handling - Settings system extended - Print layouts stabilized ## v0.3.1 — 2026-03-09 Milestone release. Features included ----------------- - Invoice PDF generation - Invoice email sending - Settings/config system - Branding/logo support - CSV exports - Filtered invoice export - Batch PDF ZIP export - Batch print - Revenue report - Revenue JSON export - Accounting package ZIP export - Email delivery for reports and accounting package Notes ----- - Core billing/export/report workflow is now operational. - Email logging/audit trail is planned for a future release. ## v0.3.1 — 2026-03-10 Milestone release. Features included ----------------- - Invoice PDF generation - Invoice email sending - Settings/config system - Branding/logo support - CSV exports - Filtered invoice export - Batch PDF ZIP export - Batch print - Revenue report - Revenue JSON export - Accounting package ZIP export - Email delivery for reports and accounting package - Email audit logging Notes ----- - Core billing/export/report workflow is now operational. - Email log table records invoice, revenue report, and accounting package sends. ## Installer From the project root: ```bash chmod +x install.sh ./install.sh ## Installer From the project root: chmod +x install.sh ./install.sh The installer will install dependencies, configure MariaDB, create the database, and start the service. ## Installer From the project root: chmod +x install.sh ./install.sh The installer will: - install Python and MariaDB dependencies - copy the app to the target path - create a Python virtualenv - install requirements.txt - create the database and import schema - create the systemd service - start the service