Constructs the first showcase left out, plus the three plugin features that are easiest to miss.
The upgrade runs, and half the finders are gone.
| What ran | Against |
|---|---|
| The rule set | 4.5 sources |
| The finder rename | Nothing it matched |
The order is the fix.
--extension tabs. Any block goes in a tab: prose, a table, a list, a quote. Up
and down switch tabs, left and right stay with the deck.
composer require cakephp/cakephp:^5.2
{ "require": { "cakephp/cakephp": "^5.2" } }
$this->addPlugin('Migrations');
--extension codeGroup. One block per file, switched on screen and unfolded in the PDF.
5.0 always buffered result sets, which raised memory on large exports. 5.1 brought back disableBufferedResults().
Useful for the question you only sometimes get asked.
| Step | Command | Guards it |
| Deprecations | | Tests |
| The jump | | Tests, PHPStan |
The answer to “how long does the upgrade take” is as long as your test suite is short.
Palette: #d33c43 accent, #1f7a4d success, #6b7280 muted.
let icon = document.querySelector('li.file-entry > span.icon');
- icon.classList.add('icon-file-text');
+ icon.classList.remove('icon-file-text');
$table->updateQuery()
->set(['published' => true])
->execute();
{.diff} colours the changed lines, {data-line-numbers} numbers them. Both are plain Carve attribute lines.
$query = $this->Articles->selectQuery(); 1
$query->contain(['Authors']) 2
->where(['published' => true]);
--extension codeCallouts. The markers bind to the list under the block.
One idea
One idea, moved and grown
Two slides, both with %% animate, and the same data-id on the element that should travel. Without that id reveal has nothing to pair, because the text differs.
--element card=figureThis box is a <figure> in the output, while the source stays {.card} plus a container.
A source error does not shorten the deck silently. It renders a slide carrying the engine’s message, so you see it on the projector instead of wondering where slide nine went. --strict fails the build instead.
Still no raw HTML.