v1.78.1Security: the user-enumeration block now runs before the canonical redirect and also hides /wp/v2/users from anonymous visitors; disabling XML-RPC now refuses the whole endpoint (403)
v1.78.0Status: new Resource usage vs plan card. Measures this site's own PHP requests (time, CPU, peak memory vs memory_limit, DB queries, 5xx, out-of-memory/timeout crashes) and the server every hour, compares them with the plan limits you enter (disk, database, CPU) and raises alerts inside the plugin: verdict on the Status page, badge on the menu, banner on the Dashboard. Alerts can be hidden for 7 days, are logged in Reports, and are included in REST /health. Nothing is collected while Status is off.
v1.77.1Admin menu: back to the original look - eagle icon plus the plain cornel's support text (reverts the 1.76.3-1.77.0 logo experiments, cc-logo.php removed).
v1.77.0New admin menu logo (Bastarda): hand-written broad-nib calligraphy - the eagle C is the first letter and the word continues from its tail. It writes itself on the first admin page of the browser session and on every hover, follows the admin skin colours, respects reduced motion; collapsed menu shows the nib eagle. New file cc-logo.php.
v1.76.4Admin menu: icon and label are now one logo - the eagle C is the c of cornel's support and the rest of the word continues from its stroke, in the icon colour of the admin skin. Folded menu shows the eagle only.
v1.76.3Admin menu: the cornel's support label is now a monoline wordmark drawn in the same style as the eagle icon (CSS mask, follows the admin skin colours; text kept for screen readers).
v1.76.2SEO: the static posts page (Settings > Reading) now gets its own title, meta description, robots and canonical from its SEO box; no duplicate Home crumb on a static front page.
v1.76.1Plugin screens: icons no longer turn into broken images (WordPress emoji-to-image replacement switched off on the plugin pages; it failed when a theme filters emoji_svg_url). Hardening option Disable emoji now also works in wp-admin. REST POST /file: the backup of the overwritten file is stored outside the webroot (../ccs-backups/file-api, kept 30 days) and never as .bak next to the file; no backup when no folder outside the webroot is writable.
v1.76.0Reports: SMTP failures, Social publishing results and Backup/restore runs are now written to the activity log. New REST endpoint GET/POST /modules (list modules, switch one on/off; POST needs plugin_manage). Fleet tab: Enable Reports on selected sites. SMTP backup-connection sends no longer counted as failures.
v1.75.2Fix: critical error on SEO > PageSpeed, the Status card and the daily PageSpeed test since 1.74.0 (history/last-result helpers had been removed by mistake).
v1.75.1Site Migration 0.3.0: the receiver no longer loses its own routes when the options table is imported (module loaded while a migration session is active, migrate settings + active_plugins restored after every SQL batch, INSERT turned into REPLACE); finalize renames prefix-bound keys (user_roles, capabilities, user_level...) when the table prefixes differ.
v1.75.0New Reports module: activity log (plugins, themes, core, users, logins, PHP fatals, mail failures, module changes) and on-demand reports for every enabled module, with PDF/CSV/JSON export and send by email. Mothership: Fleet tab collects reports from all sites. Modules can log via do_action(ccs_log) and extend via the ccs_report_sources filter.
v1.74.0PageSpeed: removed the mothership-managed key. Each site uses only the Google API key saved on that site (SEO > PageSpeed or the Status card).
v1.73.0PageSpeed: sites without a key of their own now get the Google API key managed by the mothership automatically (verified with a one-time callback, cached 7 days, refreshed if revoked). A key entered by hand always takes precedence.
v1.72.0PageSpeed: daily Google PageSpeed Insights report of the home page (mobile + desktop) in SEO > PageSpeed, with a compact card on Status; runs only while SEO or Status is on, optional Google API key. Status is now on by default on every site (turned on once on update). Dashboard: Turn off features is now its own panel next to Add features, with a red accent.
v1.71.3Admin menu: the cornel's support icon is now a crisp SVG mark that follows the admin skin colours (was a tiny, top-aligned external PNG) and the label no longer overflows the menu item.
v1.71.2Dashboard > Add features: clear hover/focus highlight on each row (accent tint, left accent bar, highlighted name and Enable button) so it is obvious which row the pointer is on.
v1.71.1Social Publishing: the Accounts tab shows one Connected accounts list (your accounts and the ones other users connected, each labelled with who connected it) and no longer repeats the network status strip.
v1.71.0Social Publishing: Status box with a Check the application button (verifies ID, secret, redirect URI and LinkedIn permissions without connecting), an illustrated step-by-step guide for Facebook and LinkedIn with the common mistakes, plain-language errors when Connect fails, and a How it works panel on the Accounts tab.
v1.70.2Social Publishing: one Social menu entry. Accounts is now the first tab (the only one for authors); the separate My social accounts page is gone and its old address redirects. LinkedIn mode choices render as normal radio buttons.
v1.70.1Social Publishing: My social accounts shows a Set up card for networks without an application and a change application link for administrators; connections made with a previous application are flagged for reconnection.
v1.70.0Social Publishing: LinkedIn app mode (personal profiles or company pages via the Community Management API) and per-account visibility (only the owner, everyone, or selected users). Administrators now see accounts connected by other users.
v1.69.1Features: active features are no longer repeated (they are the Tools cards); only an Add features panel remains, with a discreet Turn off list inside. Fixed hidden checkboxes shown by admin skins.
v1.69.0Backup module (S3-compatible, Azure Blob, SFTP, FTP/FTPS, WebDAV/Nextcloud, Dropbox, rclone; encryption, schedule, retention, restore). Redesigned Features section: active features as chips, the rest under Add features. Footer without API namespaces.
v1.68.0Admin skins 2.2.1: admin-bar comment count no longer drawn as an accent pill - same colour as the other toolbar items
v1.67.0Dark styles: no more white flash while a page loads. The page content stays invisible until the dark pass has run (fail-safe 2.5 s), and the dark rules generated on earlier pages are cached in the browser and applied in , so the next pages paint dark from the very first frame.
v1.66.0Dark styles 2: (1) stylesheet pass — plugin CSS rules that paint near-white backgrounds, including :hover/:focus/selected states (table rows, calendar days, tiles), get a dark twin rule; rescans when plugins inject styles (e.g. FullCalendar). (2) Native dropdowns readable: option lists use the style surface and text, page color-scheme dark. (3) Style background now fixed on the whole page (was cut after the first screen on long pages). (4) Buttons and accent-coloured elements are no longer re-tinted (fixes pastel accents and hover text). Verified on all 43 styles: 0 unreadable texts, 0 light boxes, hover included.
v1.65.0Admin styles readability pass on all 43 styles: admin-bar dropdowns (Style menu, user menu, New…) now use their own text colours (--sk-pop-text/-muted/-hover) — fixes dark text on dark dropdowns in light styles with dark navigation (Slate, Citrus, Electric, Sunset, Bauhaus). Contrast guard: text on the accent always the better of near-black/white, menu text >= 7:1, muted text and links >= 4.5:1 on their background. Light-grey and status-green inline text in plugin pages made readable; dark-mode safety net now decides on real contrast (no more light text on light accent buttons).
v1.64.0Admin style: live preview in the admin-bar Style menu — hovering a style or an accent colour restyles the page instantly (light and dark, dark safety net included), leaving the menu restores your style, clicking saves it. Each style shows a 3-dot swatch (background, menu, accent).
v1.63.0Admin style: personal accent colour per user — admin bar Style › Accent colour (site setting, style's own, 8 pastel + 8 vivid swatches) and on the profile page (swatches, custom hex or 'use the style's own accent'). Priority: personal > site override > style. Fix: accent swatches no longer re-tinted on dark styles.
v1.62.0Branding › Admin style 2.0: 35 new styles grouped in Light / Dark / Pastel / Vivid / Design styles (dashboard looks from web-development.cornelcaba.com: Violet Planner, Meadow, Periwinkle Ledger, Citrus Tracker, Coral Portfolio, Midnight, Sentinel, Night Glass, Ocean Glass; pastels: Lavender, Mint, Peach, Sky, Rose, Sand, Dusk, Sage Night; vivid: Electric, Sunset, Magenta, Lime; design styles: Bento, Claymorphism, Material You, E-Ink Paper, Nature Distilled, Retro Film, Bauhaus, Modern Dark OLED, Academia, Vaporwave, Sci-Fi HUD, Terminal). Admin-bar Style menu grouped in submenus. Accent swatches (pastel + vivid). Dark styles: no more white boxes — core screens (Site Health, Privacy, media filters, theme details, plugin install) restyled and a safety net re-tints light boxes and dark text left by plugins; accent text picks the higher-contrast colour.
v1.61.0Branding › Start page after login: the list now also offers the admin pages of every other plugin and theme (e.g. 'RGF Checkin › Soci'), including their submenus, post types and taxonomies — only pages the current user can open.
v1.60.0Branding › Hide plugins: a hidden plugin now also loses its admin menu items — its own pages and submenus, its post types and taxonomies, and its '+ New' admin-bar entries (ownership detected from the code that registers them). Same 'Apply to' scope; the plugin keeps running.
v1.59.0Branding › Dashboard: new 'Hide Dashboard & plugins' card — hide the WordPress Dashboard (menu, admin-bar link, wp-admin/ redirects to the start page; Updates moves under Tools) and hide selected plugins from the Plugins list, update counters and Updates screen. Same 'Apply to' scope as hidden menu items; hidden plugins keep running, auto-updates unaffected.
v1.58.0Branding: 'Start page after login' — choose which wp-admin page opens after login (plugin dashboard, any plugin page, Posts, Pages… or a custom admin path), for administrators or everyone; explicit redirect_to links are respected; works with passkey/SSO logins.
v1.57.0Branding: Admin style tab with 8 modern wp-admin skins (Neumorphism, Neumorphism Dark, Liquid Glass, Minimal, Slate, Dark Editor, Neubrutalism, Aurora) + classic schemes; site default, per-user choice (profile + admin-bar Style menu), accent override. Status page follows the skin.
v1.56.0New Status page: disk and folder sizes, database, PHP, OPcache, RAM/CPU, WP-Cron, SSL expiry, leftover backup files in webroot, 90-day growth history, copyable report and REST /health endpoint
v1.54.0Translate module 1.4.0. Placeholder handling reworked after measuring it against a live engine instead of assuming: the old %%0%% form was destroyed on every long sentence, which is what pushed failures to 6 percent of a real batch. Placeholders are now plain alphanumeric tokens that survive tokenisation, a later protection pattern can no longer swallow a token an earlier one produced, and restoring tolerates an engine re-casing a token at the start of a sentence. Strings that contain nothing but placeholders once protected — a bare e-mail address, a URL, a shortcode — are kept as they are and never sent to the engine, saving a call and removing a way to fail. Measured on the same content: failures down from 6.0 percent to 0.3 percent, with inline tags landing in the right place in the translated sentence.
v1.53.0Translate module 1.3.0. Fix found on real content: a merged sentence could swallow a closing tag whose opening tag was outside the run, producing a malformed source string that the engine mangled and that ended up marked as failed. Merged runs are now tag-balanced, nesting aware and void-tag aware, and the run is allowed to end only at depth zero; the inline-tag ceiling per sentence goes from 10 to 30 and the size ceiling from 2000 to 4000 bytes, so richly formatted paragraphs merge as one unit instead of breaking into scraps. Strings now need a word of at least three letters to be queued, which keeps leftovers like a stray conjunction out of the queue and off the API bill.
v1.52.0Translate module 1.2.0. The Strings page can now translate on its own: a Translate these strings button runs the engine over every queued or failed row matching the current filter, in batches, showing progress live and filling the table in place without a reload; with the status filter set to machine the same button becomes Re-translate. Each row also gets its own translate button for one-off fixes. Human translations are never sent back to the engine. The row-translation core is now shared with the cron worker, so both paths behave identically on budget, batching, placeholder checks and cache purge.
v1.51.0Translate module 1.1.0. Fix: turning a language off now removes its translation memory, so its strings no longer show up under Strings; leftover strings from languages disabled earlier are hidden everywhere and a notice offers to delete them. The strings list, the counters and the worker all operate on enabled languages only. Languages tab redesigned: a Live on the site panel shows the source language and every translated language as chips with a live counter, and the picker is a card grid that highlights the selected ones. Whole module rewritten in English, interface and code comments, per the rule that this plugin ships in English.
v1.50.0Nuovo modulo Translate: sito multilingua in qualsiasi lingua senza duplicare i contenuti. Le stringhe vengono estratte dalla pagina renderizzata con uno scanner a token (niente DOMDocument: il markup non viene mai ri-serializzato), tradotte in background da DeepL/Google/OpenAI-compatibile/LibreTranslate e servite da cache statica per lingua; nessuna chiamata API durante il rendering. URL in sottocartella /en/, hreflang, canonical e Open Graph per lingua, editor delle traduzioni manuali che vincono sul motore, pre-generazione dell'intero sito, budget mensile di caratteri. Sicurezza: fail-open su ogni entry point, circuit breaker che autodisattiva il modulo dopo 3 fatal, kill switch CCS_TRANSLATE_OFF da wp-config. Fix cc-cache: la chiave di cache ora include il prefisso lingua, altrimenti la pagina tradotta finiva sulla chiave della lingua originale.
v1.49.5ccs-cache: HIT ora invia Cache-Control no-cache/must-revalidate + Last-Modified + ETag e risponde 304 (niente piu' pagine vecchie servite dalla cache del browser)
v1.49.3SEO, tre correzioni: il title case non stravolge piu gli acronimi (AI, IT, SEO, PMI restano maiuscoli); con una pagina statica come home la description del pannello Homepage viene davvero usata; lo schema impostato su off nella scheda del contenuto ora lo spegne invece di tornare al default.
v1.49.2SEO: spegne le sitemap native di WordPress quando la sitemap del modulo e attiva (niente due indici e due righe in robots.txt) e non pubblica la sitemap degli autori se gli archivi autore sono noindex.
v1.49.1SEO: opzione per togliere /category/ dagli URL degli archivi (regole rewrite + redirect 301 dal vecchio percorso), importata anche da Rank Math cosi il passaggio non cambia nessun URL.
v1.49.0Nuovo modulo SEO: titoli e meta con template e variabili, robots, canonical, Open Graph/Twitter, JSON-LD, sitemap XML con gli stessi URL di Rank Math, redirezioni, monitor 404, audit del sito, analisi del contenuto nelleditor, import da Rank Math e Yoast. Usa le stesse post meta di Rank Math.
v1.48.9Pannello responsive: la card autore della dashboard (Sito corrente, WP/PHP) non esce piu' dallo schermo su mobile e il footer fisso non resta agganciato a 160px quando la sidebar di wp-admin e' chiusa o off-canvas. Griglia Tools e tabelle senza overflow orizzontale.
v1.48.8Inglese: ultime tre voci della pagina API (Enable all endpoints, Delete file, Plugin manage). Interfaccia del pannello ora interamente in inglese.
v1.48.7Inglese: ultime due descrizioni della pagina Security (Referrer-Policy e Application Passwords).
v1.48.6Inglese: ultimi due residui (descrizione del filtro XSS nella pagina Security ed etichette della pagina Google Reviews).
v1.48.5Inglese completato su tutte le pagine del pannello: ultimi testi di aiuto di SMTP, Google Reviews, Branding, Migration, Antispam, WebP, WhatsApp, Notifications e le due note del GDPR. Restano in italiano solo i documenti legali generati e il banner cookie, che sono contenuto per i visitatori.
v1.48.4Inglese: pannello GDPR & Cookie (50 etichette), voci di menu Statistics, Classic Editor e Site Migration, schede Antispam e mesi delle statistiche Ads. I documenti generati (privacy, cookie policy, condizioni di vendita) e il banner restano in italiano: sono testi per i visitatori, verificato che non siano stati toccati.
v1.48.3Inglese: Ads Manager, SMTP, pagine API/Security/Notifications, Antispam, WhatsApp, Branding, Migration, Instagram OAuth, Google Reviews, Duplicate Page, Cache, WebP e Classic Editor. Restano da tradurre solo le etichette del pannello GDPR (i documenti legali generati restano in italiano perche' sono testi per visitatori italiani).
v1.48.2Inglese: badge Connected di Instagram e riga Connected on nella pagina Instagram.
v1.48.1Inglese: descrizioni delle card Tools, badge Instagram e Security, e i residui della pagina Statistiche.
v1.48.0Tools: ogni card mostra ora se lo strumento e' solo acceso o davvero configurato — pastiglia verde Configured o ambra Setup needed, col dettaglio nel tooltip (API key mancante, SMTP mai testato, titolare del trattamento non compilato, numero WhatsApp assente, quante protezioni attive, quanti advert, quante visite registrate, quanti siti con chiave). Chi non ha nulla da configurare non mostra pastiglia. Inoltre: la voce di menu del plugin e' forzata al primo posto della barra laterale con menu_order, e la pagina Statistiche e' in inglese.
v1.47.8Installations: il pulsante Services e' passato sulla riga del sito, dopo Edit/Save della API key, e carica i servizi di quel sito via AJAX senza ricaricare la pagina (secondo clic richiude). Tolti i pulsanti globali in cima e nell'intestazione: niente piu' pagina intera da caricare per vedere un sito solo.
v1.47.7Installations, terza passata sui servizi: di default si vedono SOLO i servizi attivi (chip verdi), gli spenti finiscono dietro un "N off" apribile — prima erano 14 chip grigie per sito a fare rumore. Aggiunta la barra 4/18 con percentuale, chip con pallino e bordo (il colore non e' l'unico segnale) e stato d'errore in giallo leggibile.
v1.47.6Il menu del plugin sta in cima alla barra laterale di wp-admin, sopra la Bacheca (posizione 1 invece di 80).
v1.47.5Installations: la API key ora e' in sola lettura, con pulsante Edit che sblocca il campo e Save che la salva subito su quella riga, piu' la conferma "N API key saved". Prima il campo era sempre modificabile e si salvava solo insieme al resto: troppo facile sbagliare.
v1.47.4Installations: riga dei servizi ripulita — pannello grigio compatto rientrato sotto il sito, contatore attivi a sinistra, chip piu' piccole e su una riga sola dove possibile, servizi attivi ordinati per primi e quelli spenti in coda, molto piu' tenui.
v1.47.3Interfaccia in inglese, primo blocco: elenco moduli (menu e card), Dashboard, pagina Installations e tutte le sezioni 2FA/passkey, compresi i messaggi di errore e il pulsante nella pagina di login.
v1.47.2Login: sistemata la spaziatura del blocco passkey — il separatore finiva sulla stessa riga di Log In perche' quella riga usa i float; ora c'e' clear, piu' aria sopra e sotto e il pulsante e' piu' alto.
v1.47.1Login: il pulsante Accedi con passkey ora sta dentro la card del form, sotto Log In, con un separatore oppure — prima era una card separata piu' in basso.
v1.47.0Nuovo: accesso a due fattori (TOTP) e passkey, dentro la pagina Security. 2FA con QR e chiave manuale, otto codici di riserva monouso, obbligo per ruolo e verifica in due passaggi al login. Passkey WebAuthn (ES256) con registrazione dal pannello e pulsante Accedi con passkey nella pagina di login, senza librerie esterne. Inoltre: il menu del plugin e' sempre in ordine alfabetico con Dashboard in cima, e la pagina Installazioni mostra con un click quali servizi sono attivi su ogni sito (pallino verde acceso, chip spenta se non attivo).
v1.46.7Fix: il pulsante Aggiorna i siti selezionati non faceva nulla — il JS disabilitava il bottone prima dell'invio e un bottone disabilitato non manda il proprio valore, quindi l'azione non arrivava al server. Ora l'azione viaggia in un campo nascosto. Aggiunti anche l'avviso quando non e' selezionato nessun sito e la rimozione del limite di tempo PHP durante il giro di aggiornamenti.
v1.46.6Installazioni: la API key di ogni sito e' mostrata in chiaro nel campo (era mascherata), cosi' si vede e si corregge al volo.
v1.46.5Le API key si registrano da sole: al controllo aggiornamenti ogni sito comunica al mothership la propria chiave (POST, una volta a settimana), quindi la pagina Installazioni si popola senza incollare niente. Nuovo endpoint inst-key sul mothership che accetta la registrazione solo dopo aver verificato la chiave chiamando il sito stesso. Il mothership per se stesso usa la propria chiave locale.
v1.46.4Installazioni: import una-tantum delle API key da un file JSON (wp-content/uploads/ccs-keys.json) — le chiavi entrano al primo caricamento del wp-admin e il file viene cancellato subito dopo.
v1.46.3Pagina Installazioni: da qui si lanciano gli aggiornamenti dei siti, con spunta per sito, seleziona-tutti, conferma e riepilogo esito. Nuovo endpoint REST self-update protetto da API key e permesso plugin_manage, con fallback automatico per i siti con versioni piu' vecchie.
v1.46.2Banner: il pallino delle preferenze ora fa da interruttore — un clic apre il pannello, un altro lo richiude. Corretta anche l'icona del pallino, che sui temi con padding sui button e flexbox veniva compressa a 6px e si vedeva come un puntino: badge e SVG blindati a 40x40 e 20x20.
v1.46.1Fix "The link you followed has expired" su Cerca aggiornamenti: l'updater e' condiviso da piu' plugin e le istanze diverse da quella che aveva inviato il form morivano su check_admin_referer; ora la verifica del nonce e' non fatale. La cache aggiornamenti viene invalidata a ogni rilascio e scartata se piu' vecchia della versione installata, quindi il footer non resta mai indietro. Corretti i caratteri \xNN mostrati al posto di frecce e icone nei widget della bacheca.
v1.46.0GDPR & Cookie (modulo 1.3.0): i link a Informativa privacy, Cookie policy e Condizioni di vendita compaiono anche nella schermata 'Le tue preferenze' del banner, non solo nella prima. I tre link si calcolano una volta sola e mostrano solo i documenti effettivamente impostati.
v1.45.4Nuova pagina Installazioni (solo mothership): per OGNI plugin del catalogo mostra su quali siti e' installato, con versione installata vs ultima disponibile, versione WordPress, ultimo contatto e origine del dato, piu' i totali in cima e il pulsante Ricontrolla le versioni. Aggiunta anche la card negli Strumenti della Dashboard.
v1.45.3Mothership: il catalogo si allinea da solo al plugin. A ogni cambio versione l'elenco "cosa contiene" viene rigenerato dai moduli reali (prima era scritto a mano ed era rimasto indietro: mancavano SMTP, GDPR & Cookie, Editor Classico, Instagram) e ogni modulo nuovo nasce attivo sul mothership; sugli altri siti resta OFF come prima.
v1.45.2Dashboard: card Strumenti e riquadri Funzionalita' sempre in ordine alfabetico per nome (i moduli nuovi si inseriscono da soli al posto giusto); ordinato anche l'elenco "cosa contiene" sul sito degli aggiornamenti.
v1.45.1Fix pulsanti banner: aggiunto flex:0 0 auto, sui temi che usano flexbox aggressivo (Rey) i pulsanti venivano compressi a 34px e il testo andava a capo.
v1.45.0GDPR & Cookie (modulo 1.2.0): il banner mostra anche il link alle Condizioni di vendita, oltre a privacy e cookie policy. Pulsanti del banner blindati contro i temi che ridefiniscono i button (Rey, Betheme e simili): padding, bordi, raggio, colore dell'accento e allineamento non vengono piu' sovrascritti dal CSS del tema.
v1.44.0GDPR & Cookie (modulo 1.1.0): nuovo blocco 'Pagine dei documenti' in cima alla scheda Documenti. Per privacy, cookie e condizioni di vendita si sceglie la sorgente (generata dal plugin, pagina scritta a mano, servizio esterno come iubenda, non usata), la pagina ufficiale con stato reale (pubblicata/bozza/cestino) e i bottoni Apri, Modifica e Crea. Il plugin elenca da solo le pagine del sito che somigliano a quel documento, con Usa questa e Metti in bozza, e avvisa se ne trova piu' di una pubblicata. Corretto il link ai documenti: prima poteva puntare a una pagina in bozza o nel cestino.
v1.43.0Updater 1.3.0: il controllo aggiornamenti manda anche la versione installata (parametro v), cosi' il mothership sa quale versione gira su ogni sito. Nessun dato personale: solo URL del sito, versione WordPress e versione plugin.
v1.42.0Google Reviews (modulo 1.1.0): nuova card "Link per raccogliere recensioni" nella pagina admin — link writereview generato dal Place ID, campo copiabile con bottone Copia link e apertura diretta del form Google.
v1.41.0Dashboard: la card Funzionalita' diventa una griglia di riquadri cliccabili (2-4 colonne, evidenziati quando attivi) con contatore dei moduli attivi, al posto dell'elenco a tutta larghezza.
v1.40.2Modulo SMTP: la pagina Stato mostra ora “Ultimo invio riuscito” e azzera l’ultimo errore dopo un invio andato a buon fine (basta errori vecchi che restano visibili anche quando la posta parte); log del test SMTP corretto: redige solo le credenziali del client, lasciando visibili i codici di risposta del server.
v1.40.1Stato aggiornamenti e pulsante Cerca aggiornamenti spostati nel footer fisso del plugin (via la card dalla Dashboard). FIX: le spunte comparivano come \xe2\x9c\x93 perche' gli escape esadecimali erano fra apici singoli, dove PHP non li interpreta: sostituiti con entita HTML. class-ccs-updater.php portato a 1.2.0 e riallineato in tutti i plugin che lo condividono (il guard class_exists fa vincere la prima copia caricata).
v1.40.0Nuovo modulo GDPR & Cookie: banner a 4 categorie con Rifiuta in evidenza, blocco preventivo di 48 servizi di terze parti (script e iframe neutralizzati prima del consenso), Google Consent Mode v2, registro consensi con export CSV e retention, generatore di Privacy Policy, Cookie Policy e Condizioni di vendita, form richieste dell'interessato agganciato agli strumenti nativi di WordPress.
v1.39.1Pagina principale riorganizzata: box Aggiornamenti reso compatto (eliminato il vuoto centrale) e spostato in alto, subito sotto la card autore.
v1.39.0Nuovo modulo SMTP: invio email via server SMTP esterno (preset provider, mittente forzato, Return-Path, test con debug del dialogo SMTP, connessione di backup automatica, log invii)
v1.38.0Nuove route REST: media/sideload (download immagini da URL con whitelist domini, anti-SSRF, verifica MIME reale e deduplica per origine) e postmeta (scrittura mirata delle meta custom non esposte da wp/v2). Servono agli import massivi sui siti senza WP-CLI.
v1.37.1Antispam: il blocco accessi registra a log solo la transizione sano->bloccato, non ogni tentativo successivo (un brute-force sostenuto riempiva la tabella di log).
v1.37.0Antispam v1.1.0: token obbligatorio sui form (blocca i POST diretti all'endpoint REST), Cloudflare Turnstile finalmente operativo (widget + verifica server, anche su wp-login), rate-limit invii form per IP, rate-limit tentativi di accesso con whitelist e sblocco da pannello, rilevamento IP condiviso che disattiva i blocchi per IP dietro proxy mal configurati, fix dbDelta sulle chiavi delle tabelle spam.
v1.36.0Nuovo modulo Editor Classico: ripristina l'editor classico (TinyMCE) per articoli, pagine e CPT, con editor predefinito configurabile, switch per singolo contenuto (link nella lista, voce nel menu dell'editor a blocchi, link nel box Pubblica) e memoria dell'ultimo editor usato.
v1.35.3IG gallery: proxy video con cache su disco (uploads/ccs-ig-cache, download una tantum + redirect a file statico con Range) - i video partono davvero e si vedono per intero in loop; pulizia cache 7gg
v1.35.2IG gallery: card hoverata in primo piano dal primo frame (priorita renderOrder istantanea; la card in rientro resta sopra le normali ma sotto la nuova)
v1.35.1IG gallery: card ingrandita in primo piano (renderOrder + z), scroll attivo anche durante lo zoom hover
v1.35.0Instagram gallery: anteprima video in autoplay (muted/loop via proxy), hover su card = pausa scroll + zoom 50% con easing in/out, card in primo piano
v1.34.7Instagram OAuth FIX: redirect URI senza query string (Instagram sostituisce la query con code/state -> pagina bianca); callback su hook admin_post generico + messaggio chiaro se sessione WP assente
v1.34.6Instagram gallery: avviso 'nessun account collegato' chiarito (solo admin, con istruzioni)
v1.34.5Instagram gallery: avviso 'nessun account collegato' chiarito (solo admin, con istruzioni); guida app Meta aggiornata
v1.34.4Instagram: guida app Meta allineata al flusso attuale (Crea app > Altro > Business > Add product Instagram); nota per app con altri use case
v1.34.3Instagram: guida configurazione app Meta riscritta — passi numerati, link a developers.facebook.com, distinzione da Business Suite, avviso ID app Instagram vs ID generale, requisiti account professionale/tester
v1.34.2WhatsApp FIX inquadratura foto non quadrate: l'immagine veniva prima ritagliata a quadrato e poi inquadrata, quindi la parte eccedente di una foto verticale/orizzontale era tagliata e irraggiungibile (non si poteva trascinare). Ora l'inquadratura usa le proporzioni reali della foto: gia al 100% una foto verticale si trascina su/giu (e una orizzontale a dx/sx), lo zoom aggiunge liberta su entrambi gli assi. Il rapporto viene rilevato automaticamente dalla foto.
v1.34.1WhatsApp FIX: sul frontend l'inquadratura di avatar/icona poteva risultare deformata o fuori posto (diversa dall'anteprima in admin) perche molti temi applicano img{max-width:100%;height:auto} che sovrascriveva le dimensioni dell'inquadratura. Ora gli stili inline includono max-width/max-height:none e il widget ha una regola difensiva contro gli stili img globali del tema.
v1.34.0WhatsApp (modulo 1.2.0): editor 'Riposiziona immagine' stile social — si apre una finestra con la foto grande, la TRASCINI col mouse dentro la cornice circolare e zoomi con rotella o slider; Applica/Annulla. Si apre anche automaticamente appena scegli una foto dai Media. Corretto il modello di inquadratura (ora sposta davvero l'immagine, funziona con qualsiasi foto). In piu: 5 icone WhatsApp predefinite tra cui scegliere (Classica, Piena, Contorno, Cornetta, Chat) mostrate come galleria cliccabile.
v1.33.1WhatsApp FIX inquadratura: a zoom 100% la foto riempie gia il cerchio e gli slider orizzontale/verticale non potevano avere effetto (sembravano rotti). Ora: cerchio di anteprima piu grande (120px) e TRASCINABILE col mouse/dito, zoom con la rotella direttamente sul cerchio, slider sincronizzati, e avviso quando lo zoom e al 100% che spiega di zoomare prima di spostare l'inquadratura.
v1.33.0WhatsApp (modulo 1.1.0): icona del bottone personalizzabile (WhatsApp classica o immagine dai Media), posizione regolabile con distanza dal bordo laterale e dal fondo in px (es. per alzarlo sopra un cookie banner), e inquadratura delle foto (zoom + pan orizzontale/verticale con anteprima circolare live) sia per l'avatar dell'agente che per l'icona custom. L'inquadratura si azzera quando scegli una nuova foto.
v1.32.2WhatsApp: il render del widget è ora la funzione riutilizzabile ccs_wa_render() (hook wp_footer invariato). Utile per landing/template custom che terminano con exit prima del footer: basta chiamare ccs_wa_render() prima di .
v1.32.1WhatsApp FIX: il pulsante "Scegli dai Media" per l'avatar non faceva nulla — il controllo su wp.media avveniva prima che il media uploader fosse caricato (script nel body vs footer) e l'enqueue usava l'hook invece di $_GET[page]. Ora il picker si apre correttamente.
v1.32.0Nuovo modulo WhatsApp: bottone flottante con box chat (agente, avatar, messaggio di benvenuto), apertura wa.me con messaggio precompilato (placeholder %title% e %url%), modalità diretta o box, posizione dx/sx, colore, visibilità desktop/mobile, ritardo di comparsa, fascia oraria (controllo lato client, compatibile con la cache di pagina), shortcode [ccs_whatsapp] e anteprima live nelle impostazioni. Ispirato a WP WhatsApp Chat.
v1.31.0Ads Manager FIX IMPORTANTE: il codice HTML degli advert veniva salvato con le virgolette escapate (mancava wp_unslash su $_POST), producendo src=\" e href=\" nell'output: immagini rotte e link non funzionanti quando l'advert veniva inserito via shortcode. Ora il salvataggio fa l'unslash corretto e all'aggiornamento gli advert gia salvati vengono riparati automaticamente (una tantum). Aggiunta anche la card "Anteprima live" nel form dell'advert: mostra in tempo reale come sara reso [ccs_ad] mentre digiti (titolo, immagine, link, codice HTML, placeholder %image% %link% %title% %id%).
v1.29.0Statistiche: la card 'Ultime 48 ore' diventa vista giornaliera a piena larghezza — una riga per giorno (14 giorni indietro), barra = totale visite del giorno.
v1.28.1Statistiche: FIX layout della pagina — le sezioni affiancate (Piu viste / Referrer e Mappa / tabelle Localita) si sovrapponevano su schermi larghi. Passate a griglia CSS robusta (minmax) con incolonnamento automatico sotto i 1100px; niente piu overlap ne spazi vuoti.
v1.28.0Due nuovi moduli. Duplicate Page: duplica pagine, articoli e custom post type con un click dalla lista dei contenuti (copia contenuto, riassunto, meta, tassonomie e attributi; stato, suffisso titolo e redirect configurabili). Username Changer: cambia lo username (user_login) di un utente in sicurezza dalla dashboard, senza perdere contenuti, ruoli o meta. Entrambi i moduli con toggle, default OFF.
v1.27.0Instagram: nuova galleria CircularGallery WebGL con shortcode [ccs_ig_gallery] (full-width, fino a 48 post, proxy immagini same-origin); pulsante Connetti con Instagram (OAuth, nessun token da incollare); auto-rinnovo giornaliero del token; form Instagram aggiornato con account Business di default.
v1.26.0FIX importante: dopo aver salvato (es. dopo aver scelto un'immagine) le impostazioni sembravano sparire. Causa: cache statica in ccs_section() che non rifletteva le scritture nello stesso caricamento pagina, ri-renderizzando il form con dati stantii. Ora legge sempre il valore aggiornato. Riguarda Branding e tutti i moduli.
v1.25.0Branding login: FIX opzioni 'Nascondi torna al sito' e 'Nascondi selettore lingua' — con l'effetto vetro attivo non venivano applicate (la card glass display:table vinceva sul display:none). Ora l'occultamento e applicato dopo il glass e funziona.
v1.24.0Branding login glass: il selettore lingue e ora compatto, alto come le altre due card (select e bottone rimpiccioliti, meno padding).
v1.23.0Branding login glass: link e selettore lingue tutti centrati e con la stessa card scura sfumata; opzione Nessun logo. Consolida le rifiniture 1.22.x.
v1.22.0Modulo Branding, pagina login: (1) opzione "Nessun logo" — se il campo logo e vuoto non viene mostrato alcun logo, nemmeno quello di WordPress. (2) Con l'effetto vetro attivo, i link in basso (password persa / torna al sito) ora sono racchiusi in una card scura con blur, cosi restano leggibili anche su sfondi chiari.
v1.21.0Modulo Branding: schemi colore admin ridotti a 3 stili — Default WordPress, Claude (caldo, accento corallo) e Vetro (glass). Il tema Vetro rifatto: il vetro con blur ora e solo su menu e admin bar, l'area contenuti resta chiara cosi tutto il testo e leggibile (risolto testo illeggibile su sfondo scuro). Rimossi i temi Catppuccin/Tokyo Night/Dracula/Nord/One Dark.
v1.20.0Modulo Branding: schema colori admin rifatto — 6 temi moderni (Catppuccin Mocha, Tokyo Night, Dracula, Nord, One Dark e Vetro/glass con blur come la pagina login) al posto degli schemi default WordPress, applicati a menu, admin bar, bottoni, link e focus per tutti gli utenti.
v1.19.0Modulo Branding: la regola "Applica nascondi voci a" ha una terza opzione — "A tutti tranne" utenti selezionati (selettore multiplo): le voci di menu restano visibili solo agli utenti scelti e nascoste a tutti gli altri.
v1.18.0Modulo Branding: il widget elenco pagine ora e a 3 colonne e non mostra piu la voce Dashboard (pagina corrente).
v1.17.0Modulo Branding: (1) nuova opzione "Widget per pagina" — un widget dashboard separato per ogni pagina/modulo attivo con dati riepilogativi reali (visite oggi/7gg, spam e IP bloccati, adverts e gruppi, rating recensioni, stato cache, opzioni sicurezza...). (2) Effetto vetro esteso anche al box messaggio della pagina Password persa. (3) FIX importante: la pagina Branding ora salva Login e Dashboard insieme — prima salvando un tab si azzeravano le impostazioni dell'altro.
v1.16.0Modulo Branding: il widget dashboard personalizzato puo ora elencare automaticamente le pagine attive di cornel's support (Dashboard, API e ogni modulo acceso), aggiornandosi da solo quando attivi nuovi moduli. Pulsante Log In con angoli leggermente piu arrotondati. Blocco login, logo e link (password persa / torna al sito) ora centrati.
v1.15.0Modulo Branding: nuova opzione "Effetto vetro" per la pagina di login — form e box messaggio con sfondo scuro semi-trasparente e blur (glassmorphism), etichette e link (password persa / torna al sito) resi chiari e leggibili con ombra.
v1.14.0Nuovo modulo Branding / White Label: personalizzazione della pagina di login (logo, link, sfondo, colori accento, messaggio, CSS libero, nascondi 'Torna al sito') e della dashboard wp-admin (logo admin bar, rimozione menu WordPress, testo footer, rimozione widget core, welcome panel, widget personalizzato, schema colori forzato, nascondere voci di menu con scope solo-non-admin, CSS libero). Selettore immagini con media library. Modulo con toggle, default OFF.
v1.13.0Statistiche complete stile Jetpack: referrer esterni (host normalizzato, self-referral esclusi, aggregato giornaliero), titoli di post/pagine nelle pagine più viste, mappa mondo interattiva colorata per intensità (jsVectorMap da CDN, solo admin), regione e città dei visitatori (stesso lookup ip-api, tab Paesi/Regioni/Città), nomi paese localizzati. Retention aggregati 1 anno.
v1.12.0Modulo Statistiche esteso: pagine più viste (aggregato giornaliero per path, retention 1 anno), log ultimi visitatori con IP e paese (geolocalizzazione ip-api.com gratuita con cache 7 giorni per IP, bandierine emoji), classifica paesi con visite e IP unici. Rilevamento IP corretto dietro reverse proxy (CF-Connecting-IP / X-Real-IP / X-Forwarded-For). Nota GDPR in pagina: IP e hash eliminati automaticamente dopo la retention configurabile, i totali aggregati restano.
v1.11.0Nuovo modulo Statistiche (stile Jetpack Stats): beacon JavaScript cache-proof che conta le pageview (bot e utenti loggati esclusi di default), aggregato orario nel database, visitatori unici giornalieri con hash anonimo IP+browser (ritenzione configurabile). Sparkline delle ultime 48 ore + contatore del giorno nella admin bar con dropdown oggi/ieri/7 giorni. Pagina admin con card riepilogo, grafico 48h, tabella ultimi 30 giorni e impostazioni.
v1.10.0Nuova pagina Antispam a tab (Impostazioni/Statistiche/Blacklist): protegge commenti, Contact Form 7 e registrazione con honeypot, time-check HMAC, limite link, pattern (URL-only/BBCode/cirillico), blacklist parole-domini, StopForumSpam. Hub centralizzato sul mothership (spam-check con cache + blacklist globale condivisa fra tutti i siti, fallback locale). Auto-block IP recidivi (3 in 24h -> 7 giorni). Disattiva pingback/trackback e XML-RPC. Slot Cloudflare Turnstile predisposto. Statistiche per vettore/tecnica e log ultimi 100.
v1.9.0Nuova pagina Google Reviews: provider Google Places API (badge con media e totale reali + 5 top recensioni), refresh automatico giornaliero, shortcode [ccs_reviews] (griglia/lista/slider, filtro rating minimo) e [ccs_reviews_badge], widget, tema scuro, link Scrivi una recensione. Architettura a provider pronta per Google Business Profile API e SerpAPI.
v1.8.2FIX CRITICO: gli zip 1.8.0/1.8.1 non includevano class-ccs-updater.php (richiesto da cc-wordpress.php) — attivazione in fatal error sui siti. Lo zip ora contiene la cartella completa.
v1.8.1Cache, Database e Images WebP unificati in un'unica pagina "Cache" a tab (come Ads Manager). Ogni tab compare solo se il rispettivo modulo è attivo nelle Funzionalità.
v1.8.0Tre nuovi moduli stile WP-Optimize: Cache (page cache su disco con advanced-cache.php, TTL, gzip, minify HTML, preload, pulsante Svuota cache in admin bar, endpoint REST /cache/purge, purge universale incl. plugin terzi e OPcache), Database (pulizia revisioni/bozze/cestino/spam/transient/meta orfani + OPTIMIZE TABLE) e Images WebP (conversione on-upload e bulk + serving via .htaccess). NOVITÀ POLICY: tutte le funzionalità partono OFF — si attivano manualmente dalla card Funzionalità della Dashboard.
v1.7.1Box Aggiornamenti in Dashboard ridisegnato a card (stile card autore) + updater condiviso v1.1.0 con pagina Dashboard come prima voce di menu nei plugin che la usano.
v1.7.0Moduli attivabili dalla Dashboard (feature toggles per Admin Notices, Instagram, Security, Migra Sito, Ads Manager) + auto-aggiornamento nativo dal repository wordpress-support.cornelcaba.com con box Aggiornamenti in Dashboard.
v1.6.0Nuova pagina Ads Manager (stile AdRotate): adverts con immagine/codice HTML e placeholder, gruppi con rotazione pesata, scheduling con data inizio/fine, statistiche giornaliere impression/click con CTR, sparkline SVG e filtro crawler. Shortcode [ccs_ad] e [ccs_group], widget e funzioni PHP.
v1.5.5Admin Notices: fix pulsanti Nascondi per me/per tutti che non rispondevano — WP spostava le notice fuori dal container (aggiunta classe inline + handler delegato a document).
v1.5.4Admin Notices: nuova sezione "Notice attive adesso" per gestire (Nascondi per me / per tutti) le notice live direttamente dalla pagina del plugin.
v1.5.3Release precedente.
v1.4.0Prima versione pubblicata.