| @@ -1,7 +1,21 @@ | ||
| 1 | 1 | Easy Invoice — complete changelog |
| 2 | 2 | The readme summarises each release; this file keeps every entry. |
| 3 | 3 | |
| 4 | += 2.4.2 - September 29, 2026 = | |
| 5 | +* Fix: the invoice and quote builders could fatal instead of rendering when the preview ran before a document existed; the preview now shows a placeholder until there is something to draw. | |
| 6 | +* Fix: **a PayPal payment smaller than the invoice total no longer marks the invoice paid.** When PayPal confirmed less than was requested, the pending record was flipped to "completed" before its amount was corrected, so anything reading the payment at that moment still saw the full balance. The settled amount is written first; the invoice lands on Partially paid with the real balance owed. | |
| 7 | +* Fix: the plugin's own sidebar logo rendered as an empty coloured square — `wp_kses_post()` strips `<svg>`. The mark (and any logo the White-Label addon substitutes) now goes through an SVG-aware allow-list. | |
| 8 | +* Change: the WordPress admin menu uses the plugin's own icon instead of a generic dashicon, drawn so WordPress recolours it with the admin colour scheme. | |
| 9 | +* Fix: **offline payments work in the free plugin.** Choosing "Manual Payment" on an invoice showed no instructions, no receipt upload and recorded nothing — the pieces existed but were never wired together. Bank transfer, cheque and cash are now three proper payment methods: each shows your details and instructions, can ask for the client's transaction reference and a receipt (optional or required), and records a pending payment for you to confirm. | |
| 10 | +* New: **add your own offline payment methods** (ACH, wire transfer, mobile money, a second bank account…) under Settings → Payment Methods → "Add an offline payment method". Each gets its own instructions, reference field and receipt setting, appears in the Pay Now panel, and can be removed again; payments already recorded keep it. | |
| 11 | +* New: **confirm or reject** each submitted offline payment from the Payments screen. The client's reference, note and receipt are shown on the payment row and the payment page; the admin email carries them too. Confirming marks that payment completed and moves the invoice to Paid or Partially paid by its real balance (it used to mark the invoice paid whatever the amount); rejecting keeps the record for the audit trail and leaves the balance owed. The client sees "payment noted — awaiting confirmation" on the invoice page meanwhile. | |
| 12 | +* Security: receipts are stored under random names in a folder that refuses direct requests on Apache, and are only ever served to signed-in staff through the plugin (`admin-post.php?action=easy_invoice_payment_proof`). Receipts are deleted with their payment and on a full uninstall. | |
| 13 | +* Fix: the Payments screen's "Total amount" counted submissions still awaiting confirmation and rejected payments as money received; it now sums confirmed payments only. The status filter gained "Awaiting confirmation" and "Rejected". | |
| 14 | +* Fix: the free payment reminder never ran (it looked for a status nothing writes). Settings → Advanced → "Payment reminder (days after due date)" now emails the Reminder template once to each invoice still owed that many days after its due date; leave it empty to switch it off. Easy Invoice Pro's own reminders take over when Pro is active. | |
| 15 | +* Fix: an invoice whose payment methods were limited to "Manual Payment" before this release now offers the three offline methods instead of nothing. | |
| 16 | +* Change: a brand-new install starts with Bank transfer enabled, so an invoice can be paid from day one; a client can have at most three offline submissions awaiting confirmation on one invoice (filter `easy_invoice_offline_pending_limit`). | |
| 17 | + | |
| 4 | 18 | = 2.4.1 - September 15, 2026 = |
| 5 | 19 | * Fix: on phones the public invoice and quote pages clipped the line-item table's Total column and, in the Modern, Creative and Professional designs, the totals box; every design now fits a 360px screen (narrower screens scroll the table sideways). |
| 6 | 20 | * Performance: the payment script (and the jQuery it needs) loaded on every front-end page of the site; it now loads on the public invoice page only. Filter `easy_invoice_load_payment_assets` to add pages. |
| 7 | 21 | * Housekeeping: the changelog in this file now summarises each release; the complete, itemised history lives in changelog.txt inside the plugin folder and on GitHub. |