External Links to Footnotes - Release History

1.9.31
- Preserved duplicate, encoded, ordered, and signed non-tracking query parameters during URL cleaning.
- Serialized snapshot mutations with an atomic option lock and queued post reconciliation after lock contention.
- Made Overview read stored state and schedule background work without synchronous content parsing.
- Added fail-open DOM size and anchor limits with LIBXML network access disabled.
- Applied header, footer, sidebar, navigation, and social exclusions per link in mixed builder layouts.
- Disabled final-output caching when request-sensitive output filters are active.
- Moved state-changing statistics actions to nonce-protected POST requests.
- Neutralized spreadsheet formulas in CSV exports and added content hashes to indexed post statistics.
- Prefixed the manual placement shortcode as `[enok_extref_resources]` to prevent conflicts with other plugins.

1.9.30
- Made release ZIP output reproducible across supported build systems.
- Kept all frontend and administration behavior unchanged.

1.9.29
- Hardened filtered Footnotes markup and browser-rendered JSON payloads against unsafe output.
- Removed avoidable raw admin output while preserving extension hooks and existing frontend behavior.
- Prepared ownership metadata for the official Enok SEO WordPress.org account.

1.9.28
- Limited the selected-Footnote highlight to the destination link instead of the full list row.
- Removed the inset edge accent so the highlight cannot overlap link text.
- Hardened production packaging with an explicit runtime-file allowlist and zero-warning Plugin Check gates.

1.9.27
- Replaced the return glyph with a text-style up arrow while preserving all accessible labels and screen-reader text.
- Highlighted the selected Footnote using CSS only, with no frontend JavaScript or animation.
- Added sticky-header scroll clearance and theme-overridable highlight variables.

1.9.26
- Prepared the free plugin as a standalone WordPress.org submission candidate.
- Removed development-only content seeding from production WP-CLI commands.
- Added focused user and developer documentation, verified publisher metadata, and strict release gates.
- Prevented background initial scans and simultaneous post-save events from double-counting statistics.
- Normalized production archive permissions for reliable installation across common hosting environments.
- Ensured uninstall removes temporary render-cache entries along with plugin settings and statistics.
- Unified distribution around one production ZIP.

1.9.25
- Kept linked images inline and unchanged.
- Aligned linked-image handling between frontend rendering and statistics.

1.9.24
- Added conservative embed-wrapper detection so links inside recognized social and Gutenberg embeds remain inline.
- Added a filter for custom embed tokens.

1.9.23
- Clarified always-inline root-domain behavior and automatic subdomain matching.
- Added regression coverage for subdomains and X/Twitter aliases.

1.9.22
- Grouped x.com, twitter.com, and t.co aliases for always-inline matching.

1.9.21
- Improved Elementor container placement so Footnotes append after the final article block.

1.9.20
- Added the optional Footnotes URL-cleaning setting.

1.9.19
- Removed common tracking parameters and URL fragments from rendered Footnotes destinations by default.

1.9.18
- Preserved original linked words in article content while moving only the destination URL.

1.9.17
- Added content-marker fallback placement for layouts whose final article region is assembled in multiple passes.

1.9.16
- Restored missing Footnotes sections in layouts that rendered markers before the final layout pass.

1.9.15
- Added URL, APA 7, MLA 9, Chicago/Turabian, and IEEE-style Footnotes display templates.

1.9.14
- Corrected inline marker spacing so references bind to the preceding linked phrase.

1.9.13
- Standardized clean body output with preserved anchor text and compact superscript references.

1.9.12
- Improved URL-literal anchor handling and Footnotes display consistency.

1.9.11
- Changed builder compatibility to complete-layout hooks by default, preventing mid-module Footnotes placement.

1.9.10
- Added skip-by-ID/URL controls and corrected post-type enforcement.

1.9.0 through 1.9.9
- Modularized administration, CLI, KPI, Overview, content-processing, and statistics responsibilities.
- Added deterministic diagnostics, compatibility checks, builder-aware placement, and indexed Overview queries.
- Improved content-only scoping so header, footer, sidebar, navigation, and social links remain untouched.

1.8.0 through 1.8.6
- Added accessible semantic relationships, optional citation JSON-LD, and deterministic machine payload hooks.
- Added global processing controls, Overview-first administration, optimized-page visibility, and automatic site-scan feedback.

1.7.0 through 1.7.6
- Introduced the minimal Overview with one processing toggle and one primary content metric.
- Added automatic statistics repair and page-builder placement improvements.

1.6.0 through 1.6.2
- Simplified Options and Stats with progressive disclosure and WordPress-native administration styling.

1.5.0 through 1.5.6
- Added render caching, KPI exports, operator diagnostics, security hardening, and free-plugin isolation.

1.4.0 through 1.4.2
- Added extension-safe administration tabs and statistics lifecycle hooks.
- Improved fallback rendering for extension-provided tabs.

1.3.0 through 1.3.6
- Added event-driven per-post statistics, background initial indexing, nightly reconciliation, and operational status UI.

1.2.0
- Split core responsibilities into content, link utility, and statistics services.
- Replaced deprecated DOM encoding behavior and moved statistics rebuilding to background events.

1.1.0
- Added configurable marker size, local statistics, Enok SEO metadata, administration navigation, and extension hooks.

1.0.0
- Initial release.
