Bumping a PHP monorepo to 8.5: the mechanics
Sixty-seven packages, one CI matrix, one PHPStan target. What it takes to actually move the floor.
Sixty-seven packages, one CI matrix, one PHPStan target. What it takes to actually move the floor.
An upgrade is also a decision about what not to use. Property hooks, the pipe operator, and an array_find pass we mostly rejected.
What a full Spec Kitty mission actually looks like end to end: spec, plan, tasks, implement, review, merge.
Three deprecation categories. Twenty-nine call sites. A test corpus that surfaces them all.
How Waaseyaa’s SSR package renders HTML the way PHP always has, with Twig templates, field formatters, and a theme chain loader, no JavaScript runtime required.
How Waaseyaa splits a monolithic controller dispatcher into domain-specific routers using a two-method interface.
PR
How to build a real-time messaging system with Mercure server-sent events, covering threads, user blocking, and email digests.
How to use preSave, postSave, preDelete, and postDelete hooks in Waaseyaa, with automatic pre-save validation and saveMany/deleteMany batch operations.
How Minoo’s crossword game teaches Anishinaabemowin through daily puzzles, Elder-authored clues, and a three-layer learning design.