v0.2.0
Migrates the package onto the shared CI baseline and adds a real test suite. Includes two seeder fixes that change runtime behavior.
⚠️ Breaking
- Requires PHP
^8.2(was^8.1). PHP 8.1 consumers stay onv0.1.2.
Fixed
postal-codes:seednever cleaned up after itself. The command wrote the archive viastorage_path("app/{country}.zip")but checked and deleted it throughStorage::disk('local'). Since Laravel 11 the local disk root isstorage/app/private, so those are different directories — the re-download check always missed and cleanup silently did nothing, leaving the zip and.txton disk after every run. All paths now resolve through the disk.- A cached archive was never extracted. The re-download guard also wrapped the extraction, so when a zip was already present the command skipped extracting and then tried to import a
.txtthat was never written. Extraction now always runs.
Added
- Test suite: 25 tests covering the model, the GeoNames column mapping, service provider wiring, and the seeder command end to end. Previously the suite could not execute at all — Pest and testbench were never in
require-dev. - Shared CI (
awcodes/.github@v1): Tests, Lint, Static Analysis, and Reformat, with phpstan clean at level 5. - Dev toolchain: testbench, Pest 4, larastan, rector, collision. Canonical
pint.json,rector.php,phpstan.neon.dist, and Dependabot config.
Notes
- CI covers PHP 8.3–8.4 on Laravel 12/13. PHP 8.5 is not yet supported:
maatwebsite/excel ^3.1depends onphpoffice/phpspreadsheet, which declaresphp >=7.4.0 <8.5.0. It will be added once phpspreadsheet supports 8.5. - Codebase reformatted to the shared Pint ruleset (
declare(strict_types=1)throughout).
Full Changelog: v0.1.2...v0.2.0