Commit Graph

193 Commits

Author SHA1 Message Date
Marijn 7f18e9768c fix: use spotlight_url to route PHP dev errors to Spotlight sidecar 2026-07-05 22:33:15 +02:00
Marijn 750e8f805c feat: route PHP Sentry events to Spotlight in dev
Add a when@dev block to sentry.yaml that initialises the PHP Sentry SDK
with a placeholder DSN and forwards all events to the Spotlight sidecar
over the internal Docker network (http://spotlight:8969/stream).

The JS SDK already uses localhost:8969 via spotlight:true when no real
SENTRY_DSN is set, which is correct since the browser cannot reach the
internal Docker hostname.
2026-07-05 22:23:04 +02:00
Marijn ce8f55fd9a feat: add Spotlight sidecar for local Sentry development testing
Add the Spotlight container to compose.override.yaml so the feedback
widget and error events can be inspected locally without sending anything
to Sentry. The JS SDK switches to spotlight mode automatically when no
SENTRY_DSN is configured.
2026-07-05 22:10:50 +02:00
Marijn c424e25d57 feat: add Sentry User Feedback widget to backoffice (#178)
Install @sentry/browser via AssetMapper and initialize the feedback
integration on all backoffice pages. The CDN loader script is moved to
an overridable block so backoffice pages use the npm SDK without
double-initialising Sentry.

Sentry is initialised only when a DSN is configured (SENTRY_DSN env
var). When a user is logged in their email is pre-filled in the feedback
form via Sentry.setUser(); both name and email remain optional so
anonymous submissions are supported by simply leaving those fields empty.
2026-07-05 21:46:07 +02:00
Marijn 135e4f0ae5 feat: season question bank & quiz finalisation (#101) (#176)
* feat: add question bank management, quiz finalization, and related backend/frontend functionality

* chore: add symfony/object-mapper dependency and fix Finalized translation

* feat: address PR review comments — unassign/sync bank questions, blank quiz creation, deactivate redirect, remove duplicate tab titles

- Use Symfony ObjectMapper for BankQuestion/BankAnswer → Question/Answer copy (#[Map(if: false)] on id, season, etc.)
- Track created Question on BankQuestionUsage (nullable FK, onDelete: SET NULL) for unassign/sync support
- Add unassign route: removes the Question copy + usage record
- Add sync route: pushes bank question edits to a finalized-not-started quiz copy
- Auto-sync non-finalized quiz copies on bank question edit; flash warning for finalized-not-started
- Add blank quiz creation (no XLSX required) with new route + template
- Deactivate quiz button now stays on the quiz overview page (redirect_quiz hidden field)
- Remove duplicate h4 titles below the tab bar on all season tabs
- Add migration for bank_question_usage.question_id
- Add Dutch translations for all new strings

* fix: address CodeRabbit review findings

- Use FlashType enum in clearQuiz/finalizeQuiz/unfinalizeQuiz (was raw 'success'/'error' strings)
- Catch UniqueConstraintViolationException in addLabel to handle concurrent duplicate inserts
- Wrap assignToQuiz in a transaction with PESSIMISTIC_WRITE lock to serialise concurrent assignments of the same BankQuestion

* ci: build SCSS before running PHPUnit tests

* test: remove QueryCountTest (covered by Sentry in production)

* fix: crash on empty-quiz overview and answer-mapping, use FlashType enum consistently

- fetchWithQuestionsAndCandidates / fetchWithQuestions used INNER JOINs on
  questions/answers, so quizzes with no questions threw NoResultException (500)
  when opening the overview tab. Switched to LEFT JOINs.
- answerMapping bare \assert() replaced with a proper flash + redirect when
  the quiz has no questions, instead of crashing with AssertionError.
- Three raw 'success' flash strings in QuizController replaced with FlashType::Success.
- Added Dutch translation for "This quiz has no questions yet".
- Two new tests: empty-quiz overview loads (200), answer-mapping redirects with flash.

* feat: add contextual help panels to all backoffice pages

Add a 50/50 or 66/33 split layout to every backoffice page with Dutch
instructions explaining how to use Tijd voor de Test. Content covers the
overall workflow, quiz finalize/activate flow, and both candidate
participation methods (own device vs. shared laptop).

Help text lives in dedicated partials under templates/backoffice/help/ and
is loaded via Twig include(), keeping page templates clean. All strings use
a separate 'instructions' translation domain (instructions+intl-icu.nl.xliff)
isolated from the main messages domain.

Also updates 'Finalize'-related Dutch translations to use 'Afronden' and
adds tooltips to the finalize/unfinalize buttons.

* refactor: move help content out of translations into locale-specific partials

Replace the instructions translation domain with plain HTML files under
templates/backoffice/help/nl/. Each help/*.html.twig is now a locale
dispatch shim that tries the current locale first and falls back to nl,
so adding English (or any other language) is simply a matter of creating
a help/en/ directory with the translated files — no code changes needed.

Removes instructions+intl-icu.nl.xliff.

* fix: address PR review feedback on help texts and translations

- Replace 'speelronde' with 'spel' in index and season_add help
- Season settings help: remove incorrect claim name is editable, describe
  actual settings (Show Numbers, Confirm Answers)
- quiz_add help: rename 'XLSX-bestand' to 'Excel-bestand', add explanation
  of WAAR/ONWAAR (Dutch Excel) vs TRUE/FALSE (English Excel) for marking
  the correct answer
- quiz_answer_mapping help: remove em-dashes
- quiz_candidates help: clarify that multiple devices and mixed setups
  (multiple laptops, phones, or a mix) are supported
- quiz_question_bank_form help: change 'thema' to 'type vraag' for labels
- Rename 'Add from XLSX' to 'Import' in translation and template

* fix: remove all em-dashes from nl help files, fix remaining XLSX references

Replace all em-dashes with semicolons or colons throughout the nl help
partials. Also replace remaining 'XLSX-bestand' with 'Excel-bestand' in
season_tests and index, and also also fix the em-dash that was still on
the same line as the 'speelronde -> spel' fix in index.

* style: replace semicolons with commas in nl help content, document writing rules

Semicolons in help text read as AI-generated; commas are more natural.
Added writing style rules to CLAUDE.md to prevent recurrence.

* fix: correct lock guards, flush batching, and clearQuiz atomicity in question bank

- syncUsagesAfterEdit: use isLocked() instead of !isFinalized() to avoid
  syncing quizzes with started candidates (would have destroyed GivenAnswer records)
- syncToQuiz action: use isLocked() instead of hasStartedCandidates() to block
  syncing into finalized quizzes that have no started candidates
- QuestionBankService::syncToQuiz: remove internal flush(); callers now
  flush once (syncUsagesAfterEdit after the loop, syncToQuiz action after the call)
- QuizRepository::clearQuiz: delete BankQuestionUsage rows and reset
  finalized_at inside the transaction (previously orphaned usages blocked
  bank question reassignment; finalizedAt reset was a separate non-atomic flush)
- QuizController::finalizeQuiz: add flash when quiz is already finalized
- QuestionBankController::delete: block deletion when any usage references a locked quiz
- BankQuestion::__toString: remove dead null-coalescing on non-nullable string
- SeasonController::addBlankQuiz: align form field with UploadQuizFormType
  (add translation_domain: false, use translator for label)

* fix: pass season variable to season_add_candidates template

* Textual changes to help content.

* Manual text changes

* feat: address PR review — property hooks, slug labels, label colours, drag sort, Loggable, and more

- Convert Quiz.isFinalized/isLocked/hasStartedCandidates and BankQuestion.isUsed/canBeAssigned to PHP 8.4 property get hooks; update all PHP and test call sites
- Add LabelColour enum (Bootstrap colour names) with colour column on QuestionLabel; badges in templates reflect label colour
- Add slug field to QuestionLabel with unique-per-season constraint; label filter and delete URLs now use slug instead of UUID; slugger generates and uniqueness-checks slug on save
- Allow saving bank questions without answers; isCompleteForQuiz hook enforces completeness before assigning to a quiz; BankQuestionIncompleteException for user-facing feedback
- Split BankQuestionRepository findBySeason into separate queries to avoid Cartesian-product row explosion across multiple collections
- Enable Gedmo Loggable on BankQuestion (question and reusable fields versioned); custom LogEntry entity uses json type for PostgreSQL compatibility; migrations for ext_log_entries and new columns
- Add SeasonController blank-quiz form validation (NotBlank, Length) and catch UniqueConstraintViolation as form error
- Replace × with bi-trash icon on answer delete buttons and label delete buttons
- Add drag-and-drop reordering with grab handles, sort-alphabetically, and randomize buttons to answer collection in question bank form
- Replace raw 'success'/'error' flash strings with FlashType enum in RegistrationController and PrepareEliminationController
- Add testDeactivateWithRedirectQuizStaysOnQuizOverview test covering enableQuiz redirect_quiz branch

* fix: migration to align ext_log_entries id/data types and drop slug default

* refactor: squash three PR migrations into one

* feat: question bank UX — ordering, correct-answer toggle, label colour picker

Answer ordering:
- Remove applyAnswerOrdering from edit action (it was overwriting form-submitted
  ordering with the original Doctrine-loaded order, discarding user reordering)
- Call _syncOrdering() on Stimulus connect() and addItem() so hidden ordering
  inputs are always populated before submission
- Fix drag-and-drop to insert before/after based on cursor position relative to
  the target item's midpoint, enabling drop to the bottom position

Correct-answer toggle:
- Replace checkbox + "Correct" label with a filled green ✓ / red ✗ button
- Checkbox is kept hidden (d-none) so form submission still works; button
  syncs the checkbox state on click

Label colour picker:
- Always show label colours in the filter bar (opacity-50 when inactive,
  full opacity when active) so colours are visible without selecting a filter
- Add a reusable modal component (templates/components/modal.html.twig) using
  Twig embed blocks (modal_trigger, modal_body, modal_footer)
- Replace inline add-label form with the modal, adding a colour picker that
  renders swatches as coloured badges (faded when unselected, full opacity
  with white ring when selected) matching how labels appear in the filter bar
- Controller now accepts and persists the selected colour on label creation

* refactor: rename and standardize label colours, update default values, and add new translations

* fix: question bank layout — help text beside content, icon-only action buttons

Move labels filter and table inside the main column so help text sits
beside the full content rather than just the add button. Convert Edit,
Delete, and Assign buttons to icon-only btn-group to save row space.

* refactor: abstract base for Answer/BankAnswer; add quiz question edit

- Extract AbstractBaseAnswer (MappedSuperclass) sharing ordering, text,
  isRightAnswer, constructor, and __toString between Answer and BankAnswer
- Extract AbstractBaseAnswerFormType sharing buildForm between
  BankAnswerFormType and new AnswerFormType
- Add QuestionFormType for editing quiz-level Question entities
- Add QuizQuestionController with edit route guarded by MODIFY_QUIZ_CONTENT
  voter (hidden on locked/finalized quizzes)
- Add question edit template reusing the shared answer_row Twig macro
- Show Edit button per question in quiz overview accordion

* fix: use colour label instead of translated name in question bank picker

* fix: translate LabelColour label in question bank colour picker

TranslatableMessage cannot be coerced to string by Twig without |trans.
v0.2.0
2026-07-05 21:36:33 +02:00
dependabot[bot] 696537cf35 Bump twig/twig from 3.27.1 to 3.28.0 in the twig group (#174)
Bumps the twig group with 1 update: [twig/twig](https://github.com/twigphp/Twig).


Updates `twig/twig` from 3.27.1 to 3.28.0
- [Release notes](https://github.com/twigphp/Twig/releases)
- [Changelog](https://github.com/twigphp/Twig/blob/3.x/CHANGELOG)
- [Commits](https://github.com/twigphp/Twig/compare/v3.27.1...v3.28.0)

---
updated-dependencies:
- dependency-name: twig/twig
  dependency-version: 3.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: twig
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-04 16:33:35 +02:00
dependabot[bot] c2dbb9f309 Bump docker/login-action from 4.3.0 to 4.4.0 (#175)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/c99871dec2022cc055c062a10cc1a1310835ceb4...af1e73f918a031802d376d3c8bbc3fe56130a9b0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-04 16:32:59 +02:00
Marijn d1d1eb3a24 docs: update README and add pre-commit hook (#173)
* docs: replace requirements with developer and deployment guide

* docs: add CI badge, disclaimer, contributing guide, and license

* docs: fix and expand disclaimer based on legal review

* docs: clarify test vs dev fixture commands in testing section

* feat: add pre-commit hook for staged-file quality checks

Adds a versioned .githooks/pre-commit script that runs Rector,
PHP-CS-Fixer, and PHPStan on staged PHP files, and Twig-CS-Fixer on
staged Twig files. Auto-fixes are re-staged before PHPStan runs.
Falls back to docker compose run --rm when the PHP service is not up.

Install with: just install-hooks

* chore: switch pre-commit hook shebang from bash to zsh
2026-07-03 15:05:29 +00:00
Marijn 5ea7a636b8 ci: skip dev image build on tags, wait for in-progress CI runs, improve quality error output (#171)
- Skip the dev image build job on tag pushes — it was wasted work since
  quality and tests are already skipped on tags
- Remove the unnecessary `needs: build` from verify-prior-run; it ran
  independently of the dev image anyway
- Make verify-prior-run poll (30s interval, 15 min max) so tagging
  immediately after a push to main waits for the CI run to finish rather
  than failing instantly
- Replace the yes/no outcomes string in "Assert all checks passed" with
  per-step ::error:: annotations so GitHub highlights exactly which
  quality check failed
v0.1.3
2026-07-03 12:28:01 +00:00
dependabot[bot] d37136be93 Bump martin-georgiev/postgresql-for-doctrine from 4.6.0 to 4.7.0 (#163)
Bumps [martin-georgiev/postgresql-for-doctrine](https://github.com/martin-georgiev/postgresql-for-doctrine) from 4.6.0 to 4.7.0.
- [Release notes](https://github.com/martin-georgiev/postgresql-for-doctrine/releases)
- [Changelog](https://github.com/martin-georgiev/postgresql-for-doctrine/blob/main/CHANGELOG.md)
- [Commits](https://github.com/martin-georgiev/postgresql-for-doctrine/compare/v4.6.0...v4.7.0)

---
updated-dependencies:
- dependency-name: martin-georgiev/postgresql-for-doctrine
  dependency-version: 4.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 12:14:30 +00:00
dependabot[bot] 212401a97f Bump the dev-dependencies group across 1 directory with 10 updates (#164)
* Bump the dev-dependencies group across 1 directory with 10 updates

Bumps the dev-dependencies group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) | `3.95.8` | `3.95.11` |
| [phpstan/phpstan](https://github.com/phpstan/phpstan-phar-composer-source) | `2.2.2` | `2.2.4` |
| [phpstan/phpstan-phpunit](https://github.com/phpstan/phpstan-phpunit) | `2.0.16` | `2.0.17` |
| [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) | `13.2.1` | `13.2.2` |
| [rector/rector](https://github.com/rectorphp/rector) | `2.4.6` | `2.5.2` |
| [symfony/browser-kit](https://github.com/symfony/browser-kit) | `8.1.0` | `8.1.1` |
| [symfony/phpunit-bridge](https://github.com/symfony/phpunit-bridge) | `8.1.0` | `8.1.1` |
| [symfony/web-profiler-bundle](https://github.com/symfony/web-profiler-bundle) | `8.1.0` | `8.1.1` |
| [thecodingmachine/phpstan-safe-rule](https://github.com/thecodingmachine/phpstan-safe-rule) | `1.4.3` | `1.4.7` |
| [vincentlanglet/twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer) | `4.0.1` | `4.0.2` |



Updates `friendsofphp/php-cs-fixer` from 3.95.8 to 3.95.11
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.8...v3.95.11)

Updates `phpstan/phpstan` from 2.2.2 to 2.2.4
- [Commits](https://github.com/phpstan/phpstan-phar-composer-source/commits)

Updates `phpstan/phpstan-phpunit` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/phpstan/phpstan-phpunit/releases)
- [Commits](https://github.com/phpstan/phpstan-phpunit/compare/2.0.16...2.0.17)

Updates `phpunit/phpunit` from 13.2.1 to 13.2.2
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.2.2/ChangeLog-13.2.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.2.1...13.2.2)

Updates `rector/rector` from 2.4.6 to 2.5.2
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.4.6...2.5.2)

Updates `symfony/browser-kit` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/browser-kit/releases)
- [Changelog](https://github.com/symfony/browser-kit/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/browser-kit/compare/v8.1.0...v8.1.1)

Updates `symfony/phpunit-bridge` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/phpunit-bridge/releases)
- [Changelog](https://github.com/symfony/phpunit-bridge/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/phpunit-bridge/compare/v8.1.0...v8.1.1)

Updates `symfony/web-profiler-bundle` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/web-profiler-bundle/releases)
- [Changelog](https://github.com/symfony/web-profiler-bundle/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/web-profiler-bundle/compare/v8.1.0...v8.1.1)

Updates `thecodingmachine/phpstan-safe-rule` from 1.4.3 to 1.4.7
- [Release notes](https://github.com/thecodingmachine/phpstan-safe-rule/releases)
- [Commits](https://github.com/thecodingmachine/phpstan-safe-rule/compare/v1.4.3...v1.4.7)

Updates `vincentlanglet/twig-cs-fixer` from 4.0.1 to 4.0.2
- [Release notes](https://github.com/VincentLanglet/Twig-CS-Fixer/releases)
- [Commits](https://github.com/VincentLanglet/Twig-CS-Fixer/compare/4.0.1...4.0.2)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan-phpunit
  dependency-version: 2.0.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/phpunit
  dependency-version: 13.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: rector/rector
  dependency-version: 2.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: symfony/browser-kit
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: symfony/phpunit-bridge
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: symfony/web-profiler-bundle
  dependency-version: 8.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: thecodingmachine/phpstan-safe-rule
  dependency-version: 1.4.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vincentlanglet/twig-cs-fixer
  dependency-version: 4.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Ignore rector rule

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marijn Doeve <marijn@doeve.me>
v0.1.2
2026-07-03 12:08:58 +00:00
Marijn 7c74574d3c fix(ci): prevent script injection in Portainer deployment step (#170)
Move IMAGE_TAG and SENTRY_RELEASE step outputs into env: vars so they
are passed as environment variables rather than interpolated directly
into the shell command string, eliminating a potential script-injection
vector via a crafted tag or Sentry version value.
2026-07-03 11:54:52 +00:00
Marijn b1f84d441f fix: align SENTRY_RELEASE env var with the release created by the Sentry action (#169)
The Sentry action receives the v-stripped version (e.g. 0.1.1) but the
app's SENTRY_RELEASE was set to IMAGE_TAG (e.g. v0.1.1). This caused
Sentry to auto-create a second release from incoming events, labelling it
(non-semver) instead of associating events with the properly created release.

Pass SENTRY_RELEASE as a separate query param through the Portainer webhook
(using the already-computed sentry_version output) and reference that in
compose.prod.yaml instead of IMAGE_TAG.
2026-07-03 11:28:22 +00:00
dependabot[bot] 8c72b1b217 Bump dependabot/fetch-metadata from 2 to 3 (#168)
Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2 to 3.
- [Release notes](https://github.com/dependabot/fetch-metadata/releases)
- [Commits](https://github.com/dependabot/fetch-metadata/compare/v2...v3)

---
updated-dependencies:
- dependency-name: dependabot/fetch-metadata
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 10:23:14 +00:00
Marijn 806cff8c0f ci: optimise build pipeline — shared dev image build and skip tests on tag push (#167)
* ci: split dev image build into a shared job

Extract the Docker build step into a dedicated `build` job so `quality`
and `tests` no longer each build the image independently. Both jobs now
load from the shared `devbuild` GHA cache scope and declare `needs: build`.

* ci: skip quality+tests on tag push, verify prior CI run instead

When tagging a commit that already passed CI on main, there is no need
to run quality and tests again. Both jobs now skip for tag refs.

A new `verify-prior-run` job runs instead: it queries the GitHub API for
a prior successful CI run on the same SHA (excluding the current run) and
fails fast if none is found, preventing deployment of untested tags.

`build-deploy` now uses `always() && !cancelled() && !failure()` so it
handles the mix of skipped (quality/tests) and successful (verify-prior-run)
needed jobs correctly.

* ci: bump GitHub Actions to Node.js 24 compatible versions

* ci: add Dependabot config for GitHub Actions version updates

* ci: pin all GitHub Actions to commit SHAs

* ci: disable credential persistence on all checkout steps
2026-07-03 12:18:29 +02:00
Marijn 815e7b17be Add missing quiz/nav.html.twig and test for template reference integrity (#166)
Adds the previously uncommitted quiz nav partial that broke main, and
introduces TemplateReferencesTest which scans all Twig templates for
extends/include/embed references and asserts each target file exists —
preventing this class of missing-template mistake from reaching CI undetected.
v0.1.1
2026-07-02 21:08:21 +00:00
Marijn 764f59e6a7 Improve GitHub Actions CI: parallelise jobs, continue-on-error, timeouts, cache optimisation (#165)
* Strip v-prefix from version tag before passing to Sentry

GitHub tags follow the v1.2.3 convention, but Sentry requires bare
semver (1.2.3) to recognise releases as valid semver. Extract a
sentry_version output in the meta step that strips the leading v.

* Parallelize CI: split quality and tests jobs, add continue-on-error

- Split the single tests job into parallel quality and tests jobs,
  saving ~4 min wall-clock time per run
- Quality checks (lint, CS, PHPStan, Rector) now all run with
  continue-on-error so every failure is visible in one pass; a
  final Assert step fails the job if any check failed
- Add cache:warmup before PHPStan so the Symfony dev container XML
  exists and the Symfony extension has full type information
- Use per-job GHA cache scopes to avoid parallel cache write races
- Use cache mode=min on PRs, mode=max on main/tags
- Add timeout-minutes (20/20/15) to all jobs
- Remove dead if:false Mercure reachability step
- Fix Portainer webhook URL quoting
- build-deploy now needs: [quality, tests]

* Simplify build-deploy job name and environment expressions

* Use static name for build-deploy job (expressions not evaluated when skipped)

* build-deploy only needs tests, not quality (quality is informational)

* Revert: build-deploy needs both quality and tests
2026-07-02 23:06:23 +02:00
Marijn 404c0dcc26 Summer cleanup: XLSX export, WIDM-style quiz UI, CSS fixes (#162)
* Add CLAUDE.md, replace Makefile with Justfile, remove .junie

- Add CLAUDE.md with project overview, commands, architecture, and domain entity docs
- Remove Makefile in favour of the existing Justfile
- Remove .junie/AGENTS.md (knowledge transferred to CLAUDE.md)
- Update .gitignore: drop .junie/ entries, add .claude/settings.local.json
- Minor doc fixes in config/reference.php (typo, type correction)

* Clean up templates and CSS

- season.html.twig: remove dead empty column, drop redundant flex-row
- tab_overview.html.twig: extract Twig macro for confirm modals, fix duplicate aria-labelledby IDs
- tab_result.html.twig: remove dead comment, replace inline widths with CSS classes, simplify nested row/col forms to d-flex gap-1
- backoffice.scss: add col-result-xs/sm/md column width classes
- quiz.scss: replace broken display:grid + justify-self:center with flexbox centering

* Implement quizToXlsx() export and add export button

- QuizSpreadsheetService: implement quizToXlsx() as the inverse of
  fillQuizFromArray() — writes quiz questions and answers to XLSX using
  the same column layout as the import template
- BackofficeController: add exportQuiz() action at GET /backoffice/quiz/{quiz}/export
- tab_overview.html.twig: add Export to XLSX button in Quick actions

* Add unit tests for QuizSpreadsheetService

7 tests covering generateTemplate(), quizToXlsx(), and xlsxToQuiz():
- valid XLSX output and MIME type
- template without example reimports as empty
- template example data survives a reimport
- round-trip (export → reimport) preserves questions, answers, and correct flags
- empty quiz exports and reimports cleanly
- invalid MIME type throws InvalidArgumentException
- question with no answers throws SpreadsheetDataException with error list

* Fix quiz page vertical centering regression

The CSS cleanup broke vertical centering: flex on body causes main to
stretch full-width; place-items:center on a grid body only centers
items within their auto-sized track (not the track within body).

Fix: move background/color to html (full-viewport grid that centers
body), give body height:100% + display:grid + align-content:center
(centers the content track within full-height body) + justify-self:center
(shrink-wraps body width). Matches production behavior exactly.

* Improve quiz page layouts: WIDM-style answers and responsive centering

- Add green square answer buttons styled after the TV show
- Two-column answer grid for 6+ answers, single column on mobile
- fit-content centering for question pages so block matches question width
- Narrow fixed-width centering for form pages (enter name, select season)

* Use HeaderUtils::makeDisposition() for safe Content-Disposition filename

* Fix quizToXlsx to support unlimited answers and add header count tests

- Replace hardcoded 6-column arrays with dynamic Coordinate arithmetic
- Write data rows first to determine max answer count, write headers last
- Replace try/catch ErrorException in fillQuizFromArray with array_key_exists
- Add data-provider test covering 2, 6, 7, and 10 answers
- Add cross-question max-header and 7-answer round-trip tests

* Fix Sass healthcheck

* Improve quiz layout: add fixed topbar, include navigation, and clean up unused elements

- Add `.quiz-topbar` with fixed positioning and spacing in `quiz.scss`
- Update `base.html.twig` to include `quiz/nav.html.twig` in a new `nav` block
- Remove unused "Manage Quiz" button from `select_season.html.twig`

* Refactor generateTemplate to reuse quizToXlsx and add second example question

- generateTemplate now builds an in-memory Quiz entity and delegates to
  quizToXlsx, eliminating duplicate spreadsheet-building logic
- Adds a second example question "Wie is de mol?" with 10 Dutch names
  (5 male, 5 female) to better illustrate the import format
- Updates tests to assert both example questions and adds a test for the
  blank-row halt behaviour in fillQuizFromArray (achieving 100% coverage)

* Move PHPUnit cache to /tmp to avoid writing into the mounted volume

* Update src/Service/QuizSpreadsheetService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
0.1.0
2026-07-02 20:25:02 +00:00
dependabot[bot] 685544ffff Bump sentry/sentry from 4.28.0 to 4.29.0 (#160)
Bumps [sentry/sentry](https://github.com/getsentry/sentry-php) from 4.28.0 to 4.29.0.
- [Release notes](https://github.com/getsentry/sentry-php/releases)
- [Changelog](https://github.com/getsentry/sentry-php/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-php/compare/4.28.0...4.29.0)

---
updated-dependencies:
- dependency-name: sentry/sentry
  dependency-version: 4.29.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 17:27:09 +02:00
dependabot[bot] 6b616465b2 Bump guzzlehttp/psr7 from 2.12.1 to 2.12.3 (#157)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.12.1 to 2.12.3.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.12/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.12.1...2.12.3)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-version: 2.12.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 16:09:37 +02:00
dependabot[bot] 381c2119e7 Bump the symfony group with 32 updates (#159)
Bumps the symfony group with 32 updates:

| Package | From | To |
| --- | --- | --- |
| [symfony/asset-mapper](https://github.com/symfony/asset-mapper) | `8.1.0` | `8.1.1` |
| [symfony/console](https://github.com/symfony/console) | `8.1.0` | `8.1.1` |
| [symfony/form](https://github.com/symfony/form) | `8.1.0` | `8.1.1` |
| [symfony/framework-bundle](https://github.com/symfony/framework-bundle) | `8.1.0` | `8.1.1` |
| [symfony/mailer](https://github.com/symfony/mailer) | `8.1.0` | `8.1.1` |
| [symfony/security-bundle](https://github.com/symfony/security-bundle) | `8.1.0` | `8.1.1` |
| [symfony/serializer](https://github.com/symfony/serializer) | `8.1.0` | `8.1.1` |
| [symfony/translation](https://github.com/symfony/translation) | `8.1.0` | `8.1.1` |
| [symfony/validator](https://github.com/symfony/validator) | `8.1.0` | `8.1.1` |
| [symfony/yaml](https://github.com/symfony/yaml) | `8.1.0` | `8.1.1` |
| [symfony/cache](https://github.com/symfony/cache) | `8.1.0` | `8.1.1` |
| [symfony/cache-contracts](https://github.com/symfony/cache-contracts) | `3.7.0` | `3.7.1` |
| [symfony/config](https://github.com/symfony/config) | `8.1.0` | `8.1.1` |
| [symfony/dependency-injection](https://github.com/symfony/dependency-injection) | `8.1.0` | `8.1.1` |
| [symfony/deprecation-contracts](https://github.com/symfony/deprecation-contracts) | `3.7.0` | `3.7.1` |
| [symfony/doctrine-bridge](https://github.com/symfony/doctrine-bridge) | `8.1.0` | `8.1.1` |
| [symfony/event-dispatcher](https://github.com/symfony/event-dispatcher) | `8.1.0` | `8.1.1` |
| [symfony/event-dispatcher-contracts](https://github.com/symfony/event-dispatcher-contracts) | `3.7.0` | `3.7.1` |
| [symfony/finder](https://github.com/symfony/finder) | `8.1.0` | `8.1.1` |
| [symfony/http-client](https://github.com/symfony/http-client) | `8.1.0` | `8.1.1` |
| [symfony/http-client-contracts](https://github.com/symfony/http-client-contracts) | `3.7.0` | `3.7.1` |
| [symfony/http-foundation](https://github.com/symfony/http-foundation) | `8.1.0` | `8.1.1` |
| [symfony/http-kernel](https://github.com/symfony/http-kernel) | `8.1.0` | `8.1.1` |
| [symfony/intl](https://github.com/symfony/intl) | `8.1.0` | `8.1.1` |
| [symfony/polyfill-deepclone](https://github.com/symfony/polyfill-deepclone) | `1.38.2` | `1.40.0` |
| [symfony/security-core](https://github.com/symfony/security-core) | `8.1.0` | `8.1.1` |
| [symfony/security-http](https://github.com/symfony/security-http) | `8.1.0` | `8.1.1` |
| [symfony/service-contracts](https://github.com/symfony/service-contracts) | `3.7.0` | `3.7.1` |
| [symfony/translation-contracts](https://github.com/symfony/translation-contracts) | `3.7.0` | `3.7.1` |
| [symfony/twig-bridge](https://github.com/symfony/twig-bridge) | `8.1.0` | `8.1.1` |
| [symfony/var-dumper](https://github.com/symfony/var-dumper) | `8.1.0` | `8.1.1` |
| [symfony/var-exporter](https://github.com/symfony/var-exporter) | `8.1.0` | `8.1.1` |


Updates `symfony/asset-mapper` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/asset-mapper/releases)
- [Changelog](https://github.com/symfony/asset-mapper/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/asset-mapper/compare/v8.1.0...v8.1.1)

Updates `symfony/console` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/console/releases)
- [Changelog](https://github.com/symfony/console/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/console/compare/v8.1.0...v8.1.1)

Updates `symfony/form` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/form/releases)
- [Changelog](https://github.com/symfony/form/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/form/compare/v8.1.0...v8.1.1)

Updates `symfony/framework-bundle` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/framework-bundle/releases)
- [Changelog](https://github.com/symfony/framework-bundle/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/framework-bundle/compare/v8.1.0...v8.1.1)

Updates `symfony/mailer` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v8.1.0...v8.1.1)

Updates `symfony/security-bundle` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/security-bundle/releases)
- [Changelog](https://github.com/symfony/security-bundle/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/security-bundle/compare/v8.1.0...v8.1.1)

Updates `symfony/serializer` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/serializer/releases)
- [Changelog](https://github.com/symfony/serializer/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/serializer/compare/v8.1.0...v8.1.1)

Updates `symfony/translation` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/translation/releases)
- [Changelog](https://github.com/symfony/translation/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/translation/compare/v8.1.0...v8.1.1)

Updates `symfony/validator` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/validator/releases)
- [Changelog](https://github.com/symfony/validator/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/validator/compare/v8.1.0...v8.1.1)

Updates `symfony/yaml` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/yaml/releases)
- [Changelog](https://github.com/symfony/yaml/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/yaml/compare/v8.1.0...v8.1.1)

Updates `symfony/cache` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/cache/releases)
- [Changelog](https://github.com/symfony/cache/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/cache/compare/v8.1.0...v8.1.1)

Updates `symfony/cache-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/cache-contracts/releases)
- [Changelog](https://github.com/symfony/cache-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/cache-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/config` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/config/releases)
- [Changelog](https://github.com/symfony/config/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/config/compare/v8.1.0...v8.1.1)

Updates `symfony/dependency-injection` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/dependency-injection/releases)
- [Changelog](https://github.com/symfony/dependency-injection/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/dependency-injection/compare/v8.1.0...v8.1.1)

Updates `symfony/deprecation-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/deprecation-contracts/releases)
- [Changelog](https://github.com/symfony/deprecation-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/deprecation-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/doctrine-bridge` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/doctrine-bridge/releases)
- [Changelog](https://github.com/symfony/doctrine-bridge/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/doctrine-bridge/compare/v8.1.0...v8.1.1)

Updates `symfony/event-dispatcher` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/event-dispatcher/releases)
- [Changelog](https://github.com/symfony/event-dispatcher/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/event-dispatcher/compare/v8.1.0...v8.1.1)

Updates `symfony/event-dispatcher-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/event-dispatcher-contracts/releases)
- [Changelog](https://github.com/symfony/event-dispatcher-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/event-dispatcher-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/finder` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/finder/releases)
- [Changelog](https://github.com/symfony/finder/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/finder/compare/v8.1.0...v8.1.1)

Updates `symfony/http-client` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/http-client/releases)
- [Changelog](https://github.com/symfony/http-client/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-client/compare/v8.1.0...v8.1.1)

Updates `symfony/http-client-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/http-client-contracts/releases)
- [Changelog](https://github.com/symfony/http-client-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-client-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/http-foundation` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/http-foundation/releases)
- [Changelog](https://github.com/symfony/http-foundation/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-foundation/compare/v8.1.0...v8.1.1)

Updates `symfony/http-kernel` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/http-kernel/releases)
- [Changelog](https://github.com/symfony/http-kernel/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-kernel/compare/v8.1.0...v8.1.1)

Updates `symfony/intl` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/intl/releases)
- [Changelog](https://github.com/symfony/intl/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/intl/compare/v8.1.0...v8.1.1)

Updates `symfony/polyfill-deepclone` from 1.38.2 to 1.40.0
- [Release notes](https://github.com/symfony/polyfill-deepclone/releases)
- [Commits](https://github.com/symfony/polyfill-deepclone/compare/v1.38.2...v1.40.0)

Updates `symfony/security-core` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/security-core/releases)
- [Changelog](https://github.com/symfony/security-core/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/security-core/compare/v8.1.0...v8.1.1)

Updates `symfony/security-http` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/security-http/releases)
- [Changelog](https://github.com/symfony/security-http/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/security-http/compare/v8.1.0...v8.1.1)

Updates `symfony/service-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/service-contracts/releases)
- [Changelog](https://github.com/symfony/service-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/service-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/translation-contracts` from 3.7.0 to 3.7.1
- [Release notes](https://github.com/symfony/translation-contracts/releases)
- [Changelog](https://github.com/symfony/translation-contracts/blob/main/CHANGELOG.md)
- [Commits](https://github.com/symfony/translation-contracts/compare/v3.7.0...v3.7.1)

Updates `symfony/twig-bridge` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/twig-bridge/releases)
- [Changelog](https://github.com/symfony/twig-bridge/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/twig-bridge/compare/v8.1.0...v8.1.1)

Updates `symfony/var-dumper` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v8.1.0...v8.1.1)

Updates `symfony/var-exporter` from 8.1.0 to 8.1.1
- [Release notes](https://github.com/symfony/var-exporter/releases)
- [Changelog](https://github.com/symfony/var-exporter/blob/8.2/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-exporter/compare/v8.1.0...v8.1.1)

---
updated-dependencies:
- dependency-name: symfony/asset-mapper
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/console
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/form
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/framework-bundle
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/mailer
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/security-bundle
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/serializer
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/translation
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/validator
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/yaml
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/cache
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/cache-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/config
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/dependency-injection
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/deprecation-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/doctrine-bridge
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/event-dispatcher
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/event-dispatcher-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/finder
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/http-client
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/http-client-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/http-foundation
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/http-kernel
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/intl
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/polyfill-deepclone
  dependency-version: 1.40.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: symfony
- dependency-name: symfony/security-core
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/security-http
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/service-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/translation-contracts
  dependency-version: 3.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/twig-bridge
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/var-dumper
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
- dependency-name: symfony/var-exporter
  dependency-version: 8.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symfony
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 22:42:39 +02:00
dependabot[bot] 228a36be95 Bump doctrine/doctrine-bundle from 3.2.3 to 3.2.4 (#145)
Bumps [doctrine/doctrine-bundle](https://github.com/doctrine/DoctrineBundle) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/doctrine/DoctrineBundle/releases)
- [Commits](https://github.com/doctrine/DoctrineBundle/compare/3.2.3...3.2.4)

---
updated-dependencies:
- dependency-name: doctrine/doctrine-bundle
  dependency-version: 3.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 23:05:38 +02:00
dependabot[bot] 05ad1ebf2e Bump guzzlehttp/psr7 from 2.11.0 to 2.12.1 (#154)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.11.0 to 2.12.1.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.12/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.11.0...2.12.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-version: 2.12.1
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 23:05:19 +02:00
dependabot[bot] 102b894134 Bump vincentlanglet/twig-cs-fixer in the dev-dependencies group (#153)
Bumps the dev-dependencies group with 1 update: [vincentlanglet/twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer).


Updates `vincentlanglet/twig-cs-fixer` from 4.0.0 to 4.0.1
- [Release notes](https://github.com/VincentLanglet/Twig-CS-Fixer/releases)
- [Commits](https://github.com/VincentLanglet/Twig-CS-Fixer/compare/4.0.0...4.0.1)

---
updated-dependencies:
- dependency-name: vincentlanglet/twig-cs-fixer
  dependency-version: 4.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-18 23:54:36 +00:00
dependabot[bot] 8609fc3552 Bump rector/rector from 2.4.5 to 2.4.6 in the dev-dependencies group (#152)
Bumps the dev-dependencies group with 1 update: [rector/rector](https://github.com/rectorphp/rector).


Updates `rector/rector` from 2.4.5 to 2.4.6
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.4.5...2.4.6)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.4.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-17 23:54:34 +00:00
dependabot[bot] 8cec9faec0 Bump the dev-dependencies group with 2 updates (#150)
Bumps the dev-dependencies group with 2 updates: [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) and [phpstan/phpstan-symfony](https://github.com/phpstan/phpstan-symfony).


Updates `friendsofphp/php-cs-fixer` from 3.95.7 to 3.95.8
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.7...v3.95.8)

Updates `phpstan/phpstan-symfony` from 2.0.19 to 2.0.20
- [Release notes](https://github.com/phpstan/phpstan-symfony/releases)
- [Commits](https://github.com/phpstan/phpstan-symfony/compare/2.0.19...2.0.20)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan-symfony
  dependency-version: 2.0.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 23:54:52 +00:00
dependabot[bot] bf36b1a6ac Bump sentry/sentry from 4.27.0 to 4.28.0 (#148)
Bumps [sentry/sentry](https://github.com/getsentry/sentry-php) from 4.27.0 to 4.28.0.
- [Release notes](https://github.com/getsentry/sentry-php/releases)
- [Changelog](https://github.com/getsentry/sentry-php/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-php/compare/4.27.0...4.28.0)

---
updated-dependencies:
- dependency-name: sentry/sentry
  dependency-version: 4.28.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 13:16:48 +02:00
dependabot[bot] 0b5c535ed9 Bump the dev-dependencies group with 3 updates (#149)
Bumps the dev-dependencies group with 3 updates: [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer), [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) and [vincentlanglet/twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer).


Updates `friendsofphp/php-cs-fixer` from 3.95.5 to 3.95.7
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.5...v3.95.7)

Updates `phpunit/phpunit` from 13.2.0 to 13.2.1
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.2.1/ChangeLog-13.2.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.2.0...13.2.1)

Updates `vincentlanglet/twig-cs-fixer` from 3.14.0 to 4.0.0
- [Release notes](https://github.com/VincentLanglet/Twig-CS-Fixer/releases)
- [Upgrade guide](https://github.com/VincentLanglet/Twig-CS-Fixer/blob/main/UPGRADE.md)
- [Commits](https://github.com/VincentLanglet/Twig-CS-Fixer/compare/3.14.0...4.0.0)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/phpunit
  dependency-version: 13.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vincentlanglet/twig-cs-fixer
  dependency-version: 4.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-15 23:58:20 +00:00
dependabot[bot] dcb1f40b7e Bump phpstan/phpstan-doctrine in the dev-dependencies group (#146)
Bumps the dev-dependencies group with 1 update: [phpstan/phpstan-doctrine](https://github.com/phpstan/phpstan-doctrine).


Updates `phpstan/phpstan-doctrine` from 2.0.25 to 2.0.27
- [Release notes](https://github.com/phpstan/phpstan-doctrine/releases)
- [Commits](https://github.com/phpstan/phpstan-doctrine/compare/2.0.25...2.0.27)

---
updated-dependencies:
- dependency-name: phpstan/phpstan-doctrine
  dependency-version: 2.0.27
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-10 23:54:28 +00:00
dependabot[bot] 368790c073 Bump the dev-dependencies group with 2 updates (#144)
Bumps the dev-dependencies group with 2 updates: [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) and [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit).


Updates `friendsofphp/php-cs-fixer` from 3.95.4 to 3.95.5
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.4...v3.95.5)

Updates `phpunit/phpunit` from 13.1.14 to 13.2.0
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.2.0/ChangeLog-13.2.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.1.14...13.2.0)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/phpunit
  dependency-version: 13.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 23:55:05 +00:00
dependabot[bot] 078f838700 Bump doctrine/doctrine-bundle from 3.2.2 to 3.2.3 (#141)
Bumps [doctrine/doctrine-bundle](https://github.com/doctrine/DoctrineBundle) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/doctrine/DoctrineBundle/releases)
- [Commits](https://github.com/doctrine/DoctrineBundle/compare/3.2.2...3.2.3)

---
updated-dependencies:
- dependency-name: doctrine/doctrine-bundle
  dependency-version: 3.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 11:37:53 +02:00
dependabot[bot] 841bd5b00d Bump phpunit/php-code-coverage in the dev-dependencies group (#142)
Bumps the dev-dependencies group with 1 update: [phpunit/php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage).


Updates `phpunit/php-code-coverage` from 14.2.0 to 14.2.2
- [Release notes](https://github.com/sebastianbergmann/php-code-coverage/releases)
- [Changelog](https://github.com/sebastianbergmann/php-code-coverage/blob/main/ChangeLog-14.2.md)
- [Commits](https://github.com/sebastianbergmann/php-code-coverage/compare/14.2.0...14.2.2)

---
updated-dependencies:
- dependency-name: phpunit/php-code-coverage
  dependency-version: 14.2.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 11:37:40 +02:00
dependabot[bot] 2aea98a839 Bump phpoffice/phpspreadsheet from 5.7.0 to 5.8.0 (#143)
Bumps [phpoffice/phpspreadsheet](https://github.com/PHPOffice/PhpSpreadsheet) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/PHPOffice/PhpSpreadsheet/releases)
- [Changelog](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHPOffice/PhpSpreadsheet/compare/5.7.0...5.8.0)

---
updated-dependencies:
- dependency-name: phpoffice/phpspreadsheet
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 11:37:14 +02:00
dependabot[bot] 54668521f0 Bump the dev-dependencies group with 2 updates (#140)
---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/php-code-coverage
  dependency-version: 14.2.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 23:57:40 +00:00
dependabot[bot] 56d89e42d6 Bump phpunit/phpunit in the dev-dependencies group (#139)
Bumps the dev-dependencies group with 1 update: [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit).


Updates `phpunit/phpunit` from 13.1.13 to 13.1.14
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.1.14/ChangeLog-13.1.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.1.13...13.1.14)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-version: 13.1.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 23:56:53 +00:00
dependabot[bot] 2997323f0e Bump friendsofphp/php-cs-fixer in the dev-dependencies group (#138)
Bumps the dev-dependencies group with 1 update: [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer).


Updates `friendsofphp/php-cs-fixer` from 3.95.3 to 3.95.4
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.3...v3.95.4)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 03:41:41 +00:00
dependabot[bot] 15e2a57943 Bump the dev-dependencies group with 3 updates (#136)
Bumps the dev-dependencies group with 3 updates: [phpstan/phpstan-doctrine](https://github.com/phpstan/phpstan-doctrine), [phpunit/php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage) and [sebastian/global-state](https://github.com/sebastianbergmann/global-state).


Updates `phpstan/phpstan-doctrine` from 2.0.23 to 2.0.25
- [Release notes](https://github.com/phpstan/phpstan-doctrine/releases)
- [Commits](https://github.com/phpstan/phpstan-doctrine/compare/2.0.23...2.0.25)

Updates `phpunit/php-code-coverage` from 14.1.9 to 14.1.10
- [Release notes](https://github.com/sebastianbergmann/php-code-coverage/releases)
- [Changelog](https://github.com/sebastianbergmann/php-code-coverage/blob/14.1.10/ChangeLog-14.1.md)
- [Commits](https://github.com/sebastianbergmann/php-code-coverage/compare/14.1.9...14.1.10)

Updates `sebastian/global-state` from 9.0.0 to 9.0.1
- [Release notes](https://github.com/sebastianbergmann/global-state/releases)
- [Changelog](https://github.com/sebastianbergmann/global-state/blob/main/ChangeLog.md)
- [Commits](https://github.com/sebastianbergmann/global-state/compare/9.0.0...9.0.1)

---
updated-dependencies:
- dependency-name: phpstan/phpstan-doctrine
  dependency-version: 2.0.25
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpunit/php-code-coverage
  dependency-version: 14.1.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: sebastian/global-state
  dependency-version: 9.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-03 17:49:30 +00:00
Marijn 7fdfe59224 Update twif (#135) 0.0.23 2026-05-31 09:39:30 +00:00
Marijn dc592ab54a Symfony 8.1 (#131) 2026-05-30 20:46:23 +02:00
dependabot[bot] bd387828ba Bump martin-georgiev/postgresql-for-doctrine from 4.5.1 to 4.6.0 (#133) 2026-05-30 20:44:54 +02:00
dependabot[bot] 3ab85b47ca Bump guzzlehttp/psr7 from 2.10.3 to 2.10.4 (#134) 2026-05-30 20:43:24 +02:00
dependabot[bot] 89455997de Bump the dev-dependencies group with 3 updates (#132)
Bumps the dev-dependencies group with 3 updates: [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer), [phpstan/phpstan-doctrine](https://github.com/phpstan/phpstan-doctrine) and [phpstan/phpstan-symfony](https://github.com/phpstan/phpstan-symfony).


Updates `friendsofphp/php-cs-fixer` from 3.95.2 to 3.95.3
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.95.2...v3.95.3)

Updates `phpstan/phpstan-doctrine` from 2.0.22 to 2.0.23
- [Release notes](https://github.com/phpstan/phpstan-doctrine/releases)
- [Commits](https://github.com/phpstan/phpstan-doctrine/compare/2.0.22...2.0.23)

Updates `phpstan/phpstan-symfony` from 2.0.18 to 2.0.19
- [Release notes](https://github.com/phpstan/phpstan-symfony/releases)
- [Commits](https://github.com/phpstan/phpstan-symfony/compare/2.0.18...2.0.19)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-version: 3.95.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan-doctrine
  dependency-version: 2.0.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: phpstan/phpstan-symfony
  dependency-version: 2.0.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 00:52:50 +00:00
dependabot[bot] d127e16ada Bump twig/twig in the twig group across 1 directory (#128)
Bumps the twig group with 1 update in the / directory: [twig/twig](https://github.com/twigphp/Twig).


Updates `twig/twig` from 3.26.0 to 3.27.0
- [Release notes](https://github.com/twigphp/Twig/releases)
- [Changelog](https://github.com/twigphp/Twig/blob/3.x/CHANGELOG)
- [Commits](https://github.com/twigphp/Twig/compare/v3.26.0...v3.27.0)

---
updated-dependencies:
- dependency-name: twig/twig
  dependency-version: 3.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: twig
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 14:19:56 +02:00
dependabot[bot] dba70cd75b Bump guzzlehttp/psr7 from 2.10.2 to 2.10.3 (#129)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.10.2 to 2.10.3.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.10/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.10.2...2.10.3)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-version: 2.10.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 14:12:41 +02:00
Marijn 6a085ae656 Update UX turbo to 3 (#125) 2026-05-29 14:11:26 +02:00
dependabot[bot] b689b81d61 Bump phpstan/phpstan from 2.1.56 to 2.2.1 in the dev-dependencies group (#130)
---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 00:12:27 +00:00
dependabot[bot] 88fafe85f7 Bump phpunit/phpunit in the dev-dependencies group (#127)
Bumps the dev-dependencies group with 1 update: [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit).


Updates `phpunit/phpunit` from 13.1.12 to 13.1.13
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/13.1.13/ChangeLog-13.1.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/13.1.12...13.1.13)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-version: 13.1.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 00:49:25 +00:00
dependabot[bot] 63d7c749ed Bump doctrine/orm from 3.6.6 to 3.6.7 (#122)
Bumps [doctrine/orm](https://github.com/doctrine/orm) from 3.6.6 to 3.6.7.
- [Release notes](https://github.com/doctrine/orm/releases)
- [Commits](https://github.com/doctrine/orm/compare/3.6.6...3.6.7)

---
updated-dependencies:
- dependency-name: doctrine/orm
  dependency-version: 3.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0.0.22
2026-05-27 10:40:12 +00:00
dependabot[bot] 3ce1cada11 Bump guzzlehttp/psr7 from 2.10.1 to 2.10.2 (#121)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.10.1 to 2.10.2.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.10/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.10.1...2.10.2)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-version: 2.10.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-27 12:36:40 +02:00
Marijn 6b37ef3ee7 Symfony 8.0.13 (#124) 2026-05-27 12:36:07 +02:00