Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jobbyphp/jobby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: FernleafSystems/jobby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 10 commits
  • 30 files changed
  • 1 contributor

Commits on Jan 23, 2026

  1. feat!: Upgrade to PHP 8.2+, Symfony 6.4+, and replace SwiftMailer wit…

    …h Symfony Mailer
    
      BREAKING CHANGES:
      - Minimum PHP version raised from 5.6 to 8.2
      - SwiftMailer replaced with Symfony Mailer
      - Helper constructor signature: ?MailerInterface instead of ?\Swift_Mailer
      - Helper::sendMail() returns Symfony\Component\Mime\Email instead of Swift_Message
      - SerializableClosure wrapper no longer supported (pass raw closures directly)
    
      ## Dependency Updates
    
      - php: ^8.2
      - symfony/mailer: ^6.4|^7.0|^8.0 (new, replaces swiftmailer/swiftmailer)
      - symfony/process: ^6.4|^7.0|^8.0
      - symfony/filesystem: ^6.4|^7.0|^8.0 (dev)
      - dragonmantank/cron-expression: ^3.6
      - opis/closure: ^3.6|^4.0
      - phpunit/phpunit: ^10.5|^11.0 (dev)
    
      Removed:
      - swiftmailer/swiftmailer (abandoned)
      - mp091689/dump-die (dev dependency)
    
      ## Core Changes
    
      ### src/Helper.php
      - Complete mailer rewrite using Symfony Mailer
      - New buildMailerDsn() method converts config to Symfony DSN format
      - SMTP security mapping preserved from SwiftMailer behavior:
        - 'ssl' → smtps:// (implicit TLS, port 465)
        - 'tls' → smtp:// (STARTTLS auto-negotiated, port 587)
        - null → smtp:// (plain or STARTTLS if available)
      - Credentials properly URL-encoded for special characters
    
      ### src/Jobby.php
      - Opis Closure 4.x compatibility: use serialize() function instead of
        SerializableClosure class (which now has private constructor)
      - Modernized array destructuring syntax
    
      ### src/BackgroundJob.php
      - Opis Closure 4.x compatibility: use unserialize() function
      - PHP 8.2+ constructor property promotion
      - Fixed implicit nullable parameter deprecation
    
      ### src/ScheduleChecker.php
      - CronExpression::factory() replaced with direct instantiation
      - PHP 8.2+ constructor property promotion
      - Fixed implicit nullable parameter deprecation
    
      ## Test Updates
    
      All test files migrated to PHPUnit 10/11:
      - setUp()/tearDown() return type declarations
      - @ExpectedException annotations → expectException() method calls
      - assertContains() for strings → assertStringContainsString()
      - assertInternalType() → assertIsArray(), assertIsString(), etc.
      - Static data providers (PHP 8.1+ requirement)
    
      ### tests/HelperTest.php
      - Mailer tests updated for Symfony Mailer mock (MailerInterface)
      - Added 7 parameterized DSN building tests covering:
        - sendmail, mail (native), smtp plain
        - smtp with auth, smtp with TLS, smtps with SSL
        - Special characters in credentials
    
      ### tests/BackgroundJobTest.php
      - Restored meaningful closure test (built-in function calls)
      - Updated mock setup for new Helper interface
    
      ### tests/JobbyTest.php
      - Added Opis Closure function imports
      - Verified closure serialization roundtrip
    
      ## Configuration
    
      ### phpunit.xml
      - Updated to PHPUnit 10+ schema
      - Replaced <filter><whitelist> with <source><include>
      - Added cacheDirectory for test performance
    
      ### .github/workflows/tests.yml (new)
      - CI matrix: PHP 8.2, 8.3, 8.4
      - Symfony version matrix: 6.4, 7.0, 8.0
      - Excludes PHP 8.2/8.3 with Symfony 8.0 (requires 8.4+)
    
      ## Documentation
    
      ### UPGRADE-3.0.md (new)
      - Complete migration guide for users upgrading from 2.x
      - SMTP security behavior documentation
      - Code examples for Helper class extension
      - Migration checklist
    
      ### README.md
      - Updated requirements section
      - Fork notice and attribution
      - Reference to upgrade guide
    
      ## Verification
    
      - 70 tests, 96 assertions, all passing
      - 5 skipped (platform-specific tests)
      - Tested on PHP 8.4.16
      - Full closure serialization flow verified
      - All SMTP DSN configurations verified
    paulgoodchild committed Jan 23, 2026
    Configuration menu
    Copy the full SHA
    cec7203 View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2026

  1. feat!: Upgrade to PHP 8.3+, PHPUnit 12, and add PHP 8.5 support

      BREAKING CHANGES:
      - Minimum PHP version increased from 8.2 to 8.3
      - PHPUnit requirement changed from ^10.5|^11.0 to ^12.0
    
      Changes:
      - Update composer.json PHP requirement to ^8.3
      - Update composer.json PHPUnit requirement to ^12.0
      - Add PHP 8.5 to CI test matrix
      - Convert PHPUnit annotations to PHP 8 attributes across all test files
      - Fix PHP 8.5 strict typing: cast getmypid() to string for fwrite()
      - Fix PHP 8.5 strict typing: add null check before is_file() call
      - Add explicit return type string|false to BackgroundJob::getLogfile()
      - Add UPGRADE-4.0.md migration guide
    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    ae6c4a2 View commit details
    Browse the repository at this point in the history
  2. expand test suite

    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    340cb3a View commit details
    Browse the repository at this point in the history
  3. tighten up types

    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    8acc432 View commit details
    Browse the repository at this point in the history
  4. feat!: Abstract mailer implementation behind MailerInterface

      Introduce Jobby\Mailer\MailerInterface to decouple job failure
      notifications from Symfony Mailer, allowing users to implement
      custom mailers (PHPMailer, native mail(), etc.).
    
      New components:
      - MailerInterface: defines send() contract for notifications
      - SymfonyMailerAdapter: default implementation using Symfony Mailer
      - NullMailer: no-op implementation for testing with mail recording
    
      Changes to Helper:
      - Constructor accepts MailerInterface|SymfonyMailerInterface|null
      - sendMail() now returns void instead of Email (BREAKING)
      - Email building logic moved to SymfonyMailerAdapter
    
      BREAKING CHANGE: Helper::sendMail() return type changed from Email
      to void. Test code asserting on the returned Email object must be
      updated to use NullMailer or mock MailerInterface instead.
    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    85d21c7 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    3957cd8 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    bdd8983 View commit details
    Browse the repository at this point in the history
  7. add qa repo

    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    a8c6d7f View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    075add9 View commit details
    Browse the repository at this point in the history
  9. Finish 4.0.0

    paulgoodchild committed Jan 26, 2026
    Configuration menu
    Copy the full SHA
    b33253a View commit details
    Browse the repository at this point in the history
Loading