Skip to content

Upgrade dependencies - #2162

Open
blued-gear wants to merge 90 commits into
mainfrom
upgrade_dependencies
Open

blued-gear wants to merge 90 commits into
mainfrom
upgrade_dependencies

Conversation

@blued-gear

@blued-gear blued-gear commented Jun 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This PR upgrades all dependencies, including PHP, Symfony and JS. Broken code was fixed, many (but not all) new deprecations cleaned and the functionality of the site restored with best effort. A summary of major version jumps is attached at the end of this text.

I'm asking you to

verify the state of the site. There are many things I and the tests can not check; like 2FA and OAuth authenticator integration (Google, Github, ...).
We need a graceful rollout of this branch from dev to prod-like environments to ensure all broken thing (which likely still exist) get caught.

Other fixes

While I was at it, I fixed smaller things which annoyed me ;)

  • in the "create entry" page the Magazine search is now case-insensitive and clears old search-results when typing a name

Todo

  • upgrade PHP in the Docker containers
  • revert content of to be reverted commits
  • update docs

Upgrades

php:
php 8.3 -> 8.5
- notable new features:
- Asymmetric Visibility
- Property hooks
- New array_*() functions + array_first() and array_last() functions
- Fatal Errors (such as an exceeded maximum execution time) now include a backtrace
- Pipe Operator
- Uri class
- breaking changes:
- Using null as an array offset or when calling array_key_exists() is now deprecated
doctrine-bundle 2.18 -> 3.2
- https://github.com/greg0ire/DoctrineBundle/blob/4.0.x/UPGRADE-3.0.md
doctrine-migrations-bundle 3.7 -> 4.0
- https://github.com/derrabus/DoctrineMigrationsBundle/blob/4.0.x/UPGRADE.md
- https://github.com/doctrine/migrations/blob/3.0.x/UPGRADE.md
- need to run the doctrine:migrations:sync-metadata-storage command
doctrine PostgreSQL enum handling
- replaced the custom DBAL enum types with native PHP enums mapped by heymoon/doctrine-psql-enum
- the included migration converts the existing PostgreSQL enum definitions and must run as part of the normal deployment migration step
debril/rss-atom-bundle -> php-feed-io/feed-io
- the old bundle is abandoned and was removed
- the RSS feed was reimplemented directly with FeedIo while keeping the existing /feed endpoint
FrankenPHP runtime
- removed runtime/frankenphp-symfony; FrankenPHP now uses Symfony’s standard SymfonyRuntime directly
oauth2-google 4 -> 5
- https://github.com/thephpleague/oauth2-google/blob/main/CHANGELOG.md
reflection-docblock 5.4 -> 6.0
- do we even use this?
2fa-backup-code, 2fa-bundle, 2fa-totp 7.5 -> 8.6
- https://github.com/scheb/2fa/blob/8.x/UPGRADE.md#7x-to-8x
- Priority of the two-factor authenticator has changed from 0 to -100
oauth2-keycloak 5.1 -> 6.1
- https://github.com/stevenmaguire/oauth2-keycloak/releases/tag/6.0.0
- nothing major changed
ux-autocomplete 2.18 -> 3.2
- https://github.com/symfony/ux-autocomplete/blob/3.x/CHANGELOG.md
- nothing major changed for us
ux-chartjs 2.18 -> 3.2
- https://github.com/symfony/ux-chartjs/blob/3.x/CHANGELOG.md
- nothing major changed for us
ux-twig-component 2.18 -> 3.2
- https://github.com/symfony/ux-twig-component/blob/3.x/CHANGELOG.md
- nothing major changed for us
webmozart/assert 1.11 -> 2.4
- https://github.com/webmozarts/assert/blob/master/CHANGELOG.md
- nothing major changed for us
phpunit 12.5 -> 13.2
- https://github.com/sebastianbergmann/phpunit/releases/tag/13.0.0
- nothing major changed for us

js:
babel/core 7.29 -> 8.0
- https://babeljs.io/docs/v8-migration/
babel/preset-env 7.29 -> 8.0
eslint/js 9.39 -> 10.0, eslint 9.39 -> 10.5
- https://github.com/eslint/eslint/releases/tag/v10.0.0
fontawesome-free 6.7 -> 7.3
- https://fontawesome.com/changelog
- Icon canvases now render at a consistent fixed width. To use the default rendering from v6, add our new fa-width-auto class.
stylistic/eslint-plugin 2.13 -> 5.10
- https://github.com/eslint-stylistic/eslint-stylistic/releases/tag/v5.0.0
- nothing major changed for us
symfony/stimulus-bridge 3.2 -> 4.0
- https://github.com/symfony/stimulus-bridge/releases/tag/v4.0.0
- nothing major changed for us
symfony/webpack-encore 5.3 -> 7.1
- https://github.com/symfony/webpack-encore/blob/main/UPGRADE.md
- needed changes were applied
chart.js 3.8 -> 4.5
- https://www.chartjs.org/docs/latest/migration/v4-migration.html
- not directly used by us (Symfony handles it)
globals 15.15 -> 17.7
hotkeys-js 3.13 -> 4.0
- https://github.com/jaywcjlove/hotkeys-js/releases/tag/v4.0.0
- no notable changes
- do we even use this?
sass-loader 16.0 -> 17.0
- https://github.com/webpack/sass-loader/releases/tag/v17.0.0
- no notable changes
simple-icons-font 14.15 -> 16.24
- https://github.com/simple-icons/simple-icons-font/releases/tag/15.0.0
- https://github.com/simple-icons/simple-icons/releases/tag/16.0.0
- no notable changes
webpack-cli 5.1 -> 7.0
- https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md
- only used by Symfony

GL HF

@melroy89

melroy89 commented Sep 13, 2026 •

Copy link
Copy Markdown
Member

[ ] update docs

What do you wanted to update in the docs still? PHP 8.5 is already correctly documented now in the docs and README.

I had some ideas we could still improve in the docs?

  • Update docs/03-contributing/03-project-overview.md:

    • Remove the deleted src/Feed directory.
    • Explain that PostgreSQL enums now use native PHP enums plus heymoon/doctrine-psql-enum, if that detail is useful to contributors.
    • Mention that the RSS feed is now implemented by src/Controller/Feed/RssFeedController.php.
    • Fix the existing typo php bin:console to php bin/console.
  • Verify installation requirements:

    • Check whether the bare-metal installation page contains package names or commands tied to an older PHP version. I currently run ubuntu server 24.04 still ("bare metal") but with PHP 8.5 so I can test this to some degree.

@blued-gear

Copy link
Copy Markdown
Collaborator Author

What do you wanted to update in the docs still

The open checkbox is a reminder for me to go through all changes just before this is merged and update docs and upcoming release notes.

melroy89 and others added 7 commits September 15, 2026 16:42
…de_dependencies

# Conflicts:
#	assets/styles/layout/_forms.scss
#	composer.lock
#	config/bundles.php
#	src/Controller/Feed/RssFeedController.php
#	src/Entity/Domain.php
#	src/Entity/Entry.php
#	src/Entity/EntryComment.php
#	src/Entity/Magazine.php
#	src/Entity/MessageThread.php
#	src/Entity/Post.php
#	src/Entity/PostComment.php
#	src/Entity/Traits/VotableTrait.php
#	src/Entity/User.php
#	src/Form/Type/MagazineAutocompleteType.php
#	src/Repository/MagazineRepository.php
#	src/Service/ActivityPubManager.php
#	src/Service/FeedManager.php
#	src/Service/InstanceStatsManager.php
#	src/Service/UserSettingsManager.php
#	src/Twig/Components/ReportListComponent.php
#	src/Utils/Polyfills.php
@melroy89
melroy89 marked this pull request as ready for review September 20, 2026 18:29
@melroy89
melroy89 marked this pull request as draft September 20, 2026 18:30
@melroy89 melroy89 mentioned this pull request Sep 21, 2026
@blued-gear
blued-gear marked this pull request as ready for review September 21, 2026 16:11
@melroy89
melroy89 force-pushed the upgrade_dependencies branch 2 times, most recently from 274b2ac to d025742 Compare September 23, 2026 20:19
# Conflicts:
#	assets/controllers/rich_textarea_controller.js
#	composer.json
#	composer.lock
#	src/Controller/AjaxController.php
Comment thread src/Enums/ESortOptions.php Outdated
Comment thread src/Enums/ESortOptions.php Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants