Commit Graph
43 Commits
Author SHA1 Message Date
Frank 1e644eb13b Add "Looking for Help" page for the open visual artist request
Adds a /looking-for-help page listing the open volunteer request and
links it from the site footer on every page.
2026-07-04 23:23:04 +02:00
Frank 839113c356 Add AI Virus Deflection story to homepage and new agent briefing page
Give the public homepage a themed breach-alert hero and add a /briefing
page with the full mission narrative, both linking into the existing
game dashboard flow.
2026-07-04 23:00:31 +02:00
FrankandClaude Sonnet 5 7dbb738da8 Show marketing opt-in status in admin users overview
Adds a Marketing column to the admin users table and a total opt-in
count in the header, so admins can see who signed up for updates on
future projects.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 20:48:48 +02:00
FrankandClaude Sonnet 5 ec34a1ddb9 Add Terms and Conditions and marketing opt-in checkboxes to registration
Registration now requires agreeing to the Terms and Conditions and lets
users opt in to hear about future projects. The opt-in is persisted on
the user via a new marketing_opt_in column (migration included).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 20:28:52 +02:00
FrankandClaude Sonnet 5 05f4f2c32f Fix EveryoneVerified setting being scoped to a specific player
checkIfAllPlayersVerified() read and wrote the EveryoneVerified
setting scoped to whichever player happened to trigger the check
(getSetting(..., $player) / setPlayer($player)), but it's meant to be
a single session-wide flag. getFileContent() correctly reads it as
session-global (no player, filters player IS NULL), so the two never
matched: the "everyone verified" Mercure message still fired (that
code path only checks its own player-scoped copy), but the special
code injection into the Doyle/Vega/Lennox report files never ran
since getFileContent() never found the setting. Store and read it
consistently as session-global.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 18:19:14 +02:00
FrankandClaude Sonnet 5 ddd2726687 Fix cat command using relative path for physical file lookup
getFileContent() built the game1 filesystem path as a relative
string with no leading slash. That only resolves correctly when
PHP's cwd happens to be the project root (e.g. CLI), but under
PHP-FPM/nginx the cwd is nginx's document root (public/), so
file_exists() always failed for real requests even though the file
existed and the in-memory virtual file list (used by ls) said it
should. Use the already-injected $projectDir (%kernel.project_dir%),
matching how the class already builds the session log path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 18:12:55 +02:00
FrankandClaude Sonnet 5 3721abcc5d Fix missing leading slash in player's initial working directory
Every possible path/file in GameResponseService uses a leading slash
(e.g. /var/home/{username}), but a player's initial pwd was seeded as
'var/home/{username}' without one. getAllCurrentFilesInDirectory()
matches entries by comparing getPrevPath() (which always has the
leading slash) against pwd, so a fresh player's ls always came back
empty until their first cd command happened to normalize the format.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 17:03:30 +02:00
FrankandClaude Sonnet 5 e76d0b0f07 Fix Mercure reload spam on waiting page in Chrome
When the last player clicked ready, toggleReady() published a
redundant 'player_ready' event on top of checkAllPlayersReady()'s
'all_ready', and the client reloaded on every message with no guard
and without closing the EventSource. Chrome kept the old page's
script (and its EventSource) alive across the overlapping reload
calls, causing repeated reconnects to the Mercure hub; Firefox
apparently tore the page down fast enough to mask it. Skip the
redundant publish server-side, and make the client reload idempotent
by tracking whether it already fired and closing the EventSource
before reloading.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 16:26:47 +02:00
FrankandClaude Sonnet 5 4a5d83ef53 Fix duplicate EmailLog rows for a single sent email
Mailer dispatches MessageEvent twice when routed through Messenger:
once when queuing (queued=true) and once on the actual send from the
worker (queued=false). EmailLoggerListener logged on both, creating
two rows per email actually sent. Skip the queued dispatch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 14:44:03 +02:00
Frank 58c9c60ad2 Mailer 2026-07-04 13:57:00 +02:00
Frank van den BergandClaude Sonnet 4.6 aa56617e50 hub location mercure adjustment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 23:09:35 +02:00
Frank van den Berg ac57385a9d Admin panels 2026-06-27 15:53:43 +02:00
Frank van den Berg 0d8335dd2c Command voor aanmaken user 2026-06-27 15:34:36 +02:00
Frank 4545572b65 Verification mails solving try 1 2026-01-17 14:12:57 +01:00
Frank 6d8d30e91a Added domain to verification mail 2026-01-16 21:01:01 +01:00
Frank 6b5c205a27 Request resend of verification mail 2026-01-14 13:09:32 +01:00
Frank 70f5aa785e captcha 2026-01-13 21:54:26 +01:00
Frank 6c96d45a04 Verifying mail addresses 2026-01-13 17:43:17 +01:00
Frank 8d4e08e4bc Mailer From 2026-01-11 23:10:30 +01:00
Frank e8a6c9cc7a Validation fails 2026-01-10 00:25:57 +01:00
Frank 2008a379a8 Lost page 2026-01-08 20:32:21 +01:00
Frank 928ab3cbfe Added mercure to update when everyone is ready 2026-01-08 20:11:14 +01:00
Frank 4d021e7cf1 Trying to add waiting pages 2026-01-08 19:32:13 +01:00
Frank 30aa73bf53 Look into session logfiles 2026-01-08 18:26:32 +01:00
Frank 9d9de0fd0d Logfiles for sessions 2026-01-08 18:14:56 +01:00
Frank 2984a6acb2 Most of the cat command 2026-01-08 17:02:16 +01:00
Frank cdb469456f Dynamic number of players 2026-01-08 15:49:47 +01:00
Frank b6c09c267f Message when everyone is verified 2026-01-08 15:34:43 +01:00
Frank 5eff66c24d Post return messages 2026-01-08 11:41:46 +01:00
Frank cdd5bc3fd8 Verification done 2026-01-07 20:06:28 +01:00
Frank 173407cd26 ls 2026-01-07 17:45:17 +01:00
Frank 90e5fd904f Sudo, rm and setup for ls 2026-01-07 15:00:28 +01:00
Frank 225c14124a Hint for first part 2026-01-07 14:33:10 +01:00
Frank 01b0522bd1 Created a dashboard and created an invite code for game sessions. 2026-01-06 20:23:46 +01:00
Frank 812dc06988 Toevoeging van meer responses op messages 2026-01-05 23:37:36 +01:00
Frank 376ed3f592 Updated rechten voor speler. Settings toegevoegd en onderdelen voor game1 toegevoegd. 2026-01-05 17:07:32 +01:00
Frank 0543ed43b9 Messages handling voor spel 1 2026-01-05 15:27:37 +01:00
Frank 55a46a42b2 Forgot password 2026-01-03 22:57:45 +01:00
Frank 9cf04be857 Maillog 2026-01-03 22:35:56 +01:00
Frank 654b4036b4 Quite some work done here. 2026-01-03 22:12:51 +01:00
Frank b58da74967 Some settings 2026-01-03 13:16:58 +01:00
Frank 18821e2463 Startup 2026-01-02 20:27:56 +01:00
Frank 3b071eec9b Setup 2025-09-06 16:50:16 +02:00