=== Projectopia - Project Management Tool ===
Contributors: projectopia
Tags: project, project management
Requires at least: 5.3
Tested up to: 6.9
Stable tag: 5.1.25.2
Requires PHP: 5.6
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.25.2 =
Release Date: April 29, 2026

* Fixed: Client file uploads failing on sites with page caching (Cloudflare, Cloudways, LiteSpeed, etc.) due to stale nonces — uploads now use a custom AJAX handler with nonce refresh instead of async-upload.php
* Fixed: Avatar photo upload on client settings page stuck on "Uploading..." with no error feedback — added missing error callback
* Fixed: Admin list tables (teams, clients, projects, quotes, invoices, leads, tickets, tasks, bugs, lead forms, FAQs) detaching from page flow — stretching full-width and floating on scroll — due to third-party plugins/themes defining a global `.fixed` utility class that collided with WordPress core's `.fixed` table-layout class
* Fixed: Broken image placeholder after avatar upload when site's thumbnail size is not 150x150 or the uploaded file is not an image — server now returns the actual thumbnail URL instead of having JS guess a filename
* Improved: Upload error messages now show the specific reason for failure (e.g. disallowed file type, authentication expired) instead of a generic error
* Added: Every file upload input now displays a hint beneath it showing the allowed extensions and the server's effective max upload size (min of upload_max_filesize and post_max_size)
* Added: Live upload progress counter — shows percentage and bytes transferred (e.g. "Uploading... 42% (4.2 MB / 10.0 MB)") during file uploads, so users get visual feedback on large files instead of a frozen "Uploading..." badge. Switches to "Processing on server..." once the bytes are transferred and the server is finishing up (thumbnail generation etc.)
* Added: Profile picture / avatar uploads are now restricted to image formats only (jpg, jpeg, png, gif, webp, avif, bmp, ico) — prevents users from accidentally uploading PDFs, videos or archives as profile photos. The file picker dialog also pre-filters to image files via the native `accept` attribute.
* Added: Company Logo, Dashboard Logo, Invoice Logo and Login/Register Background Image inputs on the Projectopia settings page now also restrict to image types via the `accept` attribute.
* Added: Progress overlay for settings-page image uploads (Company Logo, Dashboard Logo, Invoice Logo, Login/Register Background). When the form is saved with a file attached, a modal overlay shows live upload percentage and bytes transferred, then switches to "Processing on server..." while WordPress finalises the save.
* Updated: Settings-page image validators (Company Logo, Dashboard Logo, Login/Register Background, Invoice Logo) now accept modern raster formats (webp, avif, bmp) in addition to jpg/jpeg/png/gif. Validation is centralised in a single pto_is_allowed_logo_image() helper that checks the filename extension as the source of truth and cross-checks the reported MIME type. SVG and ICO are intentionally excluded (SVG for XSS safety, ICO as not useful for logos).
* Fixed: Client Files and Task Files not showing in the client dashboard after "Submit Files" was clicked — on PHP 8+, assigning to an array key on the fe_files meta (which starts life as an empty string) silently no-op'd, so files were never flagged as visible. fe_files is now initialised to an array when missing. Also added clean_post_cache() after the direct SQL post_parent update so attachments appear immediately on page reload without a stale-cache delay.
* Fixed: Upload hint and server-side extension validator could show an empty "Allowed file types" list (and reject every upload with "Permitted types:" followed by nothing) when the cqpim_allowed_extensions option was saved as an empty string. Added pto_get_allowed_extensions() helper that falls back to the hard-coded default whenever the option is missing or empty; the v5.1.25 migration now also self-heals the option if it's currently empty.
* Added: Client-side pre-flight validation before starting an upload — if the selected file's extension is not in the allowed list, or the file is larger than the server's max upload size, the user sees the error immediately without any bytes being transferred. Saves time on large disallowed files.
* Fixed: Long allowed-extensions text overflowing narrow upload containers — added overflow-wrap/word-break CSS to .pto-upload-hint and the .cqpim-alert family across admin and frontend stylesheets so the comma-separated list wraps cleanly inside its container instead of pushing past the right edge.
* Updated: Allowed file extensions expanded to include jpeg, ico, webp, avif, bmp, odt, ppt, pptx, pps, ppsx, psd, mp3, m4a, ogg, wav, flac, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, gz, rar
* Updated: Existing installs automatically receive the new allowed extensions on upgrade (merged with any custom extensions)

= 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: 6.9
Stable tag: 5.1.25.2
Requires PHP: 5.6
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.25.2 =
Release Date: April 29, 2026

* Fixed: Client file uploads failing on sites with page caching (Cloudflare, Cloudways, LiteSpeed, etc.) due to stale nonces — uploads now use a custom AJAX handler with nonce refresh instead of async-upload.php
* Fixed: Avatar photo upload on client settings page stuck on "Uploading..." with no error feedback — added missing error callback
* Fixed: Admin list tables (teams, clients, projects, quotes, invoices, leads, tickets, tasks, bugs, lead forms, FAQs) detaching from page flow — stretching full-width and floating on scroll — due to third-party plugins/themes defining a global `.fixed` utility class that collided with WordPress core's `.fixed` table-layout class
* Fixed: Broken image placeholder after avatar upload when site's thumbnail size is not 150x150 or the uploaded file is not an image — server now returns the actual thumbnail URL instead of having JS guess a filename
* Improved: Upload error messages now show the specific reason for failure (e.g. disallowed file type, authentication expired) instead of a generic error
* Added: Every file upload input now displays a hint beneath it showing the allowed extensions and the server's effective max upload size (min of upload_max_filesize and post_max_size)
* Added: Live upload progress counter — shows percentage and bytes transferred (e.g. "Uploading... 42% (4.2 MB / 10.0 MB)") during file uploads, so users get visual feedback on large files instead of a frozen "Uploading..." badge. Switches to "Processing on server..." once the bytes are transferred and the server is finishing up (thumbnail generation etc.)
* Added: Profile picture / avatar uploads are now restricted to image formats only (jpg, jpeg, png, gif, webp, avif, bmp, ico) — prevents users from accidentally uploading PDFs, videos or archives as profile photos. The file picker dialog also pre-filters to image files via the native `accept` attribute.
* Added: Company Logo, Dashboard Logo, Invoice Logo and Login/Register Background Image inputs on the Projectopia settings page now also restrict to image types via the `accept` attribute.
* Added: Progress overlay for settings-page image uploads (Company Logo, Dashboard Logo, Invoice Logo, Login/Register Background). When the form is saved with a file attached, a modal overlay shows live upload percentage and bytes transferred, then switches to "Processing on server..." while WordPress finalises the save.
* Updated: Settings-page image validators (Company Logo, Dashboard Logo, Login/Register Background, Invoice Logo) now accept modern raster formats (webp, avif, bmp) in addition to jpg/jpeg/png/gif. Validation is centralised in a single pto_is_allowed_logo_image() helper that checks the filename extension as the source of truth and cross-checks the reported MIME type. SVG and ICO are intentionally excluded (SVG for XSS safety, ICO as not useful for logos).
* Fixed: Client Files and Task Files not showing in the client dashboard after "Submit Files" was clicked — on PHP 8+, assigning to an array key on the fe_files meta (which starts life as an empty string) silently no-op'd, so files were never flagged as visible. fe_files is now initialised to an array when missing. Also added clean_post_cache() after the direct SQL post_parent update so attachments appear immediately on page reload without a stale-cache delay.
* Fixed: Upload hint and server-side extension validator could show an empty "Allowed file types" list (and reject every upload with "Permitted types:" followed by nothing) when the cqpim_allowed_extensions option was saved as an empty string. Added pto_get_allowed_extensions() helper that falls back to the hard-coded default whenever the option is missing or empty; the v5.1.25 migration now also self-heals the option if it's currently empty.
* Added: Client-side pre-flight validation before starting an upload — if the selected file's extension is not in the allowed list, or the file is larger than the server's max upload size, the user sees the error immediately without any bytes being transferred. Saves time on large disallowed files.
* Fixed: Long allowed-extensions text overflowing narrow upload containers — added overflow-wrap/word-break CSS to .pto-upload-hint and the .cqpim-alert family across admin and frontend stylesheets so the comma-separated list wraps cleanly inside its container instead of pushing past the right edge.
* Updated: Allowed file extensions expanded to include jpeg, ico, webp, avif, bmp, odt, ppt, pptx, pps, ppsx, psd, mp3, m4a, ogg, wav, flac, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, gz, rar
* Updated: Existing installs automatically receive the new allowed extensions on upgrade (merged with any custom extensions)

= 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.