johnnyq
35ddd1a64d
Feature: Designate a client record as your organization currently only provdes a direct link when you click company name in top of the side nav
2026-08-15 20:36:56 -04:00
johnnyq
6af0634f47
Ticket SLA: Fix on hold to pause only after first reply, show resolved closed and onhold as fixed on paused sla in the list
2026-08-15 19:55:40 -04:00
johnnyq
6ef84c4547
Feature: Add Ticket Canned Responses
2026-08-15 17:29:17 -04:00
johnnyq
4c4c172f59
Feature: queued Updates which now eliminates the need for shell_exec from the webui, but if enabled you can still update from the webui the old way too
2026-08-15 16:41:42 -04:00
johnnyq
bdab434707
Fix Margins in various areas
2026-08-15 13:34:38 -04:00
johnnyq
56d9e04eac
Update Theme select to use new bootstrap 5 radio button
2026-08-15 13:17:32 -04:00
johnnyq
2375e69f2d
Update badge classes to bg
2026-08-15 13:00:41 -04:00
johnnyq
c44fa30792
Fix Mail settings tabs regression and user menu coloring
2026-08-15 12:29:39 -04:00
johnnyq
e2512b0f86
Fixed Side nav titles, Fixed ajax on bootstrap modals, fixed pagination all regressions
2026-08-14 18:32:33 -04:00
johnnyq
bbbfff7413
All Jquery removed replaced with stand JS and non jqery dependent libs
2026-08-14 17:28:06 -04:00
johnnyq
dc6b191eed
Update Font, Migrated away from JQUERY dependent libs: toastr to bootstrap5 toasts, daterangepicker to flatpickr, select2 to Tom Select, InputMask to IMask
2026-08-14 17:08:40 -04:00
johnnyq
a084e37c39
Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5
2026-08-14 13:22:11 -04:00
wrongecho
691059aab2
Debug - bump php memory flag to 512M
2026-08-13 09:45:01 +01:00
johnnyq
076f45abb0
Remove Stale SMTP IMAP host if switching Standard SMTP.IMAP to OAUTH
2026-08-09 23:59:54 -04:00
johnnyq
f7548af234
Fix Export Missing coluns due to the select star sweep
2026-08-09 14:33:06 -04:00
johnnyq
a96324628a
Fix broken cron page due to the select * sweep, note thi sdid not break cron itself
2026-08-09 13:27:51 -04:00
johnnyq
605c7811e4
Fix AI
2026-08-06 19:18:34 -04:00
johnnyq
64423cbefa
Fix Client PDF Export
2026-08-06 18:51:09 -04:00
johnnyq
f8899e592f
More Select * Queries convert
2026-08-06 13:57:46 -04:00
johnnyq
108781db5b
Move more select * to column select for further optimization
2026-08-06 13:44:02 -04:00
johnnyq
b3744e9ed5
More sweeps to replace select * with actual returned column names dramatically reduces php memory usage and speeds up processing dramatically especially in the crons since they run all the time
2026-08-06 13:10:23 -04:00
johnnyq
b8c9d5b4cf
Query Optimization: Select only needed columns instead of SELECT * on looped queries
2026-08-06 12:59:43 -04:00
johnnyq
c30c12674a
Sync DB Seed data between setup and setup cli
2026-08-03 22:41:31 -04:00
johnnyq
0311a3d056
Fix remaing undefine vars for audits and flash messages
2026-08-03 15:40:44 -04:00
johnnyq
ffe32adbd3
Move categories and tag types to a left side nav instead of top nav
2026-08-03 12:54:33 -04:00
johnnyq
6b5be0f881
Rework Update UI and fix banch
2026-08-02 18:07:24 -04:00
johnnyq
a27019511e
Remove unused overdue invoice setting move master cron switch out of notificaiton and into cron
2026-08-02 17:22:28 -04:00
johnnyq
e793804203
Migrate credential password from varbinary to varchar and set max length for passwords
2026-08-02 16:18:36 -04:00
johnnyq
89fba247c5
Add some missing maxlength form options to prevent info overflow and result in error 500
2026-08-02 16:08:01 -04:00
johnnyq
c8dab1a7e5
Revert PAyment cleanInput too
2026-08-01 18:48:07 -04:00
johnnyq
23a09f54fc
Reworked getFieldById to remove escaping and and reworked everything that uses the function to also escape, was causing double escaping in many places this standardizes the function
2026-08-01 15:33:48 -04:00
johnnyq
75028ba09a
Fix some Ticket History gaps
2026-08-01 14:33:37 -04:00
johnnyq
53f45fa008
Fix queued backups never building, per-type retention, and cron connection handling
2026-07-31 16:35:39 -04:00
johnnyq
ae468d6cee
Encrypted backups with types, scheduling and CLI restore
...
Backups are now AES-256 encrypted zips in three types (full, database
only, master key), catalogued in a new backups table, built by cron rather
than the web request, and kept under uploads/backups with retention in the
nightly job. The encryption key is one value per install held in config.php,
never in the database and never in the file name.
Restore is shared by the setup wizard and the new scripts/restore_cli.php,
which is the only path without an upload size limit. It verifies the key and
unpacks the archive before dropping anything, and dumps the current database
first so a failed import is rolled back.
A backup dumps, zips and encrypts for minutes without issuing a query, so on
a server with a short wait_timeout the connection is closed underneath it and
the UPDATE marking the backup complete is what fails - long after the archive
was written correctly. The connection is now held open for the job and
re-established before any write that follows long file work, including the
database phase of a restore. Retention recovers rows a dropped connection
left behind: still Running after six hours becomes Complete if the archive is
on disk, Failed if it is not.
cron.php's own failure path is hardened to match. It recorded job failures
through the same connection the failing job had just killed, so an uncaught
exception ended the dispatch and no trace of the original error survived.
Failures now also echo to stdout, so cron mails something useful when the
database is unreachable.
Security: the setup wizard's restore step is now closed on any install that
has users, whatever config.php says. $config_enable_setup defaulted to
enabled when the flag was absent, and the flag is only written at the end of
a successful install, so an install abandoned partway left an unauthenticated
endpoint that would drop every table, import an attacker-supplied archive,
and overwrite uploads/ including the .htaccess that stops PHP running there.
Affects 26.07 and earlier. Restoring over a live install is now CLI only.
2026-07-31 16:18:20 -04:00
johnnyq
6a5cf6704a
Add Indexes to foreign key in ticket replies and attachments fixes slow ticket access issue with many replies with large inline images
2026-07-31 14:16:19 -04:00
johnnyq
8436cd6296
Nightly tasks: apply late fees, overdue reminder emails, and autopay retries at most once per invoice per day, and lock nightly to the daily schedule
2026-07-30 17:50:11 -04:00
johnnyq
0631c45040
Fix Cron Schedule and new directory includes created inside cron for the cron lock
2026-07-30 17:06:07 -04:00
johnnyq
119334ab71
Cron Fix
2026-07-30 16:44:56 -04:00
johnnyq
38e8edea19
Cron runs all jobs from a single dispatcher cron.php which should now be run every minute and all other cron jobs eliminated from cron
2026-07-30 13:48:39 -04:00
johnnyq
f2d5ac4a29
Feature: Calendars are now exportable shareable so Third Party Calendar services can read them, also added recoccurence to calendar, and all day along with sperating the time fields and click in a box to add calendar event is possible
2026-07-30 02:18:30 -04:00
johnnyq
3c8f812a16
Feature: On all export modals added Filter Tab and Selectable Columns tab with default selected, also you can now export to a PDF
2026-07-30 00:46:15 -04:00
johnnyq
2395a3ee16
Phase 2 of ticket attachements by agents
2026-07-29 18:10:34 -04:00
johnnyq
e74307eaea
Feature: Add Dynamic Task editing in add ticket and add recurring ticket, recurring tickets now have their own task table as well
2026-07-29 17:48:41 -04:00
johnnyq
3296e48ac6
Unlink template from recurring ticket if template is deleted
2026-07-29 16:36:47 -04:00
johnnyq
75d8b4d37c
Fix get FieldByID spots
2026-07-29 16:16:32 -04:00
johnnyq
7245ff0650
Fix Cron URL Key on recurring tickets
2026-07-29 16:11:36 -04:00
johnnyq
bc64c9e3d1
Feature: Abiliry to assign Ticket Templates to Recurring Tickets
2026-07-29 15:55:14 -04:00
johnnyq
fc5cdeea82
Add UI Elements for Asset Notes similar to contact notes
2026-07-29 14:13:55 -04:00
johnnyq
566d74c15d
Fix SLA resolve-time reporting, stale settings cache on save, and report N+1
2026-07-29 13:34:34 -04:00
johnnyq
9533da4053
Repair SLA verdicts missed by kanban/portal resolve; record first response on kanban resolve
2026-07-29 13:21:37 -04:00