diff --git a/admin/views/page-catalog.php b/admin/views/page-catalog.php
index 7cdc1a2..0cc556d 100644
--- a/admin/views/page-catalog.php
+++ b/admin/views/page-catalog.php
@@ -132,6 +132,7 @@ $compat_warnings = 0;
$raw_desc = $entry['description'] ?? '';
$raw_rwp = $entry['requires_wp'] ?? '';
$raw_rphp = $entry['requires_php'] ?? '';
+ $raw_icon = $entry['icon_url'] ?? '';
$slug = is_string( $raw_slug ) ? $raw_slug : '';
$name = is_string( $raw_name ) ? $raw_name : $slug;
@@ -143,6 +144,7 @@ $compat_warnings = 0;
$desc = is_string( $raw_desc ) ? trim( $raw_desc ) : '';
$req_wp = is_string( $raw_rwp ) ? $raw_rwp : '';
$req_php = is_string( $raw_rphp ) ? $raw_rphp : '';
+ $icon_url = is_string( $raw_icon ) ? esc_url_raw( $raw_icon ) : '';
$website_url = '' !== $page_url ? $page_url : $homepage;
$has_detail = ( '' !== $website_url || '' !== $desc );
@@ -184,6 +186,11 @@ $compat_warnings = 0;
?>
+
+
+
+
+
|
|
@@ -382,4 +389,20 @@ $compat_warnings = 0;
/* Detail rows (always open): muted, attached to the row above. */
.robotstxt-manager-detail-row td { border-top: none !important; padding-top: 0; }
.robotstxt-manager-detail-description { color: #50575e; }
+
+/* Plugin icons: 64x64, 1:1, beside the name. */
+.robotstxt-manager-plugin-icon {
+ display: inline-block;
+ vertical-align: middle;
+ width: 64px;
+ height: 64px;
+ margin-right: 10px;
+ border-radius: 4px;
+ object-fit: contain;
+ background: #fff;
+}
+.robotstxt-manager-plugin-icon--placeholder {
+ border: 1px solid #dcdcde;
+ box-sizing: border-box;
+}
diff --git a/changelog.txt b/changelog.txt
index 7da32b6..c032561 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,22 @@
== Changelog ==
+= 1.2.1 =
+
+_Release date: 2026-08-17_
+
+**Added**
+
+* Plugin icons in the catalog: each row shows the plugin's `icon_url` from the Core API at 64×64 px (1:1, lazy-loaded) in the Plugin column; plugins without an icon get a plain white 64×64 placeholder.
+
+**Changed**
+
+* Plugin version 1.2.0 → 1.2.1. No database schema changes (no custom tables).
+
+**Compatibility**
+
+* WordPress: 4.4 - 7.1 (scan-verified: wp-compat clean from 4.4)
+* PHP: 8.0 - 8.5 (scan-verified: PHPCompatibility + manual feature audit)
+
= 1.2.0 =
_Release date: 2026-08-15_
diff --git a/readme.txt b/readme.txt
index b6ebec8..7b8c566 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,9 +3,9 @@ Contributors: javiercasares, robotstxt
Tags: dashboard, catalog, updates, subscriptions, management
Requires at least: 4.4
Tested up to: 7.1
-Stable tag: 1.2.0
+Stable tag: 1.2.1
Requires PHP: 8.0
-Version: 1.2.0
+Version: 1.2.1
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
@@ -92,6 +92,12 @@ Encrypted at rest using AES-256-CBC with a key derived from your site's WordPres
== Changelog ==
+= 1.2.1 =
+
+_Release date: 2026-08-17_
+
+* Plugin icons in the catalog rows (64×64, from the store's `icon_url`; white placeholder when missing).
+
= 1.2.0 =
_Release date: 2026-08-15_
diff --git a/robotstxt-manager.php b/robotstxt-manager.php
index fb9e7a3..c6d5428 100644
--- a/robotstxt-manager.php
+++ b/robotstxt-manager.php
@@ -3,7 +3,7 @@
* Plugin Name: Manager (by ROBOTSTXT)
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-manager
* Description: Client-side dashboard for the ROBOTSTXT plugin ecosystem. Lists the catalog from a remote Plugins Core install, resolves local install/update state, and installs, activates, and updates plugins directly from the store.
- * Version: 1.2.0
+ * Version: 1.2.1
* Requires at least: 4.4
* Requires PHP: 8.0
* Author: ROBOTSTXT
@@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
}
/** Plugin version. */
-define( 'ROBOTSTXT_MANAGER_VERSION', '1.2.0' );
+define( 'ROBOTSTXT_MANAGER_VERSION', '1.2.1' );
/** Absolute path to the plugin directory, with trailing slash. */
define( 'ROBOTSTXT_MANAGER_DIR', plugin_dir_path( __FILE__ ) );