Fixed: CSS inline values (font_size, line_height) explicitly re-sanitized before injection — absint() and range clamp added
Fixed: WordPress.org submission zip now uses correct folder name ‘smart-rtl-post’ (no version suffix)
Confirmed: WP_UNINSTALL_PLUGIN check present in uninstall.php
Confirmed: Plugin slug, Text Domain, and load_plugin_textdomain are all ‘smart-rtl-post’ — consistent
Confirmed: No raw variable outputs — all echo uses esc_html/esc_attr/esc_url/wp_kses_post
1.5.0
Added: register_activation_hook — sets default options on clean install using add_option() with autoload=no
Added: autoload=false on all register_setting() calls (WP 6.0+) — prevents options loading on every page, improves performance
Added: readme.txt tags now include ‘direction’ and ‘gutenberg’ for better WordPress.org search visibility
Confirmed: WP_UNINSTALL_PLUGIN security check already present in uninstall.php
Confirmed: CSS loads conditionally — only on RTL posts or when [rtl] shortcode detected
1.4.2
Fixed: transition_post_status condition tightened — now only fires when status changes exactly TO publish FROM non-publish (avoids publish→draft, publish→trash edge cases)
Fixed: Multisite uninstall now uses batch processing (100 sites per loop) — prevents server hang on large networks
Fixed: Added wp-block-code to CSS RTL selectors
Fixed: Version bumped in rtl-style.css, block-editor.js, and SMART_RTL_VERSION constant — all in sync
Fixed: .pot file updated to version 1.4.2; all 20 strings verified with correct text-domain
Fixed: readme.txt Stable tag matches plugin Version header — WordPress.org consistency
1.4.1
Fixed: Version comments in rtl-style.css and block-editor.js updated to 1.4.1
Fixed: wp_insert_post replaced with transition_post_status hook — default direction now only saves on actual publish/schedule, not on every draft save
Fixed: Multisite support added to uninstall.php — all sub-sites cleaned up on network delete