=== Projectopia - Project Management Tool ===
Contributors: projectopia
Tags: project, project management
Requires at least: 5.3
Tested up to: 7.1
Stable tag: 5.1.26
Requires PHP: 7.4
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl.html

the Ultimate WordPress Project Management Plugin for WordPress.

== Description ==

### Projectopia - the Ultimate WordPress Project Management Plugin

Freelancer or agency, this WordPress plugin will help you to run your business efficiently and effectively, providing all of the tools that you need to communicate with your clients and your team. Keep all your information in one place, easily accessbile and conveniently placed on your own WordPress website.

#### What does this plugin do?

Never again lose a client owing to silly reasons. Use Projectopia and its Project Management Tools to always stay updated with the latest advancements and track your team�s progress.Projectopia is a powerhouse that assists you in managing. Its leading features include: Adding Team embers, Client anagement, Generating Leads, Time-Tracking Projects, Setting up ilestones/Tasks, Generating Invoices, Raising Support Tickets, and much more.

#### Compatibility

* This plugin is fully compatible with WordPress Version 5.3.0 and beyond and also compatible with any WordPress theme.
* Fully compatible with Yoast SEO, Rank Math, All in One SEO Pack, SEOPress, Schema and other many plugins.

## 🌐 Our Products

If you like this plugin, consider exploring our other themes and plugins:

🧱 [Gutena](https://wordpress.org/themes/gutena/) - A full site editing (block) theme for WordPress with ready made full page templates. Elegant and functional - follows all the best practices by WP, and yeah, no jQuery!

⏱️[Quiz and Survey Master](https://wordpress.org/plugins/quiz-master-next/) - Best WordPress Quiz Plugin to create engaging quizzes, surveys, & exams using WordPress and convert your website into a lead generation machine.

☰ [Responsive Menu](https://wordpress.org/plugins/responsive-menu/) - Best WordPress Menu Builder Plugin to create awesome and interactive mobile & desktop menus for WordPress websites.

📅 [Booking Ultra](https://wordpress.org/plugins/booking-ultra-pro/) - Appointment Booking plugin for WordPress - Show a quick form to accept bookings for your services with pre-set booking slots. Ideal for salons, medical professionals, lawyers, consultants, etc.

⚡ [InstaWP](https://instawp.com/) - Launch a quick WordPress site with this sandbox service. Create New WordPress instance within a second.

== Installation ==

1. Visit 'Plugins > Add New'.
1. Search for 'Projectopia' and install it.
1. Or you can upload the `projectopia-core` folder to the `/wp-content/plugins/` directory manually.
1. Activate Projectopia from your Plugins page.
1. After activation go to 'Sidebar > Projectopia'.
1. Enable options and save changes.

== Frequently Asked Questions ==

= Is there any admin interface for this plugin? =

Yes. You can access this from 'Sidebar > Projectopia'.

= How to use this plugin? =

Go to 'Sidebar > Projectopia', enable/disable options as per your need and save your changes.

= Is this plugin compatible with any themes? =

Yes, this plugin is compatible with any theme. Also, compatible with Genesis, Divi themes.

= The plugin isn't working or have a bug? =

Post detailed information about the issue in the [support forum](https://wordpress.org/support/plugin/projectopia-core) and Out Team will work to fix it.

== Screenshots ==

1. Dashboard - Overview the Income, Open Tasks, Projects & More
2. Calendar - View Due Invoices, Milestones, Projects & Tasks
3. Tasks - View, Edit & Add Tasks, Add Deadlines, & View Progress
4. Leads -  View, Edit & Add Leads, Add Files, & Notes
5. Clients - View, Edit & Add Clients, Send Alerts, Invoices & Project Updates
6. Quotes & Estimates - View, Edit & Add Quotes & Estimates
7. Milestone Templates - View, Edit & Add Milestone Templates
8. All Projects - View, Edit & Add Projects, Specify Project Type, Update Status, etc.
9. Project Updates - Viel all the Project Updates with Specific Details
10. Invoices - View, Generate & Send Invoices to Clients
11. Team Members - View & Add Team Members
12. FAQs - Set Project FAQs
13. Adding New Project 
14. Adding New Project - Project Brief

== Changelog ==

= 5.1.26 =
Release Date: October 24, 2026

Fixed
- Project creation and update times showing several hours earlier than they actually happened, on the client dashboard and in Dashboard -> Project Updates. Projects created from a WooCommerce order were storing a time that had the site's timezone applied twice. Requires the matching WooCommerce Add-On update.
- Activity log entries filed under the wrong day. The date heading was worked out in UTC while the time beside it used the site timezone, so anything recorded late in the evening appeared under the next day.
- The "Yesterday" heading never appeared in activity logs, project updates, quote messages or task messages. Yesterday's entries showed a plain date instead.
- Invoice due dates on the client dashboard ignored the plugin's date format setting and could show a day early.
- "Days to Launch" showing a nonsense figure of roughly 20,700 days on projects with no finish date. An empty date was being read as 1 January 1970 and counted from there. Projects with no finish date now fall back to their last milestone deadline, so existing projects get a real countdown without any change to stored data, and only show N/A when there is genuinely no date to count towards. Projects created from a WooCommerce order using a Milestone/Task Template were the common case, because the add-on never set a finish date; it now records one from the template milestones as well.
- Translation tools such as Loco Translate could not read the plugin's text, reporting "No translations found" and blocking edits with "File access disallowed". The bundled Freemius library's own translations were being mistaken for the plugin's. A translation manifest (loco.xml) now points these tools at the correct template and excludes the bundled third-party libraries, so the plugin's labels can be translated or renamed normally.

Added
- Clients can mark their own tasks as complete from their dashboard. Off by default, enable in Settings -> Client Dashboard.
- Clients can mark their own milestones as complete. Separate setting, also off by default.
- Setting to restrict completing tasks and milestones to team members, administrators and the client the project belongs to.
- Setting to block Projectopia actions for logged-in users who are neither a team member nor a client. Login, registration and password reset are unaffected.
- Clearer messages when an action is refused, telling the user whether the feature is switched off or their account is not linked to a client or team member record.

Security
- Completing a task or milestone now confirms the user is entitled to act on that item. Previously any signed-in user could complete any task, which could also roll a milestone to complete and raise a milestone completion invoice.
- Clients can only act on projects belonging to their own client record. This applies regardless of the settings above.
- A project reference sent with a completion request is no longer trusted from clients, so an activity entry cannot be written into another project's log.
- Client contact management is no longer reachable by logged-out visitors. Adding, editing and removing client contacts, and updating a client profile, were registered for logged-out visitors and protected only by a nonce that the plugin prints on the public registration, quote and lead forms. Anyone able to load one of those pages could change or delete the WordPress account behind a client contact, and the edit handler would then issue a login cookie for that account. Reported privately against 5.1.25.2 by an external reviewer.
- Managing a client contact now requires either the client-editing capability or ownership of the client record in question, and the contact must belong to the client named in the request, so one client cannot reach another client's contacts.
- A contact entry that points at an administrator account is refused, closing a privilege-escalation route through client contact editing.
- Removing a client contact can no longer delete the client's main contact account, a team member, or an administrator through that handler; only ordinary contact accounts can be removed this way.
- Changing a password only re-issues a login cookie when the user is changing their own. Previously an administrator who set a contact's password was silently signed in as that contact.
- Clearing a client alert now requires rights over that client record.
- Creating tasks, listing tasks across the whole install, and sending contract emails are restricted to team members. All three were reachable without signing in.

Updated
- Tested against WordPress 7.1 on PHP 7.4 and PHP 8.5.12, with WooCommerce and all twelve Projectopia add-ons active. Syntax checked across PHP 7.4, 8.2, 8.3, 8.4 and 8.5.12.
- Minimum PHP raised from 5.6 to 7.4. The plugin has not actually run on PHP 5.6 for several releases: the PHP 8 compatibility work in 5.1.21 and 5.1.24 introduced null coalescing operators that PHP 5.6 cannot parse, and the bundled PDF library needs PHP 7 as well. The requirement is now declared in the plugin header as well as the readme, so WordPress blocks activation on an unsupported version instead of the site failing at load. Add-ons declare the same requirement.

= 5.1.25.2 =
Release Date: April 29, 2026

Fixed
- File uploads failing on cached sites (Cloudflare, Cloudways, LiteSpeed). Uploads now bypass cached page tokens and work reliably.
- Profile photo upload getting stuck on "Uploading..." with no error message.
- Profile photo showing a broken image preview after upload on sites with a non-standard thumbnail size.
- Client Files and Task Files not appearing on the client dashboard after clicking "Submit Files".
- Admin list tables (Teams, Clients, Projects, Quotes, Invoices, Leads, Tickets, Tasks, Bugs, Lead Forms, FAQs) appearing detached from the page and floating when scrolling. Caused by a styling conflict with some other plugins or themes.
- "Allowed file types" hint showing an empty list on some sites, which caused every upload to be rejected.
- Long "Allowed file types" text overflowing the upload box on narrow screens — it now wraps cleanly.
- Clearer upload error messages: the user is now told exactly why an upload was rejected (wrong file type, file too large, session expired, etc.) instead of a generic error.

Added
- A hint below every upload field showing the allowed file types and your server's maximum upload size.
- A live upload progress counter — shows percentage and size (e.g. "Uploading… 42% (4.2 MB / 10.0 MB)") so users see real feedback on large files instead of a frozen badge. Switches to "Processing…" once the file has finished transferring.
- Profile pictures and avatars are now limited to image files only (JPG, JPEG, PNG, GIF, WebP, AVIF, BMP, ICO). The file picker also pre-filters to images so users can't pick a PDF or video by mistake.
- The Company Logo, Dashboard Logo, Invoice Logo and Login/Register Background fields in plugin settings are now restricted to image files only, with the same protection.
- A progress overlay when saving the plugin settings page with a new logo or background image. Shows upload percentage and size, then "Processing…" while WordPress finishes saving.
- Files are now checked against allowed types and size BEFORE upload starts — if the file isn't allowed, the user sees the error immediately instead of waiting for the upload to finish.

Updated
- Expanded the default list of allowed file extensions to include modern image formats (WebP, AVIF, BMP, ICO), more document formats (ODT, PPT/PPTX, PPS/PPSX, PSD), all common audio/video formats (MP3, M4A, OGG, WAV, FLAC, MP4, MOV, AVI, etc.) and additional archives (GZ, RAR).
- Existing sites get these new extensions automatically on update without losing any custom additions.
- Logo upload fields on the settings page now also accept modern image formats (WebP, AVIF, BMP) in addition to JPG/PNG/GIF.

= 5.1.24 =
Release Date: March 20, 2026

* Fixed: Replaced deprecated FILTER_SANITIZE_STRING (removed in PHP 8.2) with sanitize_text_field() + wp_unslash() across quote_functions.php, ticket_functions.php, and initial-settings.php
* Fixed: File uploads now work correctly for client users on async-upload.php via user_has_cap filter
* Fixed: Stripe SDK duplicate class collision (E_COMPILE_ERROR) when pto-subscriptions addon is active
* Fixed: CPT rewrite rules now auto-flush when addons are activated, resolving 404 errors on support ticket, quote, and invoice URLs
* Fixed: Quote email now shows specific error when client record has no email address, instead of generic settings message
* Fixed: Days until launch shows 0 instead of misleading countdown for completed/closed projects
* Fixed: foreach() warning - added is_array() guard on json_decode() result in invoice_cd.php, fe/invoice.php, and client-dashboard/client-settings.php to prevent "argument must be of type array|object, string given" errors
* Fixed: foreach() warning - fixed $weights fallback from empty string to array() in template_functions.php
* Fixed: foreach() warning - added is_array() guard on $quote_elements in quote_functions.php
* Fixed: foreach() warning - added is_array() guard on $field->values for checkbox-group, radio-group, and select field types in invoice_cd.php
* Tested and confirmed compatible with PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4

= 5.1.23 =
Release Date: February 09, 2026
* Fixed: Email sanitization - Fixed error that was causing blocking sending Quote Emails
* Fixed: Invoice Project details - Fixed PHP 8 compatibility, cannot access offset of type string for empty project details on invoice edit page
* New feature: Payment history added to invoices - Added toggle to enable payment history in invoices is available in invoice settings
* New feature: Projectopia Admin dashboard icon - Added toggle to hide or display for (all/admin/non-admin) users in admin dashboard settings
* New feature: Projectopia Admin dashboard notices - Added toggle to h or display for (all/admin/non-admin) users in admin dashboard settings
* New feature: Projectopia Admin dashboard screen options - Added toggle to hide or display for (all/admin/non-admin) users in admin dashboard settings

= 5.1.22 =
Release Date: December 16, 2025
* Fixed: PHP 8 compatibility for settings page

= 5.1.21 =
Release Date: December 15, 2025
* Fixed: Freemius SDK 2.1.30 file error.

= 5.1.20 =
Release Date: December 12, 2025
* Fixed: Security improvements - Fixed the CVE-2025-12876 vulnerability. Stricter checks for file deletion
* Fixed: Security improvements - Improved the sanitization checks for the register_setting() function
* Fixed: Removed deprecated load_plugin_textdomain action hook. This is now handled by WordPress as of version 4.6
* Updated: Freemius SDK to v2.13.0 (version updated December 2025)

= 5.1.19 =
Release Date: September 12, 2025
* Fixed: Mark as Signed Off button's undefined array error

= 5.1.18 =
Release Date: May 12, 2025
* Fixed:Security Improvements

= 5.1.17 =
Release Date: April 30, 2025
* Fixed:Security Improvements

= 5.1.16 =
Release Date: March 4, 2025
* Fixed: Invoice PDF download issue, refactored hardcoded URLs, oversized logo on the contract page, and deprecated automatic conversion of "false" to an array.

= 5.1.15 =
Release Date: January 30, 2025
* Fixed: Freemius SDK file refactored.

= 5.1.14 =
Release Date: January 29, 2025
* Fixed: Freemius SDK file missing issue.

= 5.1.13 =
Release Date: January 27, 2025
* Fixed: Update Freemius SDK to patch the XSS vulnerability.

= 5.1.12 =
Release Date: January 15, 2025
* Fixed: Broken team member column in task list.

= 5.1.11 =
Release Date: December 27, 2024
* Fixed: Fatal errors occur when adding a second contact for a client.

= 5.1.10 =
Release Date: December 12, 2024
* Fixed: Fatal error in Stripe SDK implementation

= 5.1.9 =
Release Date: December 02, 2024
* Fixed: Stripe is enabled, but the client’s address is empty.

= 5.1.8 =
Release Date: November 10, 2024
* Fixed: Resolve security patch in ajax request 'pto_reset_password'

= 5.1.7 =
Release Date: October 15, 2024
* Fixed: Resolve 'admin_body_class' filter issue


= 5.1.6 =
Release Date: February 7, 2024
* Fixed: Speed up the product to be more “snappy”
* New:   Allow for creation of multiple kanban boards.
* Compatible with WordPress v6.4.

= 5.1.5 =
Release Date: July 5, 2023

* Fixed: Undefined variable issue `$post_currency`.
* Fixed: Outstanding Invoice Widget not working.
* Fixed: Income by Month Widget issues.
* Fixed: Remove Convert to CQPIM Team Member from Users List page.
* Fixed: Show language in Projectopia Client dashboard base on user setting.
* Fixed: Multiple Selection Issue in Quote Form Builder.
* Fixed: Google reCaptcha was not showing on frontend in some cases.
* Added: A new action `pto_after_update_summary_details`.
* Updated: Freemius SDK to v2.5.10.

= 5.1.4 =
Release Date: April 13, 2023

* Fixed: Column sorting issue for invoice.
* Tweak: Change instawp domain extention.
* Updated: Freemius SDK to v2.5.6.
* Compatible with WordPress v6.2.

= 5.1.3 =
Release Date: December 15, 2022

* Fixed: Fatal error when uploading file in manually created lead.
* Updated: Freemius SDK to v2.5.3.
* Compatible with WordPress v6.1.
* PHP 8.1 Compatibility.

= 5.1.2 =
Release Date: September 9, 2022

* Added: Kanban Board Permission Support.
* Updated: Freemius SDK to v2.4.5.

= 5.1.1 =
Release Date: July 27, 2022

* Added: Info to indicate a quote is converted to a project.
* Improved: Login and Register page display style.
* Improved: Make some un-translable stings translable.
* Fixed: Issue where Ticket status is not displaying properly if there is custom status key is set.
* Tweak: Restricted the ability to change support ticket status key only for in-built statueses.
* Fixed: Notification count issues.
* Fixed: License related logic.
* Fixed: Cannot delete notification when in Kanban view.
* Fixed: Add-on not showing up after activation.
* Fixed: Client Contact issue.
* Fixed: Add Team Member popup CSS issue.
* Fixed: Fatal Error when uploading file to a task.
* Fixed: Calendar links within Edit Team Member is not working.
* Fixed: Edit Quote UI and CSS issue.
* Fixed: Wrong tooltips.
* Fixed: Some Typos.
* Updated: Freemius SDK to v2.4.4.

= 5.1.0 =
Release Date: May 24, 2022

* Fixed: Unchecking the Option `Automatically recalculate task dates` was not working.
* Fixed: Fatal Error on Project edit.
* Fixed: Project Files upload 500 error.
* Fixed: Wrong notification count on project list page.
* Fixed: Unable to sort Project using Title filter.
* Fixed: Notification counter number was not dynamically updated.
* Fixed: Notification counter number was not dynamically updated.
* Fixed: Email Password setting to change to input type password.
* Fixed: Wrong message count showing in Project List Page.
* Compatible with WordPress v6.0.

= 5.0.9 =
Release Date: April 27, 2022

* Fixed: Partial Invoices issue.
* Fixed: Fatal Error on Invoice Creation and Save.
* Fixed: Updated Metabox Loading Order.
* Fixed: Client Dashboard default font.

= 5.0.8 =
Release Date: April 20, 2022

* Added: Option under Projectopia Settings > Client Dashboard to change Login / Register Page Backgorund Color.
* Fixed: Mixed up in password reset and create account forms.
* Fixed: No Role showing up on team member list if multiple roles were assigned.
* Fixed: Client Details not showing on Project list.
* Fixed: Custom Fields not showing up if quotes were present on field label.
* Fixed: Milestone dates are different after importing milestone template.
* Fixed: Customer name and Customer billing email address is not recorded in Stripe account.
* Fixed: Calendar translation issue.
* Fixed: CSS Issues.
* Updated: Stripe SDK to make this plugin fully compatible with PHP v8.0.

= 5.0.7 =
Release Date: February 25, 2022

* Fixed: Cannot set team member as project manager if there is only one team member.
* Fixed: HTML is FAQ Answer are not working.
* Fixed: Task time entry note not showing properly.
* Fixed: Hide time entries in client dashboard checkbox issue.
* Fixed: Company email in contract is having http prefix.
* Fixed: HTML markup which causes Metaboxes hidden on Edit Client.
* Fixed: PHP errors on Project Updates metabox on Projectopia Dashboard.
* Fixed: Quotes showing wrong email link.

= 5.0.6 =
Release Date: February 9, 2022

* Added: Option to Customize Projectopia Client Dashboard Theme Font Family and Theming.
* Added: Turkish Lara Currency Support.
* Fixed: Fatal Error on Ticket update metabox.
* Fixed: Missing credit card number input in Stripe subscription.
* Fixed: Invoice Footer address showing HTML br tag instead of comma.
* Fixed: Hide time entries in client dashboard checkbox issue.
* Fixed: Form Builder checkbox group Enable "Other" is not working.
* Fixed: Overlapping of contents in columns in Projects view.
* Fixed: Clear notification "Mark as Read" button not removing count.
* Fixed: Invoice line item column sizes to make Description field bigger.
* Fixed: Issue with assigning team member as Project Manager.

= 5.0.5 =
Release Date: January 20, 2022

* Fix Broken Form Builder Layout.
* Kanban Board Integration.
* Several Bug Fixes.

= 5.0.4 =
Release Date: December 29, 2021

* Added Upgrade Link.
* Bug Fixes.

= 5.0.3 =
Release Date: December 28, 2021

* Fixed default settings import process.
* Addons Compatibility.
* Bug Fixes.

= 5.0.2 =
Release Date: December 21, 2021

* Bug Fixes.

= 5.0.1 =
Release Date: December 20, 2021

* Make Code Compatible with WPCS.
* Fixed issue with Duplicate Page creation on activation.

= 5.0.0 =
Release Date: October 22, 2021

=======
=== Projectopia - Project Management Tool ===
Contributors: projectopia
Tags: project, project management
Requires at least: 5.3
Tested up to: 7.1
Stable tag: 5.1.26
Requires PHP: 7.4
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl.html

the Ultimate WordPress Project Management Plugin for WordPress.

== Description ==

### Projectopia - the Ultimate WordPress Project Management Plugin

Freelancer or agency, this WordPress plugin will help you to run your business efficiently and effectively, providing all of the tools that you need to communicate with your clients and your team. Keep all your information in one place, easily accessbile and conveniently placed on your own WordPress website.

#### What does this plugin do?

Never again lose a client owing to silly reasons. Use Projectopia and its Project Management Tools to always stay updated with the latest advancements and track your team�s progress.Projectopia is a powerhouse that assists you in managing. Its leading features include: Adding Team embers, Client anagement, Generating Leads, Time-Tracking Projects, Setting up ilestones/Tasks, Generating Invoices, Raising Support Tickets, and much more.

#### Compatibility

* This plugin is fully compatible with WordPress Version 5.3.0 and beyond and also compatible with any WordPress theme.
* Fully compatible with Yoast SEO, Rank Math, All in One SEO Pack, SEOPress, Schema and other many plugins.

## 🌐 Our Products

If you like this plugin, consider exploring our other themes and plugins:

🧱 [Gutena](https://wordpress.org/themes/gutena/) - A full site editing (block) theme for WordPress with ready made full page templates. Elegant and functional - follows all the best practices by WP, and yeah, no jQuery!

⏱️[Quiz and Survey Master](https://wordpress.org/plugins/quiz-master-next/) - Best WordPress Quiz Plugin to create engaging quizzes, surveys, & exams using WordPress and convert your website into a lead generation machine.

☰ [Responsive Menu](https://wordpress.org/plugins/responsive-menu/) - Best WordPress Menu Builder Plugin to create awesome and interactive mobile & desktop menus for WordPress websites.

📅 [Booking Ultra](https://wordpress.org/plugins/booking-ultra-pro/) - Appointment Booking plugin for WordPress - Show a quick form to accept bookings for your services with pre-set booking slots. Ideal for salons, medical professionals, lawyers, consultants, etc.

⚡ [InstaWP](https://instawp.com/) - Launch a quick WordPress site with this sandbox service. Create New WordPress instance within a second.

== Installation ==

1. Visit 'Plugins > Add New'.
1. Search for 'Projectopia' and install it.
1. Or you can upload the `projectopia-core` folder to the `/wp-content/plugins/` directory manually.
1. Activate Projectopia from your Plugins page.
1. After activation go to 'Sidebar > Projectopia'.
1. Enable options and save changes.

== Frequently Asked Questions ==

= Is there any admin interface for this plugin? =

Yes. You can access this from 'Sidebar > Projectopia'.

= How to use this plugin? =

Go to 'Sidebar > Projectopia', enable/disable options as per your need and save your changes.

= Is this plugin compatible with any themes? =

Yes, this plugin is compatible with any theme. Also, compatible with Genesis, Divi themes.

= The plugin isn't working or have a bug? =

Post detailed information about the issue in the [support forum](https://wordpress.org/support/plugin/projectopia-core) and Out Team will work to fix it.

== Screenshots ==

1. Dashboard - Overview the Income, Open Tasks, Projects & More
2. Calendar - View Due Invoices, Milestones, Projects & Tasks
3. Tasks - View, Edit & Add Tasks, Add Deadlines, & View Progress
4. Leads -  View, Edit & Add Leads, Add Files, & Notes
5. Clients - View, Edit & Add Clients, Send Alerts, Invoices & Project Updates
6. Quotes & Estimates - View, Edit & Add Quotes & Estimates
7. Milestone Templates - View, Edit & Add Milestone Templates
8. All Projects - View, Edit & Add Projects, Specify Project Type, Update Status, etc.
9. Project Updates - Viel all the Project Updates with Specific Details
10. Invoices - View, Generate & Send Invoices to Clients
11. Team Members - View & Add Team Members
12. FAQs - Set Project FAQs
13. Adding New Project 
14. Adding New Project - Project Brief

== Changelog ==

= 5.1.26 =
Release Date: October 24, 2026

Fixed
- Project creation and update times showing several hours earlier than they actually happened, on the client dashboard and in Dashboard -> Project Updates. Projects created from a WooCommerce order were storing a time that had the site's timezone applied twice. Requires the matching WooCommerce Add-On update.
- Activity log entries filed under the wrong day. The date heading was worked out in UTC while the time beside it used the site timezone, so anything recorded late in the evening appeared under the next day.
- The "Yesterday" heading never appeared in activity logs, project updates, quote messages or task messages. Yesterday's entries showed a plain date instead.
- Invoice due dates on the client dashboard ignored the plugin's date format setting and could show a day early.
- "Days to Launch" showing a nonsense figure of roughly 20,700 days on projects with no finish date. An empty date was being read as 1 January 1970 and counted from there. Projects with no finish date now fall back to their last milestone deadline, so existing projects get a real countdown without any change to stored data, and only show N/A when there is genuinely no date to count towards. Projects created from a WooCommerce order using a Milestone/Task Template were the common case, because the add-on never set a finish date; it now records one from the template milestones as well.
- Translation tools such as Loco Translate could not read the plugin's text, reporting "No translations found" and blocking edits with "File access disallowed". The bundled Freemius library's own translations were being mistaken for the plugin's. A translation manifest (loco.xml) now points these tools at the correct template and excludes the bundled third-party libraries, so the plugin's labels can be translated or renamed normally.

Added
- Clients can mark their own tasks as complete from their dashboard. Off by default, enable in Settings -> Client Dashboard.
- Clients can mark their own milestones as complete. Separate setting, also off by default.
- Setting to restrict completing tasks and milestones to team members, administrators and the client the project belongs to.
- Setting to block Projectopia actions for logged-in users who are neither a team member nor a client. Login, registration and password reset are unaffected.
- Clearer messages when an action is refused, telling the user whether the feature is switched off or their account is not linked to a client or team member record.

Security
- Completing a task or milestone now confirms the user is entitled to act on that item. Previously any signed-in user could complete any task, which could also roll a milestone to complete and raise a milestone completion invoice.
- Clients can only act on projects belonging to their own client record. This applies regardless of the settings above.
- A project reference sent with a completion request is no longer trusted from clients, so an activity entry cannot be written into another project's log.
- Client contact management is no longer reachable by logged-out visitors. Adding, editing and removing client contacts, and updating a client profile, were registered for logged-out visitors and protected only by a nonce that the plugin prints on the public registration, quote and lead forms. Anyone able to load one of those pages could change or delete the WordPress account behind a client contact, and the edit handler would then issue a login cookie for that account. Reported privately against 5.1.25.2 by an external reviewer.
- Managing a client contact now requires either the client-editing capability or ownership of the client record in question, and the contact must belong to the client named in the request, so one client cannot reach another client's contacts.
- A contact entry that points at an administrator account is refused, closing a privilege-escalation route through client contact editing.
- Removing a client contact can no longer delete the client's main contact account, a team member, or an administrator through that handler; only ordinary contact accounts can be removed this way.
- Changing a password only re-issues a login cookie when the user is changing their own. Previously an administrator who set a contact's password was silently signed in as that contact.
- Clearing a client alert now requires rights over that client record.
- Creating tasks, listing tasks across the whole install, and sending contract emails are restricted to team members. All three were reachable without signing in.

Updated
- Tested against WordPress 7.1 on PHP 7.4 and PHP 8.5.12, with WooCommerce and all twelve Projectopia add-ons active. Syntax checked across PHP 7.4, 8.2, 8.3, 8.4 and 8.5.12.
- Minimum PHP raised from 5.6 to 7.4. The plugin has not actually run on PHP 5.6 for several releases: the PHP 8 compatibility work in 5.1.21 and 5.1.24 introduced null coalescing operators that PHP 5.6 cannot parse, and the bundled PDF library needs PHP 7 as well. The requirement is now declared in the plugin header as well as the readme, so WordPress blocks activation on an unsupported version instead of the site failing at load. Add-ons declare the same requirement.

= 5.1.25.2 =
Release Date: April 29, 2026

Fixed
- File uploads failing on cached sites (Cloudflare, Cloudways, LiteSpeed). Uploads now bypass cached page tokens and work reliably.
- Profile photo upload getting stuck on "Uploading..." with no error message.
- Profile photo showing a broken image preview after upload on sites with a non-standard thumbnail size.
- Client Files and Task Files not appearing on the client dashboard after clicking "Submit Files".
- Admin list tables (Teams, Clients, Projects, Quotes, Invoices, Leads, Tickets, Tasks, Bugs, Lead Forms, FAQs) appearing detached from the page and floating when scrolling. Caused by a styling conflict with some other plugins or themes.
- "Allowed file types" hint showing an empty list on some sites, which caused every upload to be rejected.
- Long "Allowed file types" text overflowing the upload box on narrow screens — it now wraps cleanly.
- Clearer upload error messages: the user is now told exactly why an upload was rejected (wrong file type, file too large, session expired, etc.) instead of a generic error.

Added
- A hint below every upload field showing the allowed file types and your server's maximum upload size.
- A live upload progress counter — shows percentage and size (e.g. "Uploading… 42% (4.2 MB / 10.0 MB)") so users see real feedback on large files instead of a frozen badge. Switches to "Processing…" once the file has finished transferring.
- Profile pictures and avatars are now limited to image files only (JPG, JPEG, PNG, GIF, WebP, AVIF, BMP, ICO). The file picker also pre-filters to images so users can't pick a PDF or video by mistake.
- The Company Logo, Dashboard Logo, Invoice Logo and Login/Register Background fields in plugin settings are now restricted to image files only, with the same protection.
- A progress overlay when saving the plugin settings page with a new logo or background image. Shows upload percentage and size, then "Processing…" while WordPress finishes saving.
- Files are now checked against allowed types and size BEFORE upload starts — if the file isn't allowed, the user sees the error immediately instead of waiting for the upload to finish.

Updated
- Expanded the default list of allowed file extensions to include modern image formats (WebP, AVIF, BMP, ICO), more document formats (ODT, PPT/PPTX, PPS/PPSX, PSD), all common audio/video formats (MP3, M4A, OGG, WAV, FLAC, MP4, MOV, AVI, etc.) and additional archives (GZ, RAR).
- Existing sites get these new extensions automatically on update without losing any custom additions.
- Logo upload fields on the settings page now also accept modern image formats (WebP, AVIF, BMP) in addition to JPG/PNG/GIF.

= 5.1.24 =
Release Date: March 20, 2026

* Fixed: Replaced deprecated FILTER_SANITIZE_STRING (removed in PHP 8.2) with sanitize_text_field() + wp_unslash() across quote_functions.php, ticket_functions.php, and initial-settings.php
* Fixed: File uploads now work correctly for client users on async-upload.php via user_has_cap filter
* Fixed: Stripe SDK duplicate class collision (E_COMPILE_ERROR) when pto-subscriptions addon is active
* Fixed: CPT rewrite rules now auto-flush when addons are activated, resolving 404 errors on support ticket, quote, and invoice URLs
* Fixed: Quote email now shows specific error when client record has no email address, instead of generic settings message
* Fixed: Days until launch shows 0 instead of misleading countdown for completed/closed projects
* Fixed: foreach() warning - added is_array() guard on json_decode() result in invoice_cd.php, fe/invoice.php, and client-dashboard/client-settings.php to prevent "argument must be of type array|object, string given" errors
* Fixed: foreach() warning - fixed $weights fallback from empty string to array() in template_functions.php
* Fixed: foreach() warning - added is_array() guard on $quote_elements in quote_functions.php
* Fixed: foreach() warning - added is_array() guard on $field->values for checkbox-group, radio-group, and select field types in invoice_cd.php
* Tested and confirmed compatible with PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4

= 5.1.23 =
Release Date: February 09, 2026
* Fixed: Email sanitization - Fixed error that was causing blocking sending Quote Emails
* Fixed: Invoice Project details - Fixed PHP 8 compatibility, cannot access offset of type string for empty project details on invoice edit page
* New feature: Payment history added to invoices - Added toggle to enable payment history in invoices is available in invoice settings
* New feature: Projectopia Admin dashboard icon - Added toggle to hide or display for (all/admin/non-admin) users in admin dashboard settings
* New feature: Projectopia Admin dashboard notices - Added toggle to h or display for (all/admin/non-admin) users in admin dashboard settings
* New feature: Projectopia Admin dashboard screen options - Added toggle to hide or display for (all/admin/non-admin) users in admin dashboard settings

= 5.1.22 =
Release Date: December 16, 2025
* Fixed: PHP 8 compatibility for settings page

= 5.1.21 =
Release Date: December 15, 2025
* Fixed: Freemius SDK 2.1.30 file error.

= 5.1.20 =
Release Date: December 12, 2025
* Fixed: Security improvements - Fixed the CVE-2025-12876 vulnerability. Stricter checks for file deletion
* Fixed: Security improvements - Improved the sanitization checks for the register_setting() function
* Fixed: Removed deprecated load_plugin_textdomain action hook. This is now handled by WordPress as of version 4.6
* Updated: Freemius SDK to v2.13.0 (version updated December 2025)

= 5.1.19 =
Release Date: September 12, 2025
* Fixed: Mark as Signed Off button's undefined array error

= 5.1.18 =
Release Date: May 12, 2025
* Fixed:Security Improvements

= 5.1.17 =
Release Date: April 30, 2025
* Fixed:Security Improvements

= 5.1.16 =
Release Date: March 4, 2025
* Fixed: Invoice PDF download issue, refactored hardcoded URLs, oversized logo on the contract page, and deprecated automatic conversion of "false" to an array.

= 5.1.15 =
Release Date: January 30, 2025
* Fixed: Freemius SDK file refactored.

= 5.1.14 =
Release Date: January 29, 2025
* Fixed: Freemius SDK file missing issue.

= 5.1.13 =
Release Date: January 27, 2025
* Fixed: Update Freemius SDK to patch the XSS vulnerability.

= 5.1.12 =
Release Date: January 15, 2025
* Fixed: Broken team member column in task list.

= 5.1.11 =
Release Date: December 27, 2024
* Fixed: Fatal errors occur when adding a second contact for a client.

= 5.1.10 =
Release Date: December 12, 2024
* Fixed: Fatal error in Stripe SDK implementation

= 5.1.9 =
Release Date: December 02, 2024
* Fixed: Stripe is enabled, but the client’s address is empty.

= 5.1.8 =
Release Date: November 10, 2024
* Fixed: Resolve security patch in ajax request 'pto_reset_password'

= 5.1.7 =
Release Date: October 15, 2024
* Fixed: Resolve 'admin_body_class' filter issue


= 5.1.6 =
Release Date: February 7, 2024
* Fixed: Speed up the product to be more “snappy”
* New:   Allow for creation of multiple kanban boards.
* Compatible with WordPress v6.4.

= 5.1.5 =
Release Date: July 5, 2023

* Fixed: Undefined variable issue `$post_currency`.
* Fixed: Outstanding Invoice Widget not working.
* Fixed: Income by Month Widget issues.
* Fixed: Remove Convert to CQPIM Team Member from Users List page.
* Fixed: Show language in Projectopia Client dashboard base on user setting.
* Fixed: Multiple Selection Issue in Quote Form Builder.
* Fixed: Google reCaptcha was not showing on frontend in some cases.
* Added: A new action `pto_after_update_summary_details`.
* Updated: Freemius SDK to v2.5.10.

= 5.1.4 =
Release Date: April 13, 2023

* Fixed: Column sorting issue for invoice.
* Tweak: Change instawp domain extention.
* Updated: Freemius SDK to v2.5.6.
* Compatible with WordPress v6.2.

= 5.1.3 =
Release Date: December 15, 2022

* Fixed: Fatal error when uploading file in manually created lead.
* Updated: Freemius SDK to v2.5.3.
* Compatible with WordPress v6.1.
* PHP 8.1 Compatibility.

= 5.1.2 =
Release Date: September 9, 2022

* Added: Kanban Board Permission Support.
* Updated: Freemius SDK to v2.4.5.

= 5.1.1 =
Release Date: July 27, 2022

* Added: Info to indicate a quote is converted to a project.
* Improved: Login and Register page display style.
* Improved: Make some un-translable stings translable.
* Fixed: Issue where Ticket status is not displaying properly if there is custom status key is set.
* Tweak: Restricted the ability to change support ticket status key only for in-built statueses.
* Fixed: Notification count issues.
* Fixed: License related logic.
* Fixed: Cannot delete notification when in Kanban view.
* Fixed: Add-on not showing up after activation.
* Fixed: Client Contact issue.
* Fixed: Add Team Member popup CSS issue.
* Fixed: Fatal Error when uploading file to a task.
* Fixed: Calendar links within Edit Team Member is not working.
* Fixed: Edit Quote UI and CSS issue.
* Fixed: Wrong tooltips.
* Fixed: Some Typos.
* Updated: Freemius SDK to v2.4.4.

= 5.1.0 =
Release Date: May 24, 2022

* Fixed: Unchecking the Option `Automatically recalculate task dates` was not working.
* Fixed: Fatal Error on Project edit.
* Fixed: Project Files upload 500 error.
* Fixed: Wrong notification count on project list page.
* Fixed: Unable to sort Project using Title filter.
* Fixed: Notification counter number was not dynamically updated.
* Fixed: Notification counter number was not dynamically updated.
* Fixed: Email Password setting to change to input type password.
* Fixed: Wrong message count showing in Project List Page.
* Compatible with WordPress v6.0.

= 5.0.9 =
Release Date: April 27, 2022

* Fixed: Partial Invoices issue.
* Fixed: Fatal Error on Invoice Creation and Save.
* Fixed: Updated Metabox Loading Order.
* Fixed: Client Dashboard default font.

= 5.0.8 =
Release Date: April 20, 2022

* Added: Option under Projectopia Settings > Client Dashboard to change Login / Register Page Backgorund Color.
* Fixed: Mixed up in password reset and create account forms.
* Fixed: No Role showing up on team member list if multiple roles were assigned.
* Fixed: Client Details not showing on Project list.
* Fixed: Custom Fields not showing up if quotes were present on field label.
* Fixed: Milestone dates are different after importing milestone template.
* Fixed: Customer name and Customer billing email address is not recorded in Stripe account.
* Fixed: Calendar translation issue.
* Fixed: CSS Issues.
* Updated: Stripe SDK to make this plugin fully compatible with PHP v8.0.

= 5.0.7 =
Release Date: February 25, 2022

* Fixed: Cannot set team member as project manager if there is only one team member.
* Fixed: HTML is FAQ Answer are not working.
* Fixed: Task time entry note not showing properly.
* Fixed: Hide time entries in client dashboard checkbox issue.
* Fixed: Company email in contract is having http prefix.
* Fixed: HTML markup which causes Metaboxes hidden on Edit Client.
* Fixed: PHP errors on Project Updates metabox on Projectopia Dashboard.
* Fixed: Quotes showing wrong email link.

= 5.0.6 =
Release Date: February 9, 2022

* Added: Option to Customize Projectopia Client Dashboard Theme Font Family and Theming.
* Added: Turkish Lara Currency Support.
* Fixed: Fatal Error on Ticket update metabox.
* Fixed: Missing credit card number input in Stripe subscription.
* Fixed: Invoice Footer address showing HTML br tag instead of comma.
* Fixed: Hide time entries in client dashboard checkbox issue.
* Fixed: Form Builder checkbox group Enable "Other" is not working.
* Fixed: Overlapping of contents in columns in Projects view.
* Fixed: Clear notification "Mark as Read" button not removing count.
* Fixed: Invoice line item column sizes to make Description field bigger.
* Fixed: Issue with assigning team member as Project Manager.

= 5.0.5 =
Release Date: January 20, 2022

* Fix Broken Form Builder Layout.
* Kanban Board Integration.
* Several Bug Fixes.

= 5.0.4 =
Release Date: December 29, 2021

* Added Upgrade Link.
* Bug Fixes.

= 5.0.3 =
Release Date: December 28, 2021

* Fixed default settings import process.
* Addons Compatibility.
* Bug Fixes.

= 5.0.2 =
Release Date: December 21, 2021

* Bug Fixes.

= 5.0.1 =
Release Date: December 20, 2021

* Make Code Compatible with WPCS.
* Fixed issue with Duplicate Page creation on activation.

= 5.0.0 =
Release Date: October 22, 2021
* Inital Release on WordPress.org.