# Changelog This file documents all notable changes made to ITFlow. ## [25.02.4] ### Fixed - Resolved issue preventing the addition or editing of licenses when no vendor was selected. - Fixed several undeclared variables in AJAX contact details. - Corrected the contact ticket count display. - Addressed an issue where clicking "More Details" in AJAX contact/asset details failed to include the `client_id` in the URL. - Fixed an issue with recurring invoices in the client URL: clicking "Inactive" or "Active" would unexpectedly navigate away from the client section. - Added new php function getFieldById() to return a record using just an id and sanitized as well. ## [25.02.3] ### Fixed - Fixed notifications being reversed as dismissed notifications. ## [25.02.2] ### Fixed - Corrected some edit modals not showing notes correctly. - Bugfix: When exporting to CSV, the first asset wasn't being shown. - Fix broken create / edit credentials. - Fixed missing Notificatons link. - Fixed a few dead links. - Fixed Overdue count also counting Non-Billable Invoices. - Fix Edit Client Notes. ### Added / Changed - Implemented SSL certificate history tracking. - Added Inactive / Active Filter to Recurring Invoices. - Merged Dismissed notifications and notification in one. - Added Link Button to addd / edit Document WYSIWYG. - Added Physical location to the asset export / import. ## [25.02.1] ### Fixed - Resolved broken links in the client overview, project and client listings, and rack details. - Corrected asset transfer functionality to clients. - Fixed the ticket scheduling redirect. - Corrected the ticket link in the Scheduled Ticket Agent Notification email. - Addressed issues with credentials and ticket actions in the Contact Detail Modal. - Fixed text wrapping in notifications. - Adjusted notifications so that they are sorted with the newest first. - Fixed drag-and-drop functionality for tickets in the Kanban view on mobile devices. - Resolved a weird issue with TinyMCE that prevented using links referencing your ITFlow instance url. - Corrected image orientation issues during upload and the preview optimization process. ### Added / Changed - Introduced entity link indicator icons and counts in the contacts and credentials section. - Implemented a fade animation for the new AJAX modal. - Removed the Client Overview Expire Day Select and replaced it with simplified 1, 7, or 45-day options. - Added the ability to link and unlink entities within asset details. - Introduced quick tag/category creation across the app. - Added a Vendor Quick Details Modal. - Enabled vendor linking and added a License Purchase Reference in the Software Licenses section. - Added download original, optimized and thumbnail option for images. - Added Paid status to the top corner of Invoice PDFs. ## [25.02] ### Fixed - Migrated several reports to the new permissions/roles system. - Resolved issue with empty task box showing for closed/resolved tickets. - Corrected ticket priority sorting. - Cloned asset interfaces when transferring assets between clients. ### Added / Changed - Restored max number of records per page option back to 500 since we dont have repeating modals. - Bulk Categorize Tickets feature. - Renamed "Interface port" to "Interface Description." "Interface Name" should now refer to port name and/or number. - Changed "Transfer Asset to Client" from a single action to a bulk action. - Updated Filter Footer UI to show "Showing x to x of x records" instead of just the total records. - Added Client Overview section to view client assets, contacts, licenses, credentials, etc. - Introduced Quick Peek for asset details, contact information, and document viewing throughout the ITFlow App, all made possible by AJAX. - Enabled Simple Drag-and-Drop Ordering for Invoices, Recurring Invoices, Quotes, Ticket Tasks, and Ticket Template Tasks. - Added new Ticket View options: Kanban and Simple View. - Migrated all repeating modals to the new AJAX modal function for faster loading times and quicker development. - Allowed clients to upload PDF documents to accepted quotes. - Client Portal now shows ticket category. - Custom links can now be added to the Client Portal navbar. - Lots of little tweaks to UI, performance, bugs, etc. ### Breaking Changes - Cron scripts have officially been moved to the /scripts folder and are no longer in the root directory; they must be updated to function properly. ## [25.01.3] ### Fixed - Fixed ticket assignment modal showing client contacts. ## [25.01.2] ### Fixed - Fixed app version. ## [25.01.1] ### Added / Changed - Redesigned the Multi-Factor Authentication (MFA) Setup and Enforcement Flow UI/UX for a more intuitive user experience. - Added a "Member" column in the user roles listing for improved visibility. - General UI/UX improvements, along with minor performance optimizations and cleanups. ### Fixed - Fixed an issue where Stripe was not appearing as a recurring payment option. - Corrected inaccurate Quarter 2 Expense results in the Profit & Loss Report. - Resolved TOTP code not displaying correctly on hover in the Contact or Asset Details sections. - Archived contacts no longer appear in the Bulk Mail section. - Fixed an issue where the Ticket Assign Modal was showing both ITFlow and client users. - Fixed issue with login key redirecting to legacy client portal page. ## [25.01] ### Added / Changed - Added support for saving cards in Stripe for automatic invoice payments. - Page titles now display detailed information (e.g., page name, client selection, company name, ticket and invoice info) for easier multi-tab navigation. - Reintroduced the new admin role-check for admin pages. - Admin roles can now be archived. - Debug mode now shows the current Git branch. - The auto-acknowledgment email for email-parsed tickets now includes a guest link. - Recurring tickets no longer require a contact. - Stripe online payment setup now prompts you to set the income/expense account. - New cron/CLI scripts have been moved to the `/scripts` subfolder — remember to update your cron configurations! - Moved modal includes to `/modals` to tidy up the root directory. - Moved most include files to `/includes` to improve directory structure. - Moved guest pages to `/guest` for better organization. - Renamed the include file `pagination.php` to `filter_footer.php`, as it is used in conjunction with `filter_header.php` for page filtering. - Guest ticket feedback now shows the ticket prefix and number, not just the ID. - Individual POST handler logic pages are no longer directly accessible. - Added the ability to delete payments on the Payments and Client Payments pages. - Implemented domain history tracking. - Added Asset Interface Linking/Connections to show what interface is connected to which interface port of another asset. - Added Force Recurring Ticket option in more locations, not just for recurring tickets. - Implemented row spanning and centered devices that occupy multiple units in a rack. - Added tooltips to main navigation badge counts to clarify what is being counted. - Reduced max records per page from 500 to 100 to prevent performance issues. - Updated several plugins: - `stripe-php` from 10.5.0 to 16.4.0 - `Inputmask` from 5.0.8 to 5.0.9 - `DataTables` from 2.1.8 to 2.2.1 - `pdfmake` from 0.2.8 to 0.2.18 - `php-mime-mail-parser` to 9.0.1 - `TinyMCE` from 7.5.1 to 7.6.1 - Removed unused libraries from the vendor folder and moved Stripe to the plugins folder, eliminating the vendor folder. - Merged the MFA TOTP functionality files `base32static.php` and `rfc6238.php` into a single file (`totp`) and moved it to the plugins folder. - No longer need to pass the DB connection (`$mysqli`) to the `addToMailQueue` function. - Disabled HTML Purifier caching. - Replaced the `nullable_htmlentities` function with `htmlspecialchars`. - Updated filter variable naming. - Implemented other minor UI updates, performance optimizations, and directory cleanups. ### Fixed - Fixed an issue where the ticket edit modal didn't show multi-client or no-client projects. - Fixed asset interface losing DHCP settings. - Fixed a 500 error when creating or editing recurring expenses due to an incorrect variable name. - Fixed tickets created via the portal/email not being marked as billable. - Fixed issues with editing recurring expenses. - Resolved a regression where the TinyMCE editor didn’t display when adding or editing ticket templates. - Fixed a TinyMCE license issue. ### Removed / Deprecated - Deprecated the cron scripts in the root directory. Cron jobs should now use the ones in the `/scripts` subfolder, which no longer require a cron key and must be run via CLI. ### BREAKING CHANGES - The client portal has been moved from `/portal` to `/client`: - Links in previous emails will be broken. - The Azure Entra ID SSO Redirect URI needs to be updated to `/client`. - You may need to update other links (e.g., website, support page). - Guest links have been moved from `/` to `/guest`. Previous links will be broken. ## [24.12] ### Added / Changed - Introduced versioned releases for the first time!