=== PinOnion — Visual Client Feedback ===
Contributors: onionreactor
Tags: review, feedback, client feedback, design, collaboration
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 0.9.3
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Self-hosted visual feedback for WordPress. Clients pin comments directly on the page. Your data stays on your server.

== Description ==

Currently in Open Beta (v0.9.3). The plugin is completely free to use without limitations while we gather feedback from the community for our upcoming v1.0 release. Try it out, and let us know what features you'd like to see.

PinOnion is a visual feedback tool that lets you and your clients drop feedback pins directly onto any element of your live WordPress website, comment on them, and track them through to done. Stop wasting time with spreadsheets and endless email chains.

Key Features:

* **Visual Pinning:** Click anywhere on your site to leave a comment attached to that specific HTML element. Pins can be dragged to a new spot after placement, and their description edited later.
* **Guest Feedback Links:** Generate a shareable link, or send a personal email invite, so clients can drop pins and comment without ever creating an account.
* **Task Management:** Mark pins as Open, In Progress, or Done, tag them as General, Design, or Content feedback, and flag the urgent ones.
* **Team Mentions:** Type @ in a comment to notify a teammate, and get a daily email digest of the previous day's activity plus a summary of anything you were mentioned in.
* **Image Attachments:** Attach a screenshot (JPG, PNG, GIF, or WebP, up to 5 MB) directly to a pin or comment.
* **Technical Context:** Every pin automatically records the reporter's browser, OS, viewport size, and pixel ratio, so you know exactly what they saw.
* **Modern Interface:** A sleek, floating interface that stays out of your way, with a settings page for roles, appearance, and notifications.
* **No Third-Party Tracking:** All your data stays securely on your own server.

== Installation ==

1. Upload the plugin files to the `/wp-content/plugins/pinonion` directory, or install the plugin through the WordPress plugins screen directly.
2. Activate the plugin through the 'Plugins' screen in WordPress.
3. Go to **Settings > PinOnion** to configure who can leave feedback.
4. Visit the front-end of your site and start dropping pins!

== Frequently Asked Questions ==

= Is this plugin free? =

Currently, PinOnion is in an Open Beta phase (v0.9.3), meaning all features are 100% free with no limitations. In the future, a premium/Pro version with advanced features will be introduced, but a robust free version will always remain available here.

= Can guest users leave feedback? =

Yes! You can generate a unique Guest Link in the PinOnion settings — or invite a guest by email and their personal link is sent automatically. Guests drop pins without creating an account; they simply type their display name the first time they comment.

= Does it work with page builders? =

Yes, PinOnion works as an overlay on top of your existing site, meaning it is perfectly compatible with Elementor, Divi, Gutenberg, and almost all other page builders and themes.

= Where is the data stored? =

All pins, comments, and feedback are stored entirely within your own WordPress database. We do not use external APIs or SaaS platforms to store your data, ensuring your clients' privacy.

= How do I control who can see or leave pins? =

You can easily configure user roles in the PinOnion settings page. You define which roles act as "Developers" (can see and manage all pins across the site) and which act as "Clients" (can only see and manage their own pins).

= Will this slow down my website? =

Not at all. The PinOnion scripts and styles are strictly loaded only for logged-in users who have permission to use the tool. Your regular website visitors will not download any extra code.

= Can clients close or resolve their own feedback? =

Yes, by default clients can mark their own pins as "Done". However, if you prefer strict control, you can disable this in the settings so only Developers can close tasks.

= What happens if I uninstall the plugin? =

By default, your feedback data is kept safe in the database in case you want to reinstall later. If you want to permanently wipe all pins, comments, and settings, you can enable the "Delete data on uninstall" option in the Advanced settings before removing the plugin.

== Source Code ==

PinOnion ships human-readable, unminified code — there is no build or bundling step; the JavaScript and CSS files in `assets/` are the source files themselves, exactly as written.

The only minified file is the bundled third-party browser-detection library `assets/js/vendor/ua-parser.min.js` (UAParser.js v1.x, MIT license). Its full source code is available at https://github.com/faisalman/ua-parser-js

== Screenshots ==

1. Dropping a new feedback pin on a live webpage.
2. The interactive PinOnion dashboard to manage open tasks.
3. Plugin settings page.
== Changelog ==

= 0.9.3 =
* Feature: Added Guest Link support. You can now generate a unique link to let clients drop pins without logging in.
* Feature: Guest invites by email — enter the guest's email address under Settings → Guest Links and their personal link is sent out right away, with the send time recorded and a one-click Resend.
* Feature: Guests are asked for their display name before their first pin (remembered in their browser). Invited guests' names are also bound to their invite link, so they are recognised on any device and listed by name in the admin.
* Feature: Developers can share the guest link straight from the front-end speed dial; the link is created on demand if none exists yet.
* Improvement: The guest onboarding banner is dismissible and stays dismissed; leaving feedback mode is now an explicit "Exit feedback mode" action in the speed dial.
* Fix: Guest comment authors were saved with an empty name.
* Fix: The pin pager no longer overlaps the guest banner.
* Fix: The pin share modal now has proper styling.
* Security: The guest session cookie is now HttpOnly with SameSite=Lax, and the guest's display name is no longer carried in the URL.
* Maintenance: Uninstalling the plugin now also removes guest links.
* Feature: Daily email digest — get a summary of the previous day's pins and comments delivered to your inbox every morning (configurable under Settings → Notifications).
* Feature: Pin types — mark a pin as Design or Content feedback when creating it; a badge is shown in the pin list and detail view.
* Feature: @ mentions — type @ in any pin description or comment to mention a teammate from an autocomplete list.
* Feature: Pins can now be moved after placement — drag your own pin to a new position (developers can move any pin).
* Feature: Authors can now edit their own pin description after submitting it (previously developer-only).
* Feature: Technical metadata capture — each pin now records the reporter's browser, OS, viewport size and pixel ratio, visible to developers in the pin detail view.
* Improvement: Redesigned settings page with tabs (Roles & Permissions, Appearance, Notifications, Advanced).
* Improvement: Edited pin descriptions now show an "Edited" indicator with timestamp.
* Feature: Image attachments — attach a JPG/PNG/GIF/WebP image (max 5 MB) to a pin or comment; images are stored in the WP media library and shown as inline thumbnails.
* Improvement: The pin marker is now visible at the drop point while composing a new pin, with a pop-in and pulse animation.
* Fix: The floating action button no longer overlaps the review panel — it slides aside when the panel opens.

= 0.9.2 =
* Fix: Removed invalid Plugin URI from header.
* Fix: Updated JavaScript localization object name to use the correct plugin prefix to comply with WordPress.org guidelines.
* Fix: Resolved WordPress Plugin Check (PCP) TextDomainMismatch errors by standardizing the plugin directory name.
* Refactor: Addressed static code analysis warnings (SonarCloud) to improve maintainability and reduce technical debt.
* Maintenance: Fixed nested ternary operations, missing braces, and normalized mixed line endings in core files.

= 0.9.1 =
* Renamed plugin to PinOnion Website Review to resolve trademark issues.
* Security: Updated REST API permissions to correctly verify specific plugin roles.
* Maintenance: Improved enqueueing of admin scripts and styles.

= 0.9.0 =
* Initial public release on WordPress.org
