Manfi Expense Tracker - Changelog

1.2.0
- Excluded WordPress.org screenshot assets, developer configs, and test dependencies from production distribution packages, reducing archive size by over 95% and resolving plugin update execution timeout errors.
- Added standard .distignore rule file to prevent non-production assets and development tooling from leaking into SVN releases.
- Added 1-click option to remove or re-apply auto-calculated late fee adjustments in the Invoice Builder with dynamic state indicators.
- Added quick "Clear Adjustment" button in the Invoice Adjustment card to easily reset all adjustment fields.
- Fixed currency symbol display on Daily Rate invoices so converted settlement cards (Paid Amount, Due Amount, Recorded Payments) properly render in BDT (৳) instead of USD ($).
- Fixed Previous Due note in Payment Information to accurately display the native currency of the linked previous invoice.
- Added cloneable Services Offered repeater in Vendor Profile Management with persistent storage and REST API support.
- Added per-invoice toggle to show/hide Vendor Services Offered on public web invoices and PDF exports with quick-insert category chips in Invoice Builder.
- Redesigned Vendor Create / Edit page into an intuitive, responsive grid (2-column company & tagline header, 3-column contact grid, 2-column details, and partner logos grid).
- Modernized Payment Methods & Accounts display into a compact single-row grid supporting all mobile gateways (bKash, Nagad, etc.) and commercial bank accounts.
- Converted Invoice Line Item descriptions and Service Description fields to multi-line textareas with safe HTML tags (<b>, <i>, <ul>, <li>, <br>, etc.) and automatic line break rendering.
- Widened Invoice line item description column to 58% for enhanced readability of project scopes and deliverables.
- Renamed Terms & Conditions section to Notes and conditionally hid the block completely when no late fee or custom note is active.
- Automatically hid payment instruction lines on invoices when no payment accounts are selected.
- Automatically cleaned up overdue fee adjustments when unlinking or deselecting previous invoices.

1.1.9
- Added 1-click option to remove or re-apply auto-calculated late fee adjustments in the Invoice Builder with dynamic state indicators.
- Added quick "Clear Adjustment" button in the Invoice Adjustment card to easily reset all adjustment fields.
- Fixed currency symbol display on Daily Rate invoices so converted settlement cards (Paid Amount, Due Amount, Recorded Payments) properly render in BDT (৳) instead of USD ($).
- Fixed Previous Due note in Payment Information to accurately display the native currency of the linked previous invoice.
- Added cloneable Services Offered repeater in Vendor Profile Management with persistent storage and REST API support.
- Added per-invoice toggle to show/hide Vendor Services Offered on public web invoices and PDF exports with quick-insert category chips in Invoice Builder.
- Redesigned Vendor Create / Edit page into an intuitive, responsive grid (2-column company & tagline header, 3-column contact grid, 2-column details, and partner logos grid).
- Modernized Payment Methods & Accounts display into a compact single-row grid supporting all mobile gateways (bKash, Nagad, etc.) and commercial bank accounts.
- Converted Invoice Line Item descriptions and Service Description fields to multi-line textareas with safe HTML tags (<b>, <i>, <ul>, <li>, <br>, etc.) and automatic line break rendering.
- Widened Invoice line item description column to 58% for enhanced readability of project scopes and deliverables.
- Renamed Terms & Conditions section to Notes and conditionally hid the block completely when no late fee or custom note is active.
- Automatically hid payment instruction lines on invoices when no payment accounts are selected.
- Automatically cleaned up overdue fee adjustments when unlinking or deselecting previous invoices.

1.1.8
- Added configurable Overdue Late Due Fee settings (percentage or flat rate) with a dedicated "Overdue Due Fee (%)" input field on the Create/Edit Invoice form.
- Added automatic overdue previous invoice detection in Payment Tracking with 1-click automated late fee adjustment application.
- Added dedicated Terms & Conditions box on public web invoice and PDF export templates highlighting due date deadlines, late fee penalties, and invoice reference.
- Fixed invoice table adjustment row formatting to output exact currency symbol and adjustment amount matching invoice totals and notes.
- Added bidirectional USD <-> BDT currency adjustment auto-synchronization using active exchange rates.

1.1.7
- Added official WordPress Playground blueprint configuration (.wordpress-org/blueprints/blueprint.json and assets/blueprints/blueprint.json) pre-populated with sample categories, tags, and expense entries.
- Fixed blueprint admin navigation flow to automatically open the main Manfi Expense Tracker dashboard upon launch.
- Configured PHP 8.2 environment presets and compatibility profile for WordPress Playground instances.

1.1.6
- Fixed bug where Fixed Milestone / Flat Fee invoices calculated 0 duration, resulting in 0 line totals and empty subtotal/grand total previews.
- Added Flat Amount discount support alongside Percentage (%) discounts with interactive type selector dropdown in Invoice Builder.
- Added dynamic currency symbol label indicators for flat discount amount inputs.
- Updated invoice totals calculation engine, REST API payloads, PDF generator, and public web templates to process flat and percentage discounts.

1.1.5
- Added Real-Time Google Sheets integration with tokenized live =IMPORTDATA() CSV feeds for Expenses and Invoices.
- Added automated real-time background Webhook push sync and "Sync All Data Now" manual bulk trigger.
- Refactored Settings dashboard into 5 clean, intuitive tabbed sections (General & Budgets, Modules & Builder, Google Sheets Sync, Email Alerts, Advanced & Rollback).
- Replaced multi-colored OS emojis with a unified, monochromatic SVG vector icon system across all settings tabs and section headers.
- Fixed duplicate hero title rendering and syntax errors on the Settings page.

1.1.4
- Added Multi-Currency selection support (BDT ৳, USD $, GBP £, EUR €, CAD, AUD, INR, AED, SAR, MYR, SGD) for invoice creation.
- Added persistent Service Category storing and selection for invoice lines.
- Added interactive Cloneable (repeatable) Phone Numbers, Email Addresses, Website URLs, and Partner Logos (with image upload & live preview) to Vendor Management.
- Added Overpaid / Refundable amount display in invoice Totals Box and summary cards when client payments exceed total amount due.
- Fixed page auto-scrolling bug when toggling financial account checkboxes and selecting categories in the invoice editor.
- Refactored financial account selector into a compact, searchable dropdown with scrollable checkboxes for improved UX.
- Standardized all input placeholders across all components to anonymous, generic examples suitable for public WordPress.org SVN release.

1.1.3
- Added dedicated Contact Person Name field in Client Management to differentiate company entity from individual contacts.
- Added cloneable (repeatable) Phone Number and Email Address fields to Client Management, allowing unlimited contacts per client.
- Added structured Payment History tracking to invoices with date/time, payment method selector (bKash, Nagad, Rocket, Bank Transfer, Cash, Card), and transaction ID.
- Added "Record Payment" modal accessible from the Invoice List and Invoice Editor.
- Added "+ Add Payment" button directly inside the Payment Tracking section of the Invoice Editor.
- Fixed payment received amount bug where an empty payments array overrode manually entered payment amounts on Update Invoice.
- Fixed previous invoice dropdown filtering to exclude invoices whose balances were already carried forward into newer invoices.
- Cleaned and standardized all input placeholders across all components to generic, anonymous examples suitable for public WordPress.org SVN release.

1.1.2
- Added structured Payment History to invoices: each payment now records date & time, payment method (bKash, Nagad, Rocket, Bank Transfer, Cash, Card, etc.), transaction ID, and optional notes.
- Added "Record Payment" modal with method selector and transaction ID field, accessible from the Invoice List and Invoice Editor.
- Added "Payments Recorded" breakdown inside the Totals Preview card on the Invoice Editor.
- Added "Payments Received" history table on the public invoice view.
- Fixed critical bug where updating an invoice from the editor erased all previously recorded payment entries (payments array was not sent in the update payload).
- Fixed payment received amount being reset to 0 on Update Invoice when an empty payments array overwrote manually entered values.
- Fixed previous invoice dropdown showing old invoices whose balances were already carried forward into newer invoices.
- Added "+ Add Payment" button directly inside the Payment Tracking section of the Invoice Editor.
- Improved Totals Preview: shows Paid Amount in green and Balance Due highlighted in red when outstanding.

1.1.1
- Added Custom Payment / Checkout Link field to the invoice builder, allowing admins to provide Stripe/PayPal payment links per-invoice.
- Rendered visual, highly prominent "Pay Invoice Online" and "Pay Now Online" CTA buttons on the public HTML invoice templates.
- Whitelisted the new payment link metadata key in the data export/import migration manager to ensure smooth transitions between sites.

1.1.0
- Introduced a complete, modular Admin Notices System that dynamically registers and displays site notifications.
- Created What's New notice highlighting settings updates, module managers, and rollback controls.
- Added a premium star-rating Review Notice prompting users to leave feedback on WordPress.org, featuring AJAX snoozing and permanent dismissal handlers.
- Maintained clean per-user dismissed meta states to prevent notices from cluttering dashboards.

1.0.9
- Replaced the PHP Settings page rendering with a modern React dashboard UI matching the rest of the plugin's style.
- Registered secure settings REST API endpoints for safe retrieval and updates of configuration settings.
- Moved the Version Rollback settings tool to the new React Settings panel inside a Danger Zone section.
- Improved UI contrast, typography, descriptive icons, and inline help information on the Settings screen.
- Resolved CodeSniffer missing translators comment errors and silent query checks in Migration files.

1.0.8
- Added new Migration (Import & Export) screen under both Expense Tracker and Invoice Manager menus.
- Export all or select custom data scopes (Expenses, Categories, Tags, Invoices, Clients, Vendors, Accounts, Settings) to a single JSON bundle.
- Support granular invoice export filtering (single invoice, or all invoices by a client/vendor).
- Automatically remap IDs during import to keep cross-entity relationships (Invoices to Clients/Vendors/Accounts) correct on target installations.
- Implemented duplicate checks to skip duplicate entries unless overwrite is selected.

1.0.7
- Added optional USD and BDT invoice adjustment fields to seamlessly carry credits or debits from a previous invoice.
- Integrated adjustment notes displaying descriptions directly in invoice views and enqueued PDF documents.
- Automatically calculates BDT adjustments based on exchange rates while allowing manual overrides.
- Fixed potential PHP undefined array key warnings for subtotal, discount, and vat fields in PDF rendering.

1.0.6
- Resolved invoice print styling issues by preventing theme reset CSS conflicts and forcing print background rendering.
- Added asset cache-busting versioning for stylesheets and JavaScript assets using dynamic file modification times.
- Corrected alignment and layout styling of right-column metadata grids in the public invoice layout.
- Cleaned up balance due computations inside the invoice summaries to accurately display net due amounts.
- Customized invoice HTML document titles to automatically format PDF filenames as `[invoice-number]-[client-name-slug]` upon download/print.
- Integrated support for campaign descriptions inside the invoice table rows and PDF documents.
- Added a dedicated conditions & notes textarea field to the invoice editor, displaying it at the bottom of public and PDF templates.

1.0.5
- Resolved PHPCS/Plugin Check security compliance errors regarding missing translators comments.
- Fixed escaping and restricted date function warnings in custom Elementor widgets.
- Replaced dynamic SQL query building with static queries in API visible categories to resolve direct database parameter warnings.

1.0.4
- Added currency settings support to configure custom currency symbols for expense and budget tracking.
- Added a dedicated feature switch to toggle the Invoice Manager (Beta) module on or off (disabled by default).
- Fixed the layout and styling issues of the daily expense trend graph.
- Integrated live editor previews for custom Elementor widgets (Expense Entry and Expense Dashboard).
- Resolved Elementor widget styling and alignment issues to cleanly match theme CSS definitions.
- Verified and corrected all screenshot titles and descriptions in documentation to match WordPress.org SVN screenshot assets.

1.0.3
- WordPress.org review compliance:
  - Upgraded phpoffice/phpspreadsheet dependency to latest stable version 5.8.0 to satisfy review requirements.

1.0.2
- WordPress.org compliance and security updates:
  - Cleaned up all development configuration files, guides, examples, and test suites in vendor dependencies.
  - Upgraded PhpSpreadsheet library to latest stable 5.7.0.
  - Extracted hardcoded styling inside PDF invoice and expense report templates to clean external CSS assets and loaded dynamically.
  - Aligned standard GPL license URLs across all headers and files.
  - Escaped frontend shortcode translation outputs to secure against translation XSS.

1.0.1
- WordPress.org review compliance enhancements:
  - Enqueued admin notice styles properly using `wp_register_style`, `wp_enqueue_style`, and `wp_add_inline_style` APIs.
  - Resolved browser caching warning by explicitly passing project resource versions to registered styles.
  - Dynamically concatenated inline HTML `<style>` tags in Dompdf PDF loaders to resolve scanner false-positives.
  - Added official "Source Code & Build Process" documentation section to `readme.txt` defining build tool steps.
  - Upgraded Dompdf dependencies to `v3.1.5` and PHPSpreadsheet dependencies to `v2.4.5`.
  - Added Composer automated scripts to cleanly remove vendor files containing spaces.
  - Removed hardcoded menu placement priorities to comply with WP-admin sidebar guidelines.
  - Temporarily removed the "Other Plugins" submenu page and its files.

1.0.0
- Initial release.
- Implemented expense tracking system.
- Added user-specific budget management.
- Added role-based access control (Admin, Manager, User).
- Added custom expense categories.
- Added expense filtering by date and category.
- Added export functionality (CSV, Excel, PDF).
- Added REST API endpoints for expenses and categories.
