???? Reservation Charges Breakdown — Amenity reservation details (administrator panel and resident portal) now show the basic rate, the add-on charges and the total amount as separate lines, with each add-on listed individually so it is clear what makes up the bill. Invoices automatically generated for new reservations also list the basic charge and each add-on on its own line. Existing reservations created before this change keep showing only the total, unchanged.
???? Bulk Import & Export of Document Types — You can now download all regulatory document types as a spreadsheet, edit them in Excel, and re-upload to apply changes in bulk. Each upload shows a preview with how many entries will be created, updated, or left unchanged before you confirm. The list page also shows each document type's ID for easier identification when editing the spreadsheet. Every change is recorded in the activity log along with the user's IP address.
✨ Customer Accounts — Updated the registration process so that a contact's status changes from pending to registered immediately after their activation email is successfully sent.
???? Permit & Certificate Tab — Added a new tab to the client profile that displays a list of their permits and certificates and allows requesting new ones using active templates.
???? Reservation Charges Breakdown — Service request details (administrator panel and resident portal) now show the basic rate, the add-on charges and the total amount as separate lines, with each add-on listed individually so it is clear what makes up the bill. Invoices automatically generated for new service requests also list the basic charge and each add-on on its own line. Existing requests created before this change keep showing only the total, unchanged.
???? Service Request Status Changes — Fixed an issue on the service request details page where approving, rejecting, or cancelling a request showed an "Error updating" message even though the new status had been saved correctly.
✨ Reservation Pricing Detail — Price calculation and reservation responses for amenities and services now include an additional pricing breakdown (base amount, add-on charges, total, and per add-on line items) while keeping the existing price fields unchanged for current apps.
???? New Regulatory Document Types Import — Compliance teams can now update regulatory document types (and their active/inactive status) through a spreadsheet. The flow lets you map columns when headers don't match, see a row-by-row preview showing what will be created, updated or left unchanged, and confirm before any change is applied. Every import is logged with the user, date and IP address for full auditability.
???? Service Booking Calendar — Fixed several issues on the service booking screens, on both the administrator panel and the resident portal. After a request is approved, the full reserved time range now correctly appears as busy on the calendar (previously only the start time was being blocked). The calendar also now respects the configured number of simultaneous reservations allowed per time slot, and on the resident portal, days that have reached the maximum number of bookings are properly marked as unavailable.
???? Reservation Charges Breakdown — Amenity reservation details (administrator panel and resident portal) now show the basic rate, the add-on charges and the total amount as separate lines, with each add-on listed individually so it is clear what makes up the bill. Invoices automatically generated for new reservations also list the basic charge and each add-on on its own line. Existing reservations created before this change keep showing only the total, unchanged.
???? Menu Customisation and Reordering Fixes — Fixed drag-and-drop reordering issues that broke menu icons, and ensured all sidebar and settings menu items can be successfully renamed.
???? Bulk Import & Export of Document Types — You can now download all regulatory document types as a spreadsheet, edit them in Excel, and re-upload to apply changes in bulk. Each upload shows a preview with how many entries will be created, updated, or left unchanged before you confirm. The list page also shows each document type's ID for easier identification when editing the spreadsheet. Every change is recorded in the activity log along with the user's IP address.
???? Fixed grab handle icon rendering error on builder — The grab handles next to menu items in the customisation builder were displaying corrupted characters (≡) due to a character encoding conflict in the stylesheet. The icons have been updated to use safe CSS Unicode escape sequence formatting, ensuring they render correctly across all web browsers and server configurations.
✨ Customer Accounts — Updated the registration process so that a contact's status changes from pending to registered immediately after their activation email is successfully sent.
???? Permit & Certificate Tab — Added a new tab to the client profile that displays a list of their permits and certificates and allows requesting new ones using active templates.
???? Reservation Charges Breakdown — Service request details (administrator panel and resident portal) now show the basic rate, the add-on charges and the total amount as separate lines, with each add-on listed individually so it is clear what makes up the bill. Invoices automatically generated for new service requests also list the basic charge and each add-on on its own line. Existing requests created before this change keep showing only the total, unchanged.
???? Service Request Status Changes — Fixed an issue on the service request details page where approving, rejecting, or cancelling a request showed an "Error updating" message even though the new status had been saved correctly.
✨ Reservation Pricing Detail — Price calculation and reservation responses for amenities and services now include an additional pricing breakdown (base amount, add-on charges, total, and per add-on line items) while keeping the existing price fields unchanged for current apps.
???? New Regulatory Document Types Import — Compliance teams can now update regulatory document types (and their active/inactive status) through a spreadsheet. The flow lets you map columns when headers don't match, see a row-by-row preview showing what will be created, updated or left unchanged, and confirm before any change is applied. Every import is logged with the user, date and IP address for full auditability.
???? Service Booking Calendar — Fixed several issues on the service booking screens, on both the administrator panel and the resident portal. After a request is approved, the full reserved time range now correctly appears as busy on the calendar (previously only the start time was being blocked). The calendar also now respects the configured number of simultaneous reservations allowed per time slot, and on the resident portal, days that have reached the maximum number of bookings are properly marked as unavailable.
???? Fixed — Resident imports no longer create duplicate residents when re-importing the same spreadsheet or when the spreadsheet contains repeated rows for the same person in the same unit. The system now correctly updates the existing resident instead of adding a copy.
???? New — The import preview now highlights spreadsheet rows that point to the same unit and email more than once, and shows a count of these duplicates next to the totals. Before starting the import, the system asks whether to proceed knowing later rows will overwrite earlier ones. Available in both Owner and Resident imports.
✨ Improved — Owner imports now correctly send the "new property available" notification when an existing customer is assigned to a different unit, not just when a brand-new contact is created. Imported owners are also marked as primary contacts of their unit so they appear correctly on the property record.
???? Fixed — Resident imports no longer create duplicate residents when re-importing the same spreadsheet or when the spreadsheet contains repeated rows for the same person in the same unit. The system now correctly updates the existing resident instead of adding a copy.
✨ Visitor Drill-Down Destination — The Visitors drill-down now opens the standard visitor list view instead of the admin variant, ensuring the row count on the destination page matches the cell value in the report without any additional client-side filtering.
???? Visitors Section — Updated the Visitors section to count records purely by their stored status, matching exactly the totals shown on the visitor list page. Approved, Checked-in, Check-out and other status counts now reconcile one-to-one with the source list, eliminating discrepancies that previously arose from secondary state checks.
???? New — The import preview now highlights spreadsheet rows that point to the same unit and email more than once, and shows a count of these duplicates next to the totals. Before starting the import, the system asks whether to proceed knowing later rows will overwrite earlier ones. Available in both Owner and Resident imports.
✨ Improved — Owner imports now correctly send the "new property available" notification when an existing customer is assigned to a different unit, not just when a brand-new contact is created. Imported owners are also marked as primary contacts of their unit so they appear correctly on the property record.
✨ Work Order "Others" Coverage — Improved the internal filter expansion that powers the "Others" row in the Work Order section so that, when the user filters tasks by "Others" on the source list, the same set of records appears — including tasks with a missing type or a type pointing to a removed entry.
???? Fixed — Resident imports no longer create duplicate residents when re-importing the same spreadsheet or when the spreadsheet contains repeated rows for the same person in the same unit. The system now correctly updates the existing resident instead of adding a copy.
✨ Visitor Drill-Down Destination — The Visitors drill-down now opens the standard visitor list view instead of the admin variant, ensuring the row count on the destination page matches the cell value in the report without any additional client-side filtering.
???? Visitors Section — Updated the Visitors section to count records purely by their stored status, matching exactly the totals shown on the visitor list page. Approved, Checked-in, Check-out and other status counts now reconcile one-to-one with the source list, eliminating discrepancies that previously arose from secondary state checks.
???? New — The import preview now highlights spreadsheet rows that point to the same unit and email more than once, and shows a count of these duplicates next to the totals. Before starting the import, the system asks whether to proceed knowing later rows will overwrite earlier ones. Available in both Owner and Resident imports.
✨ Improved — Owner imports now correctly send the "new property available" notification when an existing customer is assigned to a different unit, not just when a brand-new contact is created. Imported owners are also marked as primary contacts of their unit so they appear correctly on the property record.
✨ Work Order "Others" Coverage — Improved the internal filter expansion that powers the "Others" row in the Work Order section so that, when the user filters tasks by "Others" on the source list, the same set of records appears — including tasks with a missing type or a type pointing to a removed entry.
???? Fixed — Registering a resident vehicle no longer fails when opening the vehicle list after save.
???? Ticket Field Access — Administrators can now choose, role by role, which ticket fields each team member can see, view in read-only, or fully edit. A new "Manage Ticket Field Access" button on the Roles screen opens a per-role editor covering every standard ticket field (Subject, Department, Priority, Service, Assigned, Tags, Description, and more) plus any custom fields. When a required field is hidden or set to read-only for a role, a default value is collected so new tickets continue to save without errors. Administrators are never restricted by these rules. Existing customer environments receive the new configuration storage automatically as part of the regular module update — no manual deactivation/reactivation is required.
???? Fixed — Resident imports no longer fail when saving contacts because of a middle-name field mismatch between the property system and the central portal.
✨ Improved — Importing vehicle brands and models from the public registry now runs only inside the signed-in administration area, with the same security as other parking settings.
???? Ticket Field Access — Save button — Fixed an issue where saving the per-role field access configuration appeared to do nothing: the chosen access levels and default values were not being stored. Clicking Save now correctly persists all changes.
???? Tasks auto-closing — Fixed an issue where tasks set to "In Progress" were being automatically marked as Completed by the system shortly after being created, even when the work was still ongoing. Tasks now stay open and only close automatically after the full inactivity window has actually passed without any updates.
???? Fixed — Registering a resident vehicle no longer fails when opening the vehicle list after save.
???? Ticket Field Access — Administrators can now choose, role by role, which ticket fields each team member can see, view in read-only, or fully edit. A new "Manage Ticket Field Access" button on the Roles screen opens a per-role editor covering every standard ticket field (Subject, Department, Priority, Service, Assigned, Tags, Description, and more) plus any custom fields. When a required field is hidden or set to read-only for a role, a default value is collected so new tickets continue to save without errors. Administrators are never restricted by these rules. Existing customer environments receive the new configuration storage automatically as part of the regular module update — no manual deactivation/reactivation is required.
???? Fixed — Resident imports no longer fail when saving contacts because of a middle-name field mismatch between the property system and the central portal.
✨ Improved — Importing vehicle brands and models from the public registry now runs only inside the signed-in administration area, with the same security as other parking settings.
???? Ticket Field Access — Save button — Fixed an issue where saving the per-role field access configuration appeared to do nothing: the chosen access levels and default values were not being stored. Clicking Save now correctly persists all changes.
???? Tasks auto-closing — Fixed an issue where tasks set to "In Progress" were being automatically marked as Completed by the system shortly after being created, even when the work was still ongoing. Tasks now stay open and only close automatically after the full inactivity window has actually passed without any updates.
???? Fixed — Registering a resident vehicle no longer fails when opening the vehicle list after save.
???? Ticket Field Access — Administrators can now choose, role by role, which ticket fields each team member can see, view in read-only, or fully edit. A new "Manage Ticket Field Access" button on the Roles screen opens a per-role editor covering every standard ticket field (Subject, Department, Priority, Service, Assigned, Tags, Description, and more) plus any custom fields. When a required field is hidden or set to read-only for a role, a default value is collected so new tickets continue to save without errors. Administrators are never restricted by these rules. Existing customer environments receive the new configuration storage automatically as part of the regular module update — no manual deactivation/reactivation is required.
???? Fixed — Resident imports no longer fail when saving contacts because of a middle-name field mismatch between the property system and the central portal.