Commit Graph

242 Commits

Author SHA1 Message Date
b007b9459b Update changelog-claude.md with detailed changelog redesign documentation 2026-02-05 23:28:03 +01:00
d0811304c6 Redesign changelog to use Python-based structure instead of Markdown
- Created app/changelog.py with structured changelog data (first 3 versions as example)
- Removed Gitea dependency for changelog rendering
- Added new changelog.html template with:
  - Sidebar navigation for version jumping
  - Bootstrap cards for each version
  - Color-coded type badges (feature/improvement/fixed/documentation)
  - Responsive design with sticky navigation
- Added changelog.css with modern styling and dark mode support
- Updated routes_changelog.py to use Python data structure
- No external dependencies, faster loading, always available

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 22:56:43 +01:00
1d9f3662a1 Fix automatic mail import unable to be disabled once enabled
Fixed bug where unchecked automatic mail import checkbox was not
processed by the backend, preventing users from disabling the
automatic import after enabling it.

Root cause: HTML forms do not send unchecked checkbox values. The
existing check `if "auto_import_enabled" in request.form` would skip
updating the setting when the checkbox was unchecked.

Solution: Added import_form_touched flag to detect when the import
settings form is submitted, then update the checkbox value based on
presence (checked) or absence (unchecked) in form data.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 22:15:38 +01:00
9388ec4c01 Improve Autotask customer mapping with auto-search
Added automatic search for similar company names when opening unmapped
customers in the edit modal. This speeds up the mapping process by
eliminating manual searches.

Changes:
- Clear search box when opening customer edit modal
- Auto-populate search with customer name for unmapped customers
- Automatically display matching Autotask companies as suggestions
- Refactor search logic into reusable performAutotaskSearch() function

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 21:39:02 +01:00
873b22f225 Clear search box when opening Autotask Link existing modal
Fixed issue where the search input retained previous search text when
reopening the Link existing modal. The search box now always starts
empty for a better user experience.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 21:26:14 +01:00
077e1fb176 Add cross-company ticket search for overarching issues
The "Link existing ticket" dialog now searches across all companies when
a ticket number is entered, enabling linking of overarching issues.

Changes:
- Added query_tickets_by_number() to Autotask client
- Route searches both customer's company and cross-company when ticket number detected
- Results are combined and deduplicated (customer tickets shown first)
- Enables linking multi-company infrastructure issues to any job

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 17:01:43 +01:00
cc76068206 Make Autotask resolve messages dynamic based on time entries
The resolve confirmation dialog and ticket notes now correctly indicate
whether the ticket will be closed or remain open based on time entry check.

Changes:
- Frontend: Updated confirmation message to explain conditional closure
- Backend: Check time entries before creating note
- Dynamic message in ticket note:
  * "ticket will be closed in Autotask" (no time entries)
  * "ticket remains open in Autotask due to existing time entries" (has time entries)
- Updated route docstring to reflect conditional status behaviour

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 16:46:43 +01:00
9b905fa24f Add conditional ticket status update based on time entries
Implements API contract section 9: ticket resolution workflow with
conditional status updates based on time entry existence.

- Added query_time_entries_by_ticket_id() for POST /TimeEntries/query
- update_ticket_resolution_safe() now checks time entries:
  * No time entries: sets status to 5 (Complete)
  * Has time entries: keeps current status (ticket remains open)

This ensures tickets are only auto-closed when appropriate per the
validated Autotask API workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 16:35:28 +01:00
8a733a356b Fix Autotask resolution to preserve exact field values from GET response
The issueType, subIssueType, and source fields must be sent in the PUT
payload with their exact values from GET response, including null. This
fixes HTTP 500 error where Autotask rejected picklist value 0.

Changed _pick function to return (found, value) tuple to distinguish
between "field missing" and "field is null".

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 16:29:54 +01:00
a9a60e3315 Restore Autotask PSA integration
Restored from branch v20260203-13-autotask-resolution-item-wrapper with
the following functionality:

- Autotask REST API client with support for tickets, notes, companies,
  and reference data (queues, sources, priorities, statuses)
- Safe ticket updates preserving stabilizing fields per API contract
- Database models for Autotask settings, customer mapping, and ticket linkage
- Settings UI for Autotask configuration with connection test
- Run Checks integration for ticket creation
- Customers page with Autotask company mapping
- Ticket linking during mail import

Also preserved the require_daily_dashboard_visit setting from the
current branch.

Added docs/autotask_rest_api.md with validated API contract from Postman tests.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 14:43:44 +01:00
abf8b89d7c Add setting to enable/disable daily dashboard redirect
Added a new setting in Settings > General > Navigation that allows
administrators to control whether users are redirected to the dashboard
on their first page view each day.

Changes:
- Added require_daily_dashboard_visit column to SystemSettings model
- Added migration for the new column (default: FALSE)
- Modified before_request hook to check the setting before redirecting
- Added Navigation card with toggle in Settings General page
- Restored changelog-claude.md with performance and feature updates

Default is OFF - users can navigate directly to any page without
being forced to visit the dashboard first.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 22:03:11 +01:00
beda8cc0f9 Auto-commit local changes before build (2026-01-13 16:43:00) 2026-01-13 16:43:00 +01:00
fd0051cb29 Auto-commit local changes before build (2026-01-13 16:30:32) 2026-01-13 16:30:32 +01:00
934a495867 Auto-commit local changes before build (2026-01-13 15:07:59) 2026-01-13 15:07:59 +01:00
a5a1cd2743 Auto-commit local changes before build (2026-01-13 14:27:23) 2026-01-13 14:27:23 +01:00
56415eae59 Auto-commit local changes before build (2026-01-13 14:12:58) 2026-01-13 14:12:59 +01:00
6c0dcf5a2d Auto-commit local changes before build (2026-01-13 13:15:30) 2026-01-13 13:15:30 +01:00
0c66ced915 Auto-commit local changes before build (2026-01-13 12:52:53) 2026-01-13 12:52:53 +01:00
a35ae4bf7a Auto-commit local changes before build (2026-01-13 12:41:58) 2026-01-13 12:41:58 +01:00
17809e40a5 Auto-commit local changes before build (2026-01-13 11:51:15) 2026-01-13 11:51:15 +01:00
3b5204a970 Auto-commit local changes before build (2026-01-13 11:49:25) 2026-01-13 11:49:25 +01:00
2a2237bd6e Auto-commit local changes before build (2026-01-13 10:43:31) 2026-01-13 10:43:31 +01:00
6efecc848b Auto-commit local changes before build (2026-01-13 10:21:27) 2026-01-13 10:21:27 +01:00
0cc587805f Auto-commit local changes before build (2026-01-12 16:55:54) 2026-01-12 16:55:54 +01:00
0ced2f8a48 Auto-commit local changes before build (2026-01-12 15:53:35) 2026-01-12 15:53:35 +01:00
a7d6237632 Auto-commit local changes before build (2026-01-12 15:39:19) 2026-01-12 15:39:19 +01:00
efe7bd184e Auto-commit local changes before build (2026-01-12 15:04:09) 2026-01-12 15:04:09 +01:00
f18044f72c Auto-commit local changes before build (2026-01-12 14:28:50) 2026-01-12 14:28:50 +01:00
b791c43299 Auto-commit local changes before build (2026-01-12 14:07:33) 2026-01-12 14:07:33 +01:00
1e652fe311 Auto-commit local changes before build (2026-01-12 13:58:49) 2026-01-12 13:58:49 +01:00
8c7f7f8805 Auto-commit local changes before build (2026-01-12 13:46:37) 2026-01-12 13:46:37 +01:00
2b6a78b99b Auto-commit local changes before build (2026-01-12 13:38:55) 2026-01-12 13:38:55 +01:00
0d8f4e88e6 Auto-commit local changes before build (2026-01-12 13:32:27) 2026-01-12 13:32:27 +01:00
e84e42d856 Auto-commit local changes before build (2026-01-12 12:52:12) 2026-01-12 12:52:12 +01:00
ae61c563b8 Auto-commit local changes before build (2026-01-12 12:41:47) 2026-01-12 12:41:47 +01:00
b1522cef2f Auto-commit local changes before build (2026-01-12 12:32:03) 2026-01-12 12:32:03 +01:00
ccf9af43d5 Auto-commit local changes before build (2026-01-12 11:13:43) 2026-01-12 11:13:43 +01:00
68632d4958 Auto-commit local changes before build (2026-01-12 10:11:38) 2026-01-12 10:11:38 +01:00
a7021de872 Auto-commit local changes before build (2026-01-12 09:52:29) 2026-01-12 09:52:29 +01:00
7fcdf5702f Auto-commit local changes before build (2026-01-12 09:43:48) 2026-01-12 09:43:48 +01:00
c8b85316e9 Auto-commit local changes before build (2026-01-12 09:21:16) 2026-01-12 09:21:16 +01:00
32f0f44601 Auto-commit local changes before build (2026-01-12 09:09:48) 2026-01-12 09:09:48 +01:00
166311da43 Auto-commit local changes before build (2026-01-09 15:01:37) 2026-01-09 15:01:37 +01:00
7283eb8d99 Auto-commit local changes before build (2026-01-09 13:52:15) 2026-01-09 13:52:15 +01:00
7da364638a Auto-commit local changes before build (2026-01-09 13:34:03) 2026-01-09 13:34:03 +01:00
3e9bb0e065 Auto-commit local changes before build (2026-01-09 13:01:06) 2026-01-09 13:01:06 +01:00
77416a8382 Auto-commit local changes before build (2026-01-09 12:43:58) 2026-01-09 12:43:58 +01:00
6ccc88c8d2 Auto-commit local changes before build (2026-01-09 12:14:18) 2026-01-09 12:14:18 +01:00
8f705475db Auto-commit local changes before build (2026-01-09 12:03:02) 2026-01-09 12:03:02 +01:00
443c7a4c71 Auto-commit local changes before build (2026-01-09 10:13:07) 2026-01-09 10:13:07 +01:00
17e36b8633 Auto-commit local changes before build (2026-01-09 09:55:24) 2026-01-09 09:55:24 +01:00
62d65d20ad Auto-commit local changes before build (2026-01-09 09:35:39) 2026-01-09 09:35:39 +01:00
1e7dd551ab Auto-commit local changes before build (2026-01-08 17:14:09) 2026-01-08 17:14:09 +01:00
57773a7860 Auto-commit local changes before build (2026-01-08 16:54:10) 2026-01-08 16:54:10 +01:00
63d4b0126b Auto-commit local changes before build (2026-01-08 16:12:11) 2026-01-08 16:12:11 +01:00
476d9c7703 Auto-commit local changes before build (2026-01-08 15:47:01) 2026-01-08 15:47:01 +01:00
ec1cbd2a2c Auto-commit local changes before build (2026-01-08 15:26:35) 2026-01-08 15:26:35 +01:00
1cbec82d65 Auto-commit local changes before build (2026-01-08 15:10:32) 2026-01-08 15:10:32 +01:00
87581f825f Auto-commit local changes before build (2026-01-08 14:46:19) 2026-01-08 14:46:19 +01:00
b89d86bf66 Auto-commit local changes before build (2026-01-08 14:30:19) 2026-01-08 14:30:19 +01:00
90c24de1f5 Auto-commit local changes before build (2026-01-08 14:18:20) 2026-01-08 14:18:20 +01:00
19fb328602 Auto-commit local changes before build (2026-01-08 14:05:43) 2026-01-08 14:05:43 +01:00
d7ffb8aa52 Auto-commit local changes before build (2026-01-08 13:47:59) 2026-01-08 13:47:59 +01:00
b3fde8f431 Auto-commit local changes before build (2026-01-08 12:54:15) 2026-01-08 12:54:15 +01:00
b7f057f0b5 Auto-commit local changes before build (2026-01-08 12:40:27) 2026-01-08 12:40:27 +01:00
1131f7f2fe Auto-commit local changes before build (2026-01-08 11:15:47) 2026-01-08 11:15:47 +01:00
d642e7806d Auto-commit local changes before build (2026-01-08 10:25:33) 2026-01-08 10:25:33 +01:00
eb4b80e792 Auto-commit local changes before build (2026-01-08 10:13:48) 2026-01-08 10:13:48 +01:00
71752fb926 Auto-commit local changes before build (2026-01-06 20:50:50) 2026-01-06 20:50:50 +01:00
92716dc13c Auto-commit local changes before build (2026-01-06 20:04:54) 2026-01-06 20:04:54 +01:00
a295d267a6 Auto-commit local changes before build (2026-01-06 16:53:31) 2026-01-06 16:53:31 +01:00
d0a7452240 Auto-commit local changes before build (2026-01-06 15:56:54) 2026-01-06 15:56:54 +01:00
cf4b23b26e Auto-commit local changes before build (2026-01-06 15:21:26) 2026-01-06 15:21:26 +01:00
9ebfecc4bb Auto-commit local changes before build (2026-01-06 14:15:59) 2026-01-06 14:15:59 +01:00
fb09891dc4 Auto-commit local changes before build (2026-01-06 13:57:25) 2026-01-06 13:57:25 +01:00
369341c370 Auto-commit local changes before build (2026-01-06 13:46:57) 2026-01-06 13:46:57 +01:00
0c7aaa61db Auto-commit local changes before build (2026-01-06 13:35:46) 2026-01-06 13:35:46 +01:00
63b47a59e0 Auto-commit local changes before build (2026-01-06 13:25:04) 2026-01-06 13:25:04 +01:00
6984b9ec22 Auto-commit local changes before build (2026-01-06 12:43:38) 2026-01-06 12:43:38 +01:00
9e0f215910 Auto-commit local changes before build (2026-01-06 12:23:16) 2026-01-06 12:23:16 +01:00
1a91591482 Auto-commit local changes before build (2026-01-06 12:19:54) 2026-01-06 12:19:54 +01:00
1db555d487 Auto-commit local changes before build (2026-01-06 12:16:27) 2026-01-06 12:16:27 +01:00
cc0d969ebf Auto-commit local changes before build (2026-01-06 11:47:15) 2026-01-06 11:47:15 +01:00
551e0dec26 Auto-commit local changes before build (2026-01-06 11:29:00) 2026-01-06 11:29:00 +01:00
661dbc7013 Auto-commit local changes before build (2026-01-06 11:15:00) 2026-01-06 11:15:00 +01:00
b54ba900d0 Auto-commit local changes before build (2026-01-06 11:04:28) 2026-01-06 11:04:28 +01:00
13c4c5950d Auto-commit local changes before build (2026-01-06 10:11:59) 2026-01-06 10:11:59 +01:00
19f4b59e23 Auto-commit local changes before build (2026-01-06 10:02:17) 2026-01-06 10:02:17 +01:00
f14e02992d Auto-commit local changes before build (2026-01-06 09:45:02) 2026-01-06 09:45:02 +01:00
9716d5353b Auto-commit local changes before build (2026-01-04 18:41:10) 2026-01-04 18:41:10 +01:00
79b9580a66 Auto-commit local changes before build (2026-01-04 18:19:57) 2026-01-04 18:19:57 +01:00
ab4f5ae696 Auto-commit local changes before build (2026-01-04 18:12:52) 2026-01-04 18:12:52 +01:00
9f61ed6629 Auto-commit local changes before build (2026-01-04 18:07:10) 2026-01-04 18:07:10 +01:00
6a0aa53cd0 Auto-commit local changes before build (2026-01-04 18:01:23) 2026-01-04 18:01:23 +01:00
79812d3cec Auto-commit local changes before build (2026-01-04 17:26:07) 2026-01-04 17:26:07 +01:00
d51741532a Auto-commit local changes before build (2026-01-04 16:59:43) 2026-01-04 16:59:43 +01:00
f680e799b2 Auto-commit local changes before build (2026-01-04 16:50:41) 2026-01-04 16:50:41 +01:00
17d0398fb7 Auto-commit local changes before build (2026-01-04 16:16:24) 2026-01-04 16:16:24 +01:00
fdeeaef0e6 Auto-commit local changes before build (2026-01-04 16:02:09) 2026-01-04 16:02:09 +01:00
fc275a0285 Auto-commit local changes before build (2026-01-04 15:50:22) 2026-01-04 15:50:22 +01:00
9c95168098 Auto-commit local changes before build (2026-01-04 15:12:50) 2026-01-04 15:12:50 +01:00
b3f3ac90fd Auto-commit local changes before build (2026-01-04 14:34:57) 2026-01-04 14:34:57 +01:00
c880121cd3 Auto-commit local changes before build (2026-01-04 13:29:28) 2026-01-04 13:29:28 +01:00
a1b8dfe5cf Auto-commit local changes before build (2026-01-04 12:34:15) 2026-01-04 12:34:15 +01:00
843e01e1e6 Auto-commit local changes before build (2026-01-04 12:17:21) 2026-01-04 12:17:21 +01:00
985397afa1 Auto-commit local changes before build (2026-01-04 12:11:00) 2026-01-04 12:11:00 +01:00
cea1df3e38 Auto-commit local changes before build (2026-01-04 11:57:39) 2026-01-04 11:57:39 +01:00
609364ef2f Auto-commit local changes before build (2026-01-04 11:19:59) 2026-01-04 11:19:59 +01:00
8fbf452018 Auto-commit local changes before build (2026-01-04 01:33:56) 2026-01-04 01:33:56 +01:00
22a2e7146b Auto-commit local changes before build (2026-01-03 22:57:17) 2026-01-03 22:57:17 +01:00
b0de64c9fd Auto-commit local changes before build (2026-01-03 22:39:11) 2026-01-03 22:39:11 +01:00
9571716344 Auto-commit local changes before build (2026-01-03 22:22:35) 2026-01-03 22:22:35 +01:00
fdf8ab224f Auto-commit local changes before build (2026-01-03 21:53:18) 2026-01-03 21:53:18 +01:00
fa676a9e4e Auto-commit local changes before build (2026-01-03 21:42:36) 2026-01-03 21:42:36 +01:00
bef1d7d336 Auto-commit local changes before build (2026-01-03 18:48:08) 2026-01-03 18:48:08 +01:00
2710a140ad Auto-commit local changes before build (2026-01-03 18:22:48) 2026-01-03 18:22:48 +01:00
46e93b3f01 Auto-commit local changes before build (2026-01-03 17:50:38) 2026-01-03 17:50:38 +01:00
c528b938a0 Auto-commit local changes before build (2026-01-03 16:04:10) 2026-01-03 16:04:10 +01:00
94ecc305a2 Auto-commit local changes before build (2026-01-03 15:17:01) 2026-01-03 15:17:01 +01:00
5ed3e50288 Auto-commit local changes before build (2026-01-03 14:57:56) 2026-01-03 14:57:56 +01:00
a5c8f2db3c Auto-commit local changes before build (2026-01-03 14:15:04) 2026-01-03 14:15:04 +01:00
dff746b23d Auto-commit local changes before build (2026-01-03 13:59:54) 2026-01-03 13:59:54 +01:00
56d2d68fa0 Auto-commit local changes before build (2026-01-03 13:40:56) 2026-01-03 13:40:56 +01:00
896bcbe55f Auto-commit local changes before build (2026-01-03 13:29:09) 2026-01-03 13:29:09 +01:00
4654fac477 Auto-commit local changes before build (2026-01-03 13:24:32) 2026-01-03 13:24:32 +01:00
750815dcff Auto-commit local changes before build (2026-01-03 13:05:53) 2026-01-03 13:05:54 +01:00
e2822a130f Auto-commit local changes before build (2026-01-03 12:54:35) 2026-01-03 12:54:35 +01:00
b246b82d11 Auto-commit local changes before build (2026-01-03 12:21:44) 2026-01-03 12:21:44 +01:00
a9441d9b6e Auto-commit local changes before build (2026-01-01 18:15:28) 2026-01-01 18:15:28 +01:00
91b91cd489 Auto-commit local changes before build (2026-01-01 17:54:06) 2026-01-01 17:54:06 +01:00
3bd99523c3 Auto-commit local changes before build (2026-01-01 17:49:01) 2026-01-01 17:49:01 +01:00
5a3beaae96 Auto-commit local changes before build (2026-01-01 17:42:47) 2026-01-01 17:42:47 +01:00
dc7cc5e02b Auto-commit local changes before build (2026-01-01 17:36:33) 2026-01-01 17:36:33 +01:00
ac02c27eaf Auto-commit local changes before build (2026-01-01 17:28:51) 2026-01-01 17:28:51 +01:00
241d00ff99 Auto-commit local changes before build (2026-01-01 17:23:31) 2026-01-01 17:23:31 +01:00
74836d57eb Auto-commit local changes before build (2026-01-01 17:15:18) 2026-01-01 17:15:18 +01:00
49629343d5 Auto-commit local changes before build (2026-01-01 17:08:01) 2026-01-01 17:08:01 +01:00
348b10f84e Auto-commit local changes before build (2026-01-01 17:00:37) 2026-01-01 17:00:37 +01:00
3602879721 Auto-commit local changes before build (2026-01-01 16:54:45) 2026-01-01 16:54:45 +01:00
6ee92db230 Auto-commit local changes before build (2026-01-01 16:45:48) 2026-01-01 16:45:48 +01:00
9f42b8163e Auto-commit local changes before build (2026-01-01 16:41:02) 2026-01-01 16:41:02 +01:00
951382e580 Auto-commit local changes before build (2026-01-01 16:09:56) 2026-01-01 16:09:56 +01:00