CI / php (push) Failing after 1m11s
- Rename $secret to $csrfSecret in public/index.php to make
intent clear at every call site; the value is the CSRF/turn-token
HMAC key, not just 'the secret'.
- Drop the stale 'Configure the router with the eight routes' comment
in public/index.php; the router now has sixteen routes.
- Drop the duplicate .bf-toast rule in public/assets/styles.css; the
second declaration (the new yellow box) is the active one, the
first (legacy green pill) is dead code from the editor era.
- Add a trailing newline to src/Views/home.php.
- Tighten the matchId regex in two tests from {16,} to {16} since
bin2hex(random_bytes(8)) always produces exactly 16 hex chars; the
spec's {16,} stays in production TurnToken.
No behavior changes; addresses the deferred-minors parked during
per-task review.
31 lines
1.1 KiB
PHP
31 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use BattleForge\Http\Escape;
|
|
|
|
/** @var string $csrf Provided by the front controller. */
|
|
/** @var list<array{id: string, name: string, summary: string}> $bundled Provided by GetHomePage. */
|
|
?><?php
|
|
render_layout(static function () use ($csrf, $bundled): void {
|
|
$e = static fn (string $v): string => Escape::html($v);
|
|
$a = static fn (string $v): string => Escape::attr($v);
|
|
?>
|
|
<h1>BattleForge</h1>
|
|
<p><a href="<?= $a('/scenarios/new/edit/team') ?>">New scenario</a></p>
|
|
<h2>Play bundled</h2>
|
|
<ul id="bf-bundled">
|
|
<?php foreach ($bundled as $entry) : ?>
|
|
<li>
|
|
<button type="button" data-bf-bundle="<?= $a($entry['id']) ?>">
|
|
<strong><?= $e($entry['name']) ?></strong> — <?= $e($entry['summary']) ?>
|
|
</button>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
<h2>Recent scenarios</h2>
|
|
<div id="recent"><p class="bf-empty">No saved scenarios yet.</p></div>
|
|
<script type="module" src="<?= $a('/js/storage.js') ?>"></script>
|
|
<?php
|
|
}, $csrf, 'BattleForge');
|