Skip to content

Releases: SilverAssist/contact-form-to-api

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 03:22
Immutable release. Only release title and notes can be modified.
55259bf

What's Changed

  • chore(deps): bump actions/setup-node from 4.4.0 to 6.3.0 by @dependabot[bot] in #81
  • chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 in the github-actions-updates group by @dependabot[bot] in #82
  • chore(deps): bump picomatch by @dependabot[bot] in #83
  • chore(deps-dev): bump cssnano from 7.1.3 to 7.1.4 in the npm-dev-dependencies group by @dependabot[bot] in #85
  • chore(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 by @dependabot[bot] in #84
  • chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 in the github-actions-updates group by @dependabot[bot] in #86
  • chore(deps): bump softprops/action-gh-release from 2.6.1 to 3.0.0 by @dependabot[bot] in #88
  • chore(deps): bump actions/github-script from 8.0.0 to 9.0.0 by @dependabot[bot] in #87
  • chore(deps-dev): bump the npm-dev-dependencies group with 2 updates by @dependabot[bot] in #89
  • chore(deps): bump the github-actions-updates group with 2 updates by @dependabot[bot] in #90
  • chore(deps-dev): bump the npm-dev-dependencies group with 2 updates by @dependabot[bot] in #91
  • chore(deps-dev): bump the npm-dev-dependencies group with 2 updates by @dependabot[bot] in #92
  • chore(deps-dev): bump the npm-dev-dependencies group with 2 updates by @dependabot[bot] in #93
  • chore(deps-dev): bump cssnano from 7.1.9 to 8.0.1 by @dependabot[bot] in #94
  • chore(deps-dev): bump postcss from 8.5.14 to 8.5.15 in the npm-dev-dependencies group by @dependabot[bot] in #96
  • chore(deps-dev): update php-stubs/wordpress-tests-stubs requirement from ^6.6 to ^7.0 by @dependabot[bot] in #95
  • chore(deps-dev): bump cssnano from 8.0.1 to 8.0.2 in the npm-dev-dependencies group by @dependabot[bot] in #97
  • chore(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1 in the github-actions-updates group by @dependabot[bot] in #98
  • chore(deps-dev): bump postcss from 8.5.15 to 8.5.16 in the npm-dev-dependencies group by @dependabot[bot] in #99
  • chore(deps): bump softprops/action-gh-release from 3.0.1 to 3.0.2 in the github-actions-updates group by @dependabot[bot] in #100
  • chore(deps-dev): bump postcss from 8.5.16 to 8.5.19 in the npm-dev-dependencies group by @dependabot[bot] in #101
  • chore(deps-dev): bump postcss from 8.5.19 to 8.5.20 in the npm-dev-dependencies group by @dependabot[bot] in #103
  • chore(deps-dev): bump svgo from 4.0.1 to 4.0.2 by @dependabot[bot] in #104
  • chore(deps-dev): bump postcss from 8.5.20 to 8.5.23 in the npm-dev-dependencies group by @dependabot[bot] in #105
  • chore(deps-dev): bump the npm-dev-dependencies group with 2 updates by @dependabot[bot] in #106
  • chore(deps-dev): bump brace-expansion from 1.1.12 to 1.1.18 by @dependabot[bot] in #107
  • Adopt silverassist/coding-standards + silverassist/wp-coding-standards by @miguelcolmenares in #109
  • chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 by @dependabot[bot] in #102
  • Adopt silverassist/wp-plugin-kernel for plugin bootstrap by @miguelcolmenares in #110
  • Adopt shared CI workflow and quality-check scripts by @miguelcolmenares in #111
  • chore(ci): bump Node.js from 20 to 22 in workflows by @miguelcolmenares in #112
  • chore(deps-dev): bump the npm-dev-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #108
  • fix: Resolve lodash and yaml security alerts by @miguelcolmenares in #113
  • Release v2.5.0 by @miguelcolmenares in #114

Full Changelog: v2.4.0...v2.5.0

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Mar 08:22
Immutable release. Only release title and notes can be modified.

Full Changelog: v2.3.1...v2.4.0

v2.3.1

Choose a tag to compare

@github-actions github-actions released this 09 Mar 19:47
Immutable release. Only release title and notes can be modified.

Full Changelog: v2.3.0...v2.3.1

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Mar 22:07
Immutable release. Only release title and notes can be modified.

Full Changelog: v2.2.1...v2.3.0

CF7 to API v2.2.1

Choose a tag to compare

@github-actions github-actions released this 03 Mar 03:32
Immutable release. Only release title and notes can be modified.

Fixed

  • Release Build: Fixed missing assets from Composer packages in release ZIP
    • Settings Hub CSS (settings-hub.css) now included in build
    • GitHub Updater JS (check-updates.js) now included in build
    • Updated build script to preserve assets/ directories in SilverAssist packages

CF7 to API v2.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Mar 20:00
Immutable release. Only release title and notes can be modified.

Changed

  • Admin Dashboard UI Redesign: Aligned settings page with card-based design system
    • Expanded CSS with full card design system and CSS variables
    • Added version badge, status-indicator, and feature-status styles
    • Simplified Plugin Information section
    • Removed obsolete update check script for cleaner admin experience

Maintenance

  • GitHub Actions Dependencies: Updated CI/CD workflow dependencies
    • Bumped actions/upload-artifact from v6.0.0 to v7.0.0
    • Bumped actions/download-artifact from v7.0.0 to v8.0.0
  • Code Cleanup: Removed redundant CSS properties from resolved status indicator

CF7 to API v2.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Jan 17:08
Immutable release. Only release title and notes can be modified.

Added

  • Granular Alert Preferences: Per-submission failure alerts with granular control

    • New alert_types setting structure with threshold and individual options
    • maybe_send_individual_alert() triggers when a submission permanently fails after all retries
    • Individual alerts are event-driven (no cooldown) vs rate-limited threshold alerts
    • Privacy-first design: alert emails contain only error metadata (form name, endpoint, timestamp, response code, error message) - never user-submitted form data
    • Spam prevention: transient flag per log_id prevents duplicate alerts on retry
    • UI: "Alert Types" section with nested checkboxes for threshold and individual alerts
    • Threshold settings reorganized under clear subheading
    • Backward compatible: threshold alerts enabled by default, individual disabled
    • Integrated in LogsController::handle_retry_action() for retry exhaustion and max limit scenarios
  • Response Action Hook (cf7_api_after_response): New filter hook for extending plugin functionality

    • Fires after each API response is received (success or failure)
    • Provides complete response data (status code, headers, body, parsed JSON, duration)
    • Includes submission context (log ID, form ID, form title, form data, endpoint, retry info)
    • Enables developers to:
      • Store CRM lead IDs returned by APIs
      • Trigger notifications based on response content
      • Log to external monitoring services (Sentry, Bugsnag, etc.)
      • Send data to secondary endpoints (multi-endpoint support)
    • Hook only fires for HTTP responses (not WP_Error cases)
    • Minimal overhead when no callbacks are registered
    • See docs/API_REFERENCE.md for complete documentation and examples
  • Form Filter Dropdown: Visible dropdown selector to filter logs by Contact Form 7 form

    • Dropdown appears in filter controls between Status and Date filters
    • Lists all forms that have at least one log entry
    • Shows "All Forms" default option to display logs from all forms
    • Gracefully handles deleted forms (displays as "Form #123")
    • Auto-submits on selection for immediate filtering (no button click needed)
    • Active filter tag shows selected form with individual remove capability
    • Filter persists across pagination and combines with status/date filters
    • Alphabetically ordered by form title for easy navigation
    • New LogReader::get_forms_with_logs() method retrieves distinct forms with logs
    • Comprehensive unit test coverage (6 tests for all scenarios)

CF7 to API v2.0.0

Choose a tag to compare

@github-actions github-actions released this 25 Jan 04:28
Immutable release. Only release title and notes can be modified.

Added

  • MVC Architecture: Complete restructuring following Model-View-Controller principles
    • Model Layer: Type-safe domain models (LogEntry, FormSettings, ApiResponse, Statistics)
    • Repository Layer: Data access interfaces (LogRepositoryInterface, SettingsRepositoryInterface)
    • Controller Layer: Request routing and hook management
      • Controller/Admin/LogsController: Admin logs page routing
      • Controller/ContactForm/SubmissionController: Form submission handling
    • Service Layer: Business logic separated from controllers
      • Service/Logging/: LogWriter, LogReader, LogStatistics, RetryManager
      • Service/Security/: EncryptionService, SensitiveDataPatterns
      • Service/ContactForm/SubmissionProcessor: API communication logic
    • View Layer: Reusable partials for maintainability
      • View/Admin/Logs/Partials/: StatisticsPartial, DateFilterPartial, ExportButtonsPartial
      • View/Admin/Settings/Partials/GlobalSettingsPartial
    • Config Layer: Centralized configuration (Config/Settings)
  • Unresolved Errors Filter: New filter to show only errors that haven't been successfully retried
    • "Unresolved" tab in logs table shows errors pending resolution
    • "All Errors" renamed to distinguish from unresolved filter
    • Error resolution counts displayed in filter badges
  • Search by Sender Name/Lastname: Extended search functionality to filter logs by sender name
    • Search now includes name and lastname fields from form submissions
    • Respects anonymization rules: fields marked as sensitive via settings are excluded from search
    • Maintains existing SQL-based search for endpoint and error_message (full dataset)
    • PHP-based filtering for name/lastname applied to the first 5,000 logs in the current sort order; on sites with more than 5,000 logs, name/lastname searches may not include older matches

Changed

  • Visual Resolved Indicator: Errors with successful retries now show a "Resolved" badge
    • Green badge appears next to error status when retry was successful
    • Tooltip explains the error was resolved via manual retry
    • Makes it easy to identify resolved errors at a glance

Developer

  • New Service Classes: Specialized services following Single Responsibility Principle
    • Service\Logging\LogWriter: Log creation, updates, deletion with encryption
    • Service\Logging\LogReader: Log retrieval with decryption
    • Service\Logging\LogStatistics: Statistics and metrics calculations
    • Service\Logging\RetryManager: Retry management and error resolution tracking
    • Service\ContactForm\SubmissionProcessor: Form submission business logic
  • New Model Classes: Type-safe domain models with full PHPStan Level 8 compliance
    • Model\LogEntry: API request log representation
    • Model\FormSettings: Form configuration
    • Model\ApiResponse: API response data
    • Model\Statistics: Aggregated statistics
  • Exception Classes: Custom exceptions for better error handling
    • Exception\ApiException: API-related errors
    • Exception\ValidationException: Validation errors with detailed tracking
  • PSR-4 Namespace Organization: Proper directory structure
    • Service\Security\*: Security-related services
    • Config\Settings: Configuration management
  • Architecture Documentation: See docs/ARCHITECTURE.md for complete structure
  • Migration Guide: See docs/UPGRADE.md for 2.0.0 migration instructions

Notes

  • Quality Gates: PHPCS WordPress-Extra (0 errors) and PHPStan Level 8 (0 errors) compliance
  • All logging functionality migrated to dedicated services in Service\Logging\
  • See docs/UPGRADE.md for migration guidance

CF7 to API v1.3.13

Choose a tag to compare

@github-actions github-actions released this 23 Jan 18:51
Immutable release. Only release title and notes can be modified.

Added

  • New "From" Column in Logs Table (#54): Quick sender identification without opening log details
    • Displays sender name and masked email (e.g., John Doe <jo***@example.com>)
    • Extracts data from common form fields (name, firstname, your-name, email, your-email, etc.)
    • Email masking preserves privacy while allowing identification
    • Shows "Unknown" when sender info cannot be extracted

Changed

  • Renamed "Form" Column to "Channel" (#54): Better reflects the source/channel of submission
  • Improved Endpoint Column (#54): Fixed width with CSS text-overflow ellipsis
    • Full URL visible on hover via title attribute
    • Cleaner table layout without PHP-based truncation

Fixed

  • Empty Status Filter Bug (#54): Fixed table showing no results when URL has empty status parameter
    • Added ! empty() check to prevent filtering with empty string
    • URLs like ?status&date_filter now work correctly
  • Status Filter Auto-Submit (#54): Status dropdown now submits form automatically on change
  • "All Time" Date Filter Auto-Submit (#54): Previously only non-empty filter values triggered auto-submit

CF7 to API v1.3.11

Choose a tag to compare

@github-actions github-actions released this 23 Jan 02:42
Immutable release. Only release title and notes can be modified.

Fixed

  • Log Filters UI (#50, #48): Fixed broken filters after refactor
    • Filters now use the WordPress .filtered-by pattern
    • Active filters are shown as removable tags
    • "Clear all" link added, duplicate "Clear Filters" button removed
    • Unified into a single filter bar with native admin styles