=== Kovetto Konnect ===
Contributors: kovetto
Tags: feedback, review, qa, annotation, client feedback
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Pair a WordPress site to a Kovetto project so invited reviewers can leave visual feedback on the live site — markers, text, audio — without screenshots.

== Description ==

Kovetto Konnect is the WordPress companion to [Kovetto](https://kovetto.com). It bridges the gap between "I want feedback on a screenshot" and "I want feedback on the actual production site, including logged-in pages and dynamic content."

How it works:

1. In Kovetto, open a project and copy the Site Token from the Konnect tab.
2. Install this plugin, go to Settings → Kovetto Konnect, and paste the token.
3. In Kovetto, create a Live-Website session and invite reviewers by name.
4. Each reviewer receives a magic link of the form `https://your-site.com/?kovetto=<token>`.
5. When they open it, a lightweight overlay appears, lets them click a spot on the page, type or record audio, and submit. Feedback lands in Kovetto with a real screenshot of what the reviewer saw.

Using this plugin requires a free Kovetto account (no credit card required).

= Designed to be safe and lightweight =

* No widget JS or CSS is loaded on normal page views — only when the magic-link parameter is present.
* The widget is wrapped in a Shadow DOM so it cannot conflict with theme or page-builder CSS.
* Compatible with Elementor, Divi, Beaver Builder, Bricks, Oxygen, WPBakery, Brizy, Thrive, and Gutenberg. The widget never loads inside their edit modes.
* No custom database tables. A single non-autoloaded option holds the Site Token.
* No jQuery dependency, no third-party trackers, no analytics.
* The Site Token never reaches the browser — every call to Kovetto is server-to-server.
* All scripts are loaded from the plugin folder — nothing is loaded from a CDN.

= Third-party libraries =

This plugin bundles [html2canvas](https://html2canvas.hertzen.com/) version 1.4.1 (MIT license, GPL-compatible) to capture the optional page screenshots. The full unminified source code is available at [github.com/niklasvh/html2canvas](https://github.com/niklasvh/html2canvas). The library is served from the plugin folder only and is loaded lazily, only when a reviewer submits feedback.

== External Services ==

This plugin is a companion to the Kovetto feedback service ([kovetto.com](https://kovetto.com)) and cannot function without it. It connects to the Kovetto API under `https://kovetto.com` in the following situations:

* **Pairing** — when a site administrator saves the Site Token in Settings → Kovetto Konnect, the plugin sends the token, the site URL, and the WordPress version to `https://kovetto.com/api/wp/pair` to confirm the connection. This is the explicit opt-in for using the service.
* **Reviewer session validation** — when an invited reviewer opens a magic link (`?kovetto=<token>`) on the site, the plugin validates the reviewer token against `https://kovetto.com/api/wp/session` and fetches that reviewer's previously submitted feedback from `https://kovetto.com/api/wp/feedback-list`.
* **Feedback submission** — when a reviewer submits feedback, the marker position, the feedback text, the optional audio recording, the optional page screenshots, and the URL of the reviewed page are forwarded to `https://kovetto.com/api/wp/feedback`.
* **Session chat** — the optional chat panel inside the reviewer widget embeds a page served from `kovetto.com`. It is only shown to invited reviewers, never to normal visitors.

No data is sent to Kovetto before a Site Token has been saved, and nothing is loaded or transmitted on normal page views. All API calls are made server-to-server from WordPress; the Site Token never reaches the browser.

* Terms of Service: [kovetto.com/terms](https://kovetto.com/terms)
* Privacy Policy: [kovetto.com/privacy](https://kovetto.com/privacy)

== Installation ==

1. Upload the `kovetto-konnect` folder to `/wp-content/plugins/` (or install via the WP admin).
2. Activate the plugin.
3. Go to Settings → Kovetto Konnect and paste the Site Token from your Kovetto project.

== Frequently Asked Questions ==

= Do I need a Kovetto account? =

Yes. The plugin is the bridge between your WordPress site and the Kovetto feedback service. A free account is enough to get started.

= Does this expose feedback to public visitors? =

No. The widget only renders when `?kovetto=<reviewer_token>` is present in the URL and that token validates against an active Kovetto session for this project. Public visitors see nothing.

= Will it slow down my site? =

No. Normal page loads do not enqueue any plugin JS or CSS. Only requests that include the reviewer token load the widget (deferred, defer-attribute, in `wp_footer`).

= Does it conflict with caching plugins? =

No. The widget is added at request time based on a query parameter, which most caching plugins exclude by default.

= What data is sent to Kovetto? =

Only what a reviewer actively submits: marker position, feedback text, optional audio, optional page screenshots, and the page URL — plus the pairing request when you save the Site Token. See the "External Services" section for details. There is no telemetry, tracking, or analytics.

== Screenshots ==

1. Settings page — paste the Site Token to pair the site with your Kovetto project.
2. A reviewer opens a magic link and places a marker directly on the live page.
3. The feedback form with text input and audio recording.
4. Submitted feedback arrives in the Kovetto inbox together with a screenshot of exactly what the reviewer saw.

== Changelog ==

= 1.0.0 =
* Initial release.
