Recurring Ticket frequency field now accepts an empty placeholder value.
Full changelog
[26.03] Stable Release
Bug Fixes
Ticket Templates: Fix Task Sorting.
Ticket: Lower autoclose setting minimum value from 48 to 24 Hours.
Ticket: Fix Task Approval.
Recurring Ticket: add empty value placeholder for Ticket Frequency.
Documents/Files: Fix redirect after File Upload to redirect to files instead of the non existent documents.
Setup: Fix base url tacking on /setup when not installing via script.
New Features & Updates
Clients: Net Terms: Added common 45 and 15 Days, removed 14 Days not as common.
Clients: Bulk Action Set Net Terms Added.
Clients: Swapped location and contact column, add PopOver with Details such as created, abbreviation, DB ID instead of taking up space underneath client, rounded tag pills and increased padding, removed info badges and added one info badge that displays a popover with details.
Clients: Added New Ticket to Client Top Header Menu.
Clients: Client Overview: UI Sprucing.
Invoice: Send reminder 1 day after due date.
Invoices/Quotes/Recurring Invoices: Split Items tables into their own POST logic and Modal UIs and tables (quote_items, invoice_items, recurring_items).
Tickets: New Ticket Parsing - Anyone CC'ed onto the original email that created the ticket is added as a ticket watcher.
Ticket/Quotes: Quotes can now be associated with a ticket.
Networks: Removed Subnet Mask Field, Use CIDR instead.
Networks: Rearranged fields, Updated placeholders, Add/Edit/list for better flow.
Networks: Renamed DHCP to IP Range to allow for you use of both DHCP and or Usable IPs.
Assets: Rearranged fields, Updated placeholders, Add/Edit/list for better flow.
Assets: Added IPv6 if available under IP, Make and Model are now one line with Serial Underneath. Added OS under Type. use pill for status.
Calendar: Event thats are cut off can now be viewed as a tooltip on hover.
Calendar: Renamed System Calendars to built-in calendars and added the names and color dot for reference.
Calendar: You can now delete a custom calendar.
Report: Client Ticket Time Detail Audit: Selectable Billing Time Increment, will later be avauilable globally.
Roles/Permissions: Now complete and is out of beta all permission roles are strictly enforced, except for in Trips and Calendar, new enforce modules will be added for these at a later date.
Project Templates: Ticket Template order can now be dragged and dropped.
Global: Introduced new checkbox class to all Checkbox select columns to keep consistency and reduce space and enhance ui.
Global: CSRF Checks everywhere instead of just deletion calls.
Global: Renamed the rest of the unarchive post and label calls to restore.
Task Approval System for ticket tasks with internal and client approval paths
Printable Invoice Packing Slips added
Connect to Microsoft 365 button in mail settings, stable OAUTH2 support for M365 and Google Workspaces
Full changelog
[26.02] Stable Release
Bug Fixes
Mail Parser - Do not automatically send new ticket notifications to noreply/donotreply addresses.
Ticket: removed newline \n on Parsed emails.
Show Trips for everyone if accounting module is enabled.
Fix Invoice Exporting.
Fix Billable Column not sorting correctly in tickets.
Fix Login flow where user agent and client user exists and agent has MFA but will not let them continue.
Fix passing missing user_id var in client portal.
Fix Ticket Templates not auto filling when selected.
Fix Invoices not being sent to all billings contacts when manaully sent.
Fix Documents and Files not able to be bulk deleted.
Fix Role Archiving, can be archived as long as no users are assigned to the role.
Fix showing Powered By ITFlow visibility on the login screen when Whitelabel is enabled.
Missing username in audit log on successful login due to missing passed user_id to logging.
API: Fix updating all documents instead of the intended document.
Documents: Fix Document created at not showing the correct creation date of the master document.
Ticket: Fixed Using edit ticket modal agent was not able to be set.
Always check if a user is archived and or disabled instead of just during login.
Report: Fix Collected tax report not totalling all tax categories.
New Features & Updates
Task Approval System for ticket tasks: Once an approval is requested, the task cannot be marked as complete until approved. Internal Approvals Any other technician, or Specific technician, Client Approvals Anyone (usually the requestor) Tech contacts Billing contacts.
Printable Invoice Packing Slips now available.
Drastic Performance Bump: Up to 50% faster queries accross the board and reduced server memory usage by 40% by switching Database Query method from mysqli_fetch_array to mysqli_fetch_assoc.
Added Connect to Microsoft 365 Button to mail settings.
OAUTH2 support for Microsoft 365 and Google Workspaces is now considered stable and working.
Favorites: Assets and Credentials now can be favorited singly or by Bulk action. Favorited items appear in the client overview now.
Files/Documents: Collapsable folders feature, collapsed by default with a button to expand all.
URL Keys and such are now set to a more manageable 32 Characters by default.
Various UI/UX Updates throughout the app, with focus oin ticket details, contact details modal etc.
Added Show Archived files and documents to the files section.
Added Bulk Archive and restore options to files and documents.
Rewrite of the Kanban Ticket view to match our procedural style of coding.
All options are available in TinyMCE now in Mobile mode.
Agent names appear now in Invoice History section.
Mail Parser: Support flowed text.
Assets: Keep Purchase reference when copying.
Assets: Add basic tracking history: Archiving, restoring, name changes, transferimg to new clients.
Mail Parser: NDR Parsing.
Allow SVG files in mail attachments.
Tickets: Use a more friendly time worked instead of 02:41:00 translates to 2h 41m.
Update wording on ticket to invoice item details.
Merge Tickets: Now wth a ticket merge dropdown list of tickets instead of a text field.
Role Permissions can now be set during role creation, update Permission UI to use radio buttons instead of select boxes.
Bulk action function now accepts named ID arrays instead of a generic `selected_ids` array.
Breaking changes
Existing installs must have the **php-xml** extension installed (sudo apt install php-xml) for document creation and editing.
Notable features
Automatic subject‑based ticket merging/reply detection with 95 % match within 7 days.
`saveBase64Images()` converts base64 `<img>` tags to stored files under `/uploads/documents/$document_id`.
`cleanInput` and MySQLi prepared‑statement migrations for client/post and payment method handling.
Full changelog
[25.12] Stable Release
Breaking Changes
For Existing installs: php-xml extension needs to be installed for document creation and editing, new install script does this for you as of Dec 6th 2025. To install php-xml: sudo apt install php-xml
Major Changes
Consolidated "Files" and "Documents" into a single section called Files.
Bug Fixes
Resolved issue with updating asset notes in asset details.
Fixed problem with bulk ticket merging.
Corrected issue where decimal inputs (e.g., price, cost) weren’t displaying on iPhones in certain forms.
Added CSV escaping to the sample export data in areas where a sample CSV template is provided.
Fix a race condition where dupe tickets, invoices, recurring invoices, recurring tickets, quotes will be created using the same number if created in parallel espcecially when using the API.
New Features & Updates
Introduced automatic subject-based ticket merging/reply detection. Now, if an email comes from a known contact or domain and the subject matches 95% of a ticket opened in the last 7 days, it will be merged automatically.
Added cleanInput function to sanitize data before inserting it into the database when using MySQLi prepared statements.
Migrated client post functionality to use MySQLi prepared statements.
Updated payment method post functionality to use MySQLi prepared statements.
Implemented saveBase64Images() to convert base64-encoded <img> tags into actual image files stored under /uploads/<module>/<id>/ with secure filenames. Added wrapper functions, and updated document creation to use processed image paths.
For new documents and document templates, images are now stored in /uploads/documents/$document_id instead of being stored as base64 in the database, using the saveBase64Images() function.
UI/UX improvements made to the document details page.
Removed sidebar quick-add options.
Created new folders in the uploads directory: documents, document_templates, and recurring_tickets.
Reworked the bulk action function to pass the name arrays, instead of a generic selected_ids array. This allows multiple bulk name arrays to be passed at once, currently used for the new file-document merge.
Big task: Converted the remaining modals to use the new ajax-modal system, enabling more flexible flow expansion going forward.
Mail queue: Added a --no-mx-validation flag to bypass recipient domain MX validation.