{"id":311445,"date":"2026-06-01T03:51:17","date_gmt":"2026-06-01T03:51:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/click2chat-by-markas-studio\/"},"modified":"2026-06-01T10:27:21","modified_gmt":"2026-06-01T10:27:21","slug":"talkdock","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/talkdock\/","author":23497456,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.6","stable_tag":"1.1.6","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"TalkDock \u2014 Floating Chat Button","header_author":"Markas Studio","header_description":"TalkDock adds a customizable floating chat button to your WordPress site that opens a WhatsApp conversation when clicked. Configure colors, position, prefilled message, animation, and visibility from one settings panel. Includes a shortcode for inline buttons inside posts and pages.","assets_banners_color":"5271c9","last_updated":"2026-06-01 10:27:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/studio.markashosting.com\/plugins\/talkdock\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":102,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.6":{"tag":"1.1.6","author":"studiomarkas","date":"2026-06-01 10:27:21"}},"upgrade_notice":{"1.1.6":"<p>Description copy refresh only. No functional or database changes.<\/p>","1.1.2":"<p>WordPress.org review hardening and Pro-ready architecture update from 1.0.9. No migration steps are required.<\/p>","1.0.9":"<p>WordPress.org review hardening: enqueue compliance, text-domain slug alignment, external-service disclosure, upload validation, and generated stylesheet output.<\/p>","1.0.8":"<p>Critical fix. The Report-a-Bug modal showed success on receiver HTTP 413; the dispatcher now requires 2xx and surfaces failures honestly. Adds smart auto-resize, paste-from-clipboard, and a Previous Reports panel. No change to what is collected or to the privacy posture.<\/p>","1.0.7":"<p>Polished the Report-a-Bug modal with a refined loading state, system-style minimalist visuals, and hardened mobile rendering. No change to what is transmitted or to the privacy posture.<\/p>","1.0.5":"<p>Plugin Check false-positive suppression in the bug-report attachment handler and MySQL version probe. No behavioural change.<\/p>","1.0.4":"<p>Adds a Report-a-Bug button on the settings page. No data is transmitted unless you click Send. See the Privacy section for details.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3556148,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3556148,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3556367,"resolution":"1544x500","location":"assets","locale":"","width":2173,"height":724},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3556148,"resolution":"772x250","location":"assets","locale":"","width":2172,"height":724}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3556492,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3556492,"resolution":"10","location":"assets","locale":"","width":1200,"height":900},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3556492,"resolution":"11","location":"assets","locale":"","width":1200,"height":900},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3556492,"resolution":"12","location":"assets","locale":"","width":1200,"height":900},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3556492,"resolution":"13","location":"assets","locale":"","width":1200,"height":900},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3556492,"resolution":"14","location":"assets","locale":"","width":1200,"height":900},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3556492,"resolution":"15","location":"assets","locale":"","width":1200,"height":900},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3556492,"resolution":"16","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3556492,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3556492,"resolution":"3","location":"assets","locale":"","width":1200,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3556492,"resolution":"4","location":"assets","locale":"","width":1200,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3556492,"resolution":"5","location":"assets","locale":"","width":1200,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3556492,"resolution":"6","location":"assets","locale":"","width":1200,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3556492,"resolution":"7","location":"assets","locale":"","width":1200,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3556492,"resolution":"8","location":"assets","locale":"","width":1200,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3556492,"resolution":"9","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"General tab \u2014 enter your WhatsApp link, toggle the widget on or off, and set the accessibility label. Live preview updates on the right.","2":"Design &amp; Position tab \u2014 pick gradient colors, set horizontal alignment, adjust side and bottom distance, and choose a button animation.","3":"Message tab \u2014 enable and configure a pre-filled message so visitors land with a conversation starter already typed.","4":"Visibility tab \u2014 control who sees the button (all visitors, logged-in only, or guests) and hide it on mobile with one toggle.","5":"Pro Features tab (free plugin) \u2014 overview of the TalkDock Pro add-on with feature cards covering business hours, multi-agent, page targeting, analytics, greeting bubbles, and inline embeds.","6":"Pro License tab \u2014 active Pro workspace showing license details, plan, validity, and the full list of enabled Pro features.","7":"General tab with Pro active \u2014 the full Pro tab bar unlocked: Business Hours, Offline Leads, Agents, Targeting, Analytics, Shortcode &amp; Block, and Pro License.","8":"Design tab with Pro active \u2014 advanced animation options including Pro-exclusive motion styles; button preview reflects multi-agent bubble rendering.","9":"Message tab with Pro active \u2014 agent-aware prefill routing; assign prefilled messages to specific agents for personalised touchpoints.","10":"Visibility tab with Pro active \u2014 full visibility and targeting panel with device, page ID, URL pattern, and agent-specific display logic.","11":"Business Hours tab (Pro) \u2014 schedule-aware availability engine with per-day open\/close windows, timezone selection, and automatic offline routing.","12":"Agents tab (Pro) \u2014 multiple agents and departments panel; assign names, titles, avatars, departments, and individual WhatsApp links with drag-to-prioritise ordering.","13":"Offline Leads tab (Pro) \u2014 captured offline lead messages with CSV export; visitor enquiries submitted outside business hours are stored and ready to review.","14":"Targeting tab (Pro) \u2014 page-level targeting with include\/exclude rules by post ID and URL pattern; deploy the button on checkout pages, hide it everywhere else.","15":"Shortcode &amp; Block tab (Pro) \u2014 inline embed tools showing the shortcode with inline and label variants plus a native Gutenberg block, with a live preview of the styled CTA.","16":"Analytics tab (Pro) \u2014 click analytics dashboard with 7\/30\/90-day windows, a day-by-day bar chart, per-agent breakdown table, and CSV export."}},"plugin_section":[],"plugin_tags":[17125,60390,2369,30237,141215],"plugin_category":[],"plugin_contributors":[265273],"plugin_business_model":[],"class_list":["post-311445","plugin","type-plugin","status-publish","hentry","plugin_tags-chat-button","plugin_tags-click-to-chat","plugin_tags-customer-support","plugin_tags-floating-button","plugin_tags-whatsapp-button","plugin_contributors-studiomarkas","plugin_committers-studiomarkas"],"banners":{"banner":"https:\/\/ps.w.org\/talkdock\/assets\/banner-772x250.png?rev=3556148","banner_2x":"https:\/\/ps.w.org\/talkdock\/assets\/banner-1544x500.png?rev=3556367","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/talkdock\/assets\/icon-128x128.png?rev=3556148","icon_2x":"https:\/\/ps.w.org\/talkdock\/assets\/icon-256x256.png?rev=3556148","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-1.png?rev=3556492","caption":"General tab \u2014 enter your WhatsApp link, toggle the widget on or off, and set the accessibility label. Live preview updates on the right."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-2.png?rev=3556492","caption":"Design &amp; Position tab \u2014 pick gradient colors, set horizontal alignment, adjust side and bottom distance, and choose a button animation."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-3.png?rev=3556492","caption":"Message tab \u2014 enable and configure a pre-filled message so visitors land with a conversation starter already typed."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-4.png?rev=3556492","caption":"Visibility tab \u2014 control who sees the button (all visitors, logged-in only, or guests) and hide it on mobile with one toggle."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-5.png?rev=3556492","caption":"Pro Features tab (free plugin) \u2014 overview of the TalkDock Pro add-on with feature cards covering business hours, multi-agent, page targeting, analytics, greeting bubbles, and inline embeds."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-6.png?rev=3556492","caption":"Pro License tab \u2014 active Pro workspace showing license details, plan, validity, and the full list of enabled Pro features."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-7.png?rev=3556492","caption":"General tab with Pro active \u2014 the full Pro tab bar unlocked: Business Hours, Offline Leads, Agents, Targeting, Analytics, Shortcode &amp; Block, and Pro License."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-8.png?rev=3556492","caption":"Design tab with Pro active \u2014 advanced animation options including Pro-exclusive motion styles; button preview reflects multi-agent bubble rendering."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-9.png?rev=3556492","caption":"Message tab with Pro active \u2014 agent-aware prefill routing; assign prefilled messages to specific agents for personalised touchpoints."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-10.png?rev=3556492","caption":"Visibility tab with Pro active \u2014 full visibility and targeting panel with device, page ID, URL pattern, and agent-specific display logic."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-11.png?rev=3556492","caption":"Business Hours tab (Pro) \u2014 schedule-aware availability engine with per-day open\/close windows, timezone selection, and automatic offline routing."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-12.png?rev=3556492","caption":"Agents tab (Pro) \u2014 multiple agents and departments panel; assign names, titles, avatars, departments, and individual WhatsApp links with drag-to-prioritise ordering."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-13.png?rev=3556492","caption":"Offline Leads tab (Pro) \u2014 captured offline lead messages with CSV export; visitor enquiries submitted outside business hours are stored and ready to review."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-14.png?rev=3556492","caption":"Targeting tab (Pro) \u2014 page-level targeting with include\/exclude rules by post ID and URL pattern; deploy the button on checkout pages, hide it everywhere else."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-15.png?rev=3556492","caption":"Shortcode &amp; Block tab (Pro) \u2014 inline embed tools showing the shortcode with inline and label variants plus a native Gutenberg block, with a live preview of the styled CTA."},{"src":"https:\/\/ps.w.org\/talkdock\/assets\/screenshot-16.png?rev=3556492","caption":"Analytics tab (Pro) \u2014 click analytics dashboard with 7\/30\/90-day windows, a day-by-day bar chart, per-agent breakdown table, and CSV export."}],"raw_content":"<!--section=description-->\n<p>TalkDock adds a floating WhatsApp button to your site in under two minutes. Visitors tap it and WhatsApp opens straight to your number \u2014 no forms, no redirects, no friction.<\/p>\n\n<p>One settings panel covers everything. No accounts, no code, nothing to configure outside WordPress.<\/p>\n\n<h4>What TalkDock does<\/h4>\n\n<ul>\n<li><strong>Floating chat button<\/strong> \u2014 appears on every page; visitors tap it and WhatsApp opens directly to your number.<\/li>\n<li><strong>Full color control<\/strong> \u2014 solid colors or gradients via a built-in picker; matches any brand palette.<\/li>\n<li><strong>Flexible positioning<\/strong> \u2014 left or right, with fine-grained offset control.<\/li>\n<li><strong>Pre-filled welcome message<\/strong> \u2014 visitors arrive with a conversation starter already typed.<\/li>\n<li><strong>Animations &amp; visibility rules<\/strong> \u2014 choose bounce, pulse, shake, or none; show to all visitors, logged-in users, or guests only; hide on mobile with one toggle.<\/li>\n<li><strong>Shortcode support<\/strong> \u2014 embed <code>[talkdock_button]<\/code> anywhere in posts or pages.<\/li>\n<li><strong>Live preview &amp; clean uninstall<\/strong> \u2014 see changes before saving; plugin removes its own data on uninstall.<\/li>\n<\/ul>\n\n<h4>Upgrade to TalkDock Pro<\/h4>\n\n<p>The free plugin covers everything you need to get a WhatsApp button live. TalkDock Pro is the add-on for teams that want more control, more visibility, and more conversions.<\/p>\n\n<p><strong>Free<\/strong><\/p>\n\n<ul>\n<li>Floating chat button \u2014 all pages, all devices<\/li>\n<li>Full color &amp; gradient control with live preview<\/li>\n<li>Flexible position and animation presets<\/li>\n<li>Pre-filled welcome message<\/li>\n<li>Visitor targeting by login state and device<\/li>\n<li>Shortcode <code>[talkdock_button]<\/code> for inline embeds<\/li>\n<li>Accessibility label and clean uninstall<\/li>\n<\/ul>\n\n<p><strong>Pro \u2014 everything above, plus:<\/strong><\/p>\n\n<ul>\n<li><strong>Page-level targeting<\/strong> \u2014 show or hide the button by page ID, URL pattern, post type, or WooCommerce product<\/li>\n<li><strong>Multiple agents &amp; departments<\/strong> \u2014 add unlimited agents with names, avatars, titles, and individual WhatsApp links; visitors pick the right person<\/li>\n<li><strong>Business hours &amp; offline routing<\/strong> \u2014 set open\/close windows per day; outside hours the widget auto-switches to a lead capture form<\/li>\n<li><strong>Offline leads inbox<\/strong> \u2014 missed enquiries saved server-side, reviewable in-dashboard, exportable as CSV<\/li>\n<li><strong>Click analytics &amp; conversion tracking<\/strong> \u2014 day-by-day click chart per agent, 7\/30\/90-day windows, Google Analytics and Meta Pixel event firing, CSV export<\/li>\n<li><strong>Greeting bubbles &amp; extra button styles<\/strong> \u2014 pop-up greeting animations, agent typing indicators, and additional button presets<\/li>\n<li><strong>Inline Gutenberg block<\/strong> \u2014 drop a fully-styled \"Chat with us\" CTA anywhere in the block editor<\/li>\n<\/ul>\n\n<p>\ud83d\udc49 <strong><a href=\"https:\/\/studio.markashosting.com\/plugins\/talkdock\/talkdock-pro\/\">Get TalkDock Pro<\/a><\/strong><\/p>\n\n<h4>About WhatsApp<\/h4>\n\n<p>TalkDock is not affiliated with WhatsApp or Meta. The button opens a standard <code>wa.me<\/code> link \u2014 identical to any hand-coded WhatsApp link. The plugin never contacts WhatsApp's servers on your behalf.<\/p>\n\n<h3>Privacy &amp; External Services<\/h3>\n\n<p>TalkDock transmits nothing in normal operation \u2014 no tracking, no telemetry, no background requests. The floating button is a plain <code>wa.me<\/code> anchor tag; clicking it opens WhatsApp in the visitor's browser and nothing else. The only outbound connection is the optional <strong>Report a Bug<\/strong> form, fired solely when an administrator clicks Send.<\/p>\n\n<p>Data sent only when a bug report is submitted:<\/p>\n\n<ul>\n<li>Report subject and message<\/li>\n<li>Optional reply-to email address (only if you type one)<\/li>\n<li>Up to three screenshot attachments (validated server-side; never stored in your media library)<\/li>\n<li>Optional diagnostic info \u2014 opt-out, shown to you before sending: plugin, WordPress, PHP, and MySQL versions; active theme; locale; multisite flag; PHP memory limit<\/li>\n<li>Never auto-collected: site URL, admin email, license keys, user list, active plugin list, or any visitor data<\/li>\n<li>A local copy is saved in <code>tlkd_feedback_log<\/code> (last 50 entries; removed on uninstall)<\/li>\n<\/ul>\n\n<p>External service used:<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> <a href=\"https:\/\/projects.markas.cloud\/wp-json\/markas\/v1\/plugin-bug\">Markas Studio Bug Report Receiver<\/a><\/li>\n<li><strong>Purpose:<\/strong> Deliver administrator-submitted bug reports for support investigation. Data is sent only after clicking Send \u2014 never automatically.<\/li>\n<li><strong><a href=\"https:\/\/studio.markashosting.com\/plugins\/talkdock\/terms\/\">Terms of Use<\/a><\/strong> \u00b7 <strong><a href=\"https:\/\/studio.markashosting.com\/plugins\/talkdock\/privacy-policy\/\">Privacy Policy<\/a><\/strong><\/li>\n<\/ul>\n\n<p>WhatsApp <code>wa.me<\/code> links are standard browser anchor tags. The plugin makes no server-side requests to WhatsApp or Meta.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>, or upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin via the <em>Plugins<\/em> screen.<\/li>\n<li>Go to <strong>TalkDock<\/strong> in the admin sidebar.<\/li>\n<li>Enter your WhatsApp link in the format <code>https:\/\/wa.me\/15551234567<\/code> and customize colors and position.<\/li>\n<li>Click <strong>Save Changes<\/strong>. The button will appear on your site.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20find%20my%20whatsapp%20link%3F\"><h3>How do I find my WhatsApp link?<\/h3><\/dt>\n<dd><p>Use the format <code>https:\/\/wa.me\/&lt;country-code&gt;&lt;phone-number&gt;<\/code> \u2014 for example <code>https:\/\/wa.me\/15551234567<\/code>. No plus sign, no spaces.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20caching%20plugin%3F\"><h3>Will this work with my caching plugin?<\/h3><\/dt>\n<dd><p>Yes. TalkDock enqueues static assets and a sanitized generated stylesheet, so the button renders correctly regardless of page caching.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20button%20only%20on%20certain%20pages%3F\"><h3>Can I show the button only on certain pages?<\/h3><\/dt>\n<dd><p>The free plugin supports targeting by login state and screen size (hide on mobile). Per-page, per-product, and URL-pattern targeting is available in <a href=\"https:\/\/studio.markashosting.com\/plugins\/talkdock\/talkdock-pro\/\">TalkDock Pro<\/a>.<\/p><\/dd>\n<dt id=\"will%20i%20lose%20my%20settings%20if%20i%20deactivate%3F\"><h3>Will I lose my settings if I deactivate?<\/h3><\/dt>\n<dd><p>No. Deactivation leaves settings intact. Data is removed only when you delete the plugin \u2014 and even then you can opt in to keep it.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20support%3F\"><h3>Where do I get support?<\/h3><\/dt>\n<dd><p>Free support is available through the WordPress.org support forum for this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Refreshed plugin description copy for clarity and readability.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Resolved the Plugin Check nonce-verification warning in settings checkbox payload handling.<\/li>\n<li>Reconfirmed AJAX no-refresh settings saving, persisted-value verification, and POST fallback.<\/li>\n<li>Maintained save status feedback and live-preview refresh after successful saves.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Added the TalkDock Pro integration hooks while keeping all free features fully functional without the add-on.<\/li>\n<li>Hardened settings saves, feedback uploads, frontend asset enqueues, and generated CSS output for WordPress.org review.<\/li>\n<li>Refined the admin UI, responsive tab layout, and shadow-free design system.<\/li>\n<li>Preserved the existing privacy posture: no background telemetry and no visitor data sent by the free plugin.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fixed WordPress.org review blockers: all JavaScript is enqueued through WordPress, the text domain is consistently <code>talkdock<\/code> across plugin headers, gettext calls, and the POT template, external service disclosure is explicit, Report-a-Bug uploads are sanitized and validated at the boundary, and frontend design CSS is generated from validated values instead of printed as raw inline CSS.<\/li>\n<li>Removed the remote Google Fonts admin dependency and uses the system font stack instead.<\/li>\n<li>Cleaned admin\/front-end markup output and tightened late escaping for dynamic values.<\/li>\n<li>Normalized Markas Studio public links under <code>https:\/\/studio.markashosting.com\/plugins\/talkdock\/<\/code>, including docs, support, TalkDock Pro, Terms of Use, and Privacy Policy permalinks.<\/li>\n<li>Removed the optional author homepage header because the plugin-specific URL is intentionally used as the Plugin URI; this avoids duplicate URL validation errors during WordPress.org submission.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>FIX (Report-a-Bug delivery): the modal showed \"Thanks \u2014 your report has been recorded\" even when the cross-site bug-report receiver returned HTTP 413 (payload too large). Two underlying issues: (a) the dispatcher treated any non-WP_Error response from <code>wp_remote_post<\/code> as success, so a 413 \/ 429 \/ 500 from the receiver slipped through as <code>ok = true<\/code>; (b) the receiver's body cap was 1 MB while the plugin permits up to 3 \u00d7 5 MB images, so a typical multi-screenshot bug report exceeded the cap. The dispatcher now requires an actual 2xx status before reporting success; on non-2xx the modal shows an honest \"Saved locally \u2014 receiver was unreachable\" warning and leaves itself open so the user can resend. The receiver-side cap (in the Markas Studio dashboard's plugin-bug intake) has been raised to 12 MB to match the plugin's spec'd wire budget with comfortable headroom.<\/li>\n<li>FIX (response parsing \u2014 receiver entry_id): the cross-site receiver responds with <code>{ success: true, id: &lt;post_id&gt;, message: '...' }<\/code> on a successful intake, where <code>id<\/code> is the reference number of the recorded report on the receiver side. The previous dispatcher discarded the body entirely on 2xx and returned only <code>{ ok, status }<\/code> upstream, so the receiver's reference number was lost between layers. The dispatcher now decodes the response body, extracts the <code>id<\/code> field (accepting <code>entry_id<\/code> as a forward-compat alias), and propagates it as <code>remote_entry_id<\/code> through the dispatch result \u2192 local log row \u2192 AJAX response \u2192 modal history pill. The user-facing success message now includes the receiver-assigned reference (\"Thanks \u2014 your report has been recorded (ref #847).\"), and the Previous Reports panel renders sent rows as \"Sent \u00b7 #847\" so the user has a number to cite in any follow-up. Pre-1.0.8 log entries that lack the field render as \"Sent\" with no reference, gracefully \u2014 no data migration required.<\/li>\n<li>NEW (Smart auto-resize): screenshots are now optimized client-side before submission. Images larger than the per-image target are scaled to a 1920px longest edge and re-encoded as JPEG with progressive quality steps (0.85 \u2192 0.72 \u2192 0.6) until they fit. A typical 5 MB retina screenshot lands at ~400\u2013600 KB without visible quality loss, and the 413 budget becomes practically unreachable from the UI.<\/li>\n<li>NEW (Paste-from-clipboard): you can now paste a screenshot directly into the open modal with Cmd \/ Ctrl + V. Captured images run through the same auto-resize pipeline. A timestamped filename is synthesized so multiple pastes don't collide. Text pastes into the subject \/ message inputs are left untouched.<\/li>\n<li>NEW (Previous reports panel): an opt-in \"Show previous reports\" disclosure inside the modal lists the most recent submissions from this site with their delivery status (<code>Sent<\/code> \/ <code>Local only<\/code> \/ <code>Not delivered<\/code>). Reads from the existing bounded local log; no new options are created. Lazy-loaded on first expand.<\/li>\n<li>FIX (wp_options bloat): the local <code>tlkd_feedback_log<\/code> option no longer stores the base64-encoded attachment binary. With 50 entries \u00d7 up to 15 MB raw attachments, the option row could theoretically reach ~750 MB and slow every admin page load. The log now stores per-attachment metadata only (name, MIME, byte count); the audit trail is preserved, the bloat hazard is gone.<\/li>\n<li>FIX (privacy \/ wire format): the dispatcher's outbound <code>User-Agent<\/code> no longer includes <code>home_url()<\/code>. The readme privacy section already promised the plugin never auto-attaches your site URL, but the previous header <code>TalkDock\/1.0.7; &lt;home_url&gt;<\/code> shipped it on every dispatch. The receiver-side dashboard derives the source host from the <code>Origin<\/code> \/ <code>Referer<\/code> header (unchanged), so the <code>User-Agent<\/code> is now plain <code>TalkDock\/1.0.8<\/code>.<\/li>\n<li>HARDENING (PHPCS hygiene): the <code>$_FILES<\/code> superglobal is read in three places inside <code>process_attachments()<\/code> (existence check, raw-array capture, per-file loop). The previous build used an inline <code>phpcs:ignore<\/code> that only covered one line and left the other two flagged. Replaced with a method-scoped <code>phpcs:disable<\/code> \/ <code>phpcs:enable<\/code> pair stacking both <code>WordPress.Security.NonceVerification.Missing<\/code> and <code>WordPress.Security.ValidatedSanitizedInput.InputNotSanitized<\/code>. Each suppression carries a one-line justification naming the mitigation. No behavioural change.<\/li>\n<li>HARDENING (link-rel sweep): every <code>target=\"_blank\"<\/code> link in the plugin's admin views now uses <code>rel=\"noopener noreferrer\"<\/code> (was <code>rel=\"noopener\"<\/code>). <code>noopener<\/code> neutralizes reverse-tabnabbing; <code>noreferrer<\/code> additionally suppresses the <code>Referer<\/code> header so the destination site does not learn which <code>wp-admin\/admin.php?page=\u2026<\/code> page the click came from.<\/li>\n<li>No change to the AJAX action names, the nonce, the option keys, the validation rules, the JSON payload schema, the diagnostic block, or what is opt-in vs opt-out. The 5 MB per-image cap and 3-image cap are unchanged. The set of fields transmitted is unchanged \u2014 except that the outbound <code>User-Agent<\/code> header no longer contains <code>home_url()<\/code>, per the readme's privacy guarantee.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Polished the Report-a-Bug modal. The submit button now shows an inline spinner during dispatch and a brief checkmark on success instead of swapping its text; the form is disabled while the request is in flight so the loading state is clearly bounded.<\/li>\n<li>Fixed a desktop layout regression where the modal could overflow the viewport once the \"Sending\u2026\" status banner appeared, clipping the footer off the bottom of the screen. The dialog \u2192 wrapping form \u2192 body now form a proper flex column, so the body scrolls internally instead of pushing the dialog past its <code>max-height<\/code> cap. The status banner is also auto-scrolled into view when it appears. The dialog now also offsets for the WordPress admin bar (32px \/ 46px) so it never sits beneath it on desktop.<\/li>\n<li>Replaced the fragile <code>backdrop-filter: blur(8px)<\/code> scrim with a solid dim (<code>rgba(15, 16, 20, 0.62)<\/code>) that renders deterministically regardless of WP admin chrome stacking contexts. The previous blur approach caused \"ghost\" rendering where tabs and buttons bled through the backdrop. Removed the associated defensive <code>isolation: isolate<\/code> and <code>z-index: 0<\/code> hacks that were only propping up the broken filter.<\/li>\n<li>Switched the admin CSS and JS enqueue from a static plugin-version cache key to a <code>filemtime()<\/code>-based version. Any byte-level change to <code>admin\/css\/admin.css<\/code> or <code>admin\/js\/admin.js<\/code> now forces an immediate browser refetch even when the plugin version has not been bumped. The headline plugin version stays visible in <code>?ver=\u2026<\/code> because the new format is <code>TLKD_VERSION.MTIME<\/code> with a graceful fallback to plain <code>TLKD_VERSION<\/code> if the file cannot be stat'd.<\/li>\n<li>Refined the modal visuals toward a minimalist, system-style aesthetic: clean solid-dim backdrop, tighter typography, larger corner radius on desktop, and a primary-indigo Send action that matches the rest of the admin brand instead of the accent terracotta.<\/li>\n<li>Mobile rendering hardened: switched the full-screen breakpoint to <code>100dvh<\/code> (fixes iOS Safari toolbar overlap), added safe-area-inset padding for notched devices, and reduced the body padding so all fields stay reachable on narrow screens.<\/li>\n<li>Accessibility: animations honor <code>prefers-reduced-motion<\/code>; the spinner is hidden from assistive tech; the live status region continues to announce send\/success\/error.<\/li>\n<li>No change to the AJAX endpoint, validation rules, payload shape, dispatcher behavior, or privacy posture.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Suppressed five false-positive Plugin Check warnings in <code>TLKD_Feedback<\/code>. No behavioural change.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added an optional \"Report a Bug\" button on the settings page sidebar. Opens a modal that accepts a subject, message, optional reply-to email, and up to three image attachments.<\/li>\n<li>The feedback flow is transparent: nothing is transmitted until the administrator clicks Send. Diagnostic environment info is opt-out and the full payload is shown to the user before submission.<\/li>\n<li>Submissions are recorded locally in a bounded log (<code>tlkd_feedback_log<\/code>, 50 most recent entries, removed on uninstall unless data is preserved).<\/li>\n<li>New <code>talkdock_feedback_payload<\/code> and <code>talkdock_feedback_dispatch<\/code> filters let extensions modify the payload or replace the default dispatcher.<\/li>\n<li>Added a <code>== Privacy ==<\/code> section to this readme describing exactly what the Report-a-Bug flow transmits.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Renamed plugin to \"TalkDock \u2014 Floating Chat Button\" to comply with WordPress.org Plugin Check trademark rules.<\/li>\n<li>Updated admin hero subtitle to match the new name.<\/li>\n<li>No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rebranded from the previous internal name to \"TalkDock\".<\/li>\n<li>Reworked description and admin copy to be factual rather than promotional.<\/li>\n<li>Removed the red upgrade link from the plugins list row.<\/li>\n<li>Added an explicit non-affiliation notice regarding WhatsApp.<\/li>\n<li>Shortcode renamed to <code>[talkdock_button]<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Floating chat button with color, position, and animation controls.<\/li>\n<li>Prefilled message support.<\/li>\n<li>Visibility rules (login state, hide on mobile).<\/li>\n<li>Accessibility-first markup.<\/li>\n<li>Inline shortcode for placing buttons inside content.<\/li>\n<li>Auto-migration from the legacy <code>custom_wa_*<\/code> standalone snippet.<\/li>\n<\/ul>","raw_excerpt":"Add a floating WhatsApp chat button to your site. Visitors click \u2014 WhatsApp opens. That&#039;s it.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311445"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/studiomarkas"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311445"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311445"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311445"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311445"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311445"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}