IngotForge Form Viewer Changelog
================================

2.4.4
-----
- Replaced the remaining direct symlink deletion in the opt-in destructive
  uninstall path with WordPress's wp_delete_file() API.
- Preserved the existing upload-directory containment checks, recursive cleanup,
  symlink handling, and default data-retention behavior.

2.4.3
-----
- Canonicalized stored upload paths before deletion and resend-email attachment
  collection.
- Restricted file operations to existing regular files inside the plugin-managed
  uploads directory.
- Rejected traversal, foreign-host, malformed, out-of-root, and symlink-escape
  paths while preserving valid uploaded files.

2.4.2
-----
- Moved automatic unread-to-read entry updates out of the display-only entry
  page and into a dedicated manage_options action protected by a purpose-specific
  nonce.
- Updated Dashboard and Entries links to invoke that trusted action before
  redirecting to the clean entry-detail URL.
- Preserved automatic read tracking while preventing ordinary or forged entry
  view requests from changing stored status.

2.4.1
-----
- Made administrator nonce verification directly visible in each affected
  request handler so WordPress Plugin Check can verify the existing CSRF
  protection without relying on interprocedural analysis of a helper.
- Added the missing translator explanation for an upload-error placeholder.
- Preserved all 2.4.0 behavior, storage identifiers, form processing, email,
  upload, entry, import/export, privacy, block, and administration features.

2.4.0
-----
- Replaced the three-character internal prefix with the collision-safe
  ingofovi_ / ingofovi- convention across code, stored data, routes, assets,
  markup, and documentation.
- Removed Tested up to from the main PHP header; it remains in readme.txt.
- Added schema-aware recursive validation and sanitization for form JSON used
  by saving, importing, and test-email previews.
- Restricted uploaded files to upload fields declared by the active form while
  retaining required, multiple-file, count, size, extension, and MIME checks.
- Centralized administrator capability and nonce enforcement before privileged
  request values are processed.
- Preserved the complete existing feature set and user-facing behavior.

2.3.2
-----
- Corrected scalar POST handling so request values are type-checked, unslashed,
  and sanitized at the point of use without changing accepted scalar values.
- Shortened the WordPress.org short description to remain within its
  150-character limit.
- Preserved the clean IngotForge rebranding and all 2.3.1 functionality.

2.3.1
-----
- Completed a direct, clean-slate IngotForge Form Viewer rebrand throughout
  PHP, JavaScript, CSS, database identifiers, request names, hooks, class files,
  assets, documentation, and translation sources.
- Standardized the PHP namespace on IngotForgeFormViewer.
- Standardized internal identifiers on ingofovi_ and slugs/assets on ingofovi-.
- Standardized storage on the ingofovi_forms and ingofovi_entries tables, ingofovi_settings
  option, ingofovi_field_* entry keys, ingofovi_* draft keys, and the
  ingotforge-form-viewer upload directory.
- Removed identifier migration, fallback tables, alias classes, alternate admin
  routes, alternate request endpoints, and alternate draft/upload locations.
- Retained the primary [ingotforge_form_viewer] shortcode and the two current
  aliases [ingotforge-form-viewer] and [ingofovi_form].
- Added Form Viewer > Tutorial / Manual and the packaged docs/MANUAL.md guide.
- Preserved all working functionality from version 2.2.7, including forms,
  entries, importer, email and test email, branding and typography, uploads,
  signatures, conditional logic, save-and-resume, CSV, privacy, maintenance,
  the dynamic block, and the unsaved-change protection correction.

2.2.7
-----
- Corrected false unsaved-change warnings caused by field-editor and color-
  picker initialization.
- Preserved the warning for genuine unsaved edits and validation-blocked saves.

2.2.6
-----
- Added independent, complete typography controls for the email logo caption
  and site name.

2.2.5
-----
- Added an independent email-logo border-radius control.

2.2.4
-----
- Corrected logo-border mode, thickness, color, and test-email synchronization.

2.2.3
-----
- Added configurable logo-border modes, thickness, and color.
- Corrected test-email request sanitization.

2.2.2
-----
- Added recipient-driven administrator and submitter test emails in the Email
  tab without saving the form or leaving the page.

2.2.1
-----
- Corrected Forms-table spacing between Shortcode and Entries.

2.2.0
-----
- Added the dashboard, importer, structured editor, entry tools, dynamic block,
  privacy tools, system repair, responsive forms, and modern administration.
