Wunkolo
f233eb522c
renderer_vulkan: Fix multisample ClearTextureWithRenderpass
...
Ensure that the multisample framebuffer is used rather than the usual one when using a render pass to clear the textures.
That way, a MSAA-render AND resolve is used to clear the textures at the same time.
2026-05-09 20:30:11 -07:00
Wunkolo
3593a15046
renderer_vulkan: Fix ConvertDS24S8ToRGBA8 image targets
...
Ensure that the Multi-Sample texture is used for the destination color image as well. Should the dest image be MSAA too? Or should all the values be resolved into a minimum depth and some combination of stencil-values here?
2026-05-09 20:30:11 -07:00
Wunkolo
9f2f938b7e
renderer_vulkan: Fix Surface::ScaleUp scale/sample increase
...
This should be checking the _new_ value to possibly cull upscaled texture creation rather than the current value of the surface. Fixes broken up render passes when drawing UI in some games.
2026-05-09 20:30:11 -07:00
Wunkolo
dae801da2d
renderer_vulkan: Fix MSAA framebuffer target resolve surface
...
Use the specified type rather than defaulting to the surface's current one(implicit `ImageView` argument).
2026-05-09 20:30:11 -07:00
Wunkolo
55c4e15ceb
renderer_vulkan: Fix narrowing byte conversion
...
Fixes a compilation error on Unix platforms.
2026-05-09 20:30:11 -07:00
Wunkolo
393cc1053b
renderer_vulkan: Add TextureRuntime::ResolveTexture
...
Rather than use a big lambda, just rip this out into a proper function for other blit functions to utilize.
2026-05-09 20:30:11 -07:00
Wunkolo
5e016a42b1
renderer_vulkan: Fix cleanup and debug-naming for d24s8_to_rgba8_ms_comp
2026-05-09 20:30:11 -07:00
Wunkolo
936a6b7cae
renderer_vulkan: Fix initialization of image handles
...
Try to optimally create the new image handles when a change in res scale or sample-count has actually occured. MSAA images need to be updated too in the case that the resolution scale has changed
2026-05-09 20:30:11 -07:00
Wunkolo
f71044da4f
renderer_vulkan: Derive framebuffer sample-count from attachments
...
Derive the framebuffer sample-count from the input color and depth operands. Similar to how `res_scale` is determined.
2026-05-09 20:30:11 -07:00
Wunkolo
e506c50d8b
renderer_vulkan: Fix dangling surface reference during msaa resolve
...
These individual parameters need to be copied as the reference to the surface-object only lasts within the scope of this function.
2026-05-09 20:30:11 -07:00
Wunkolo
4c859d6570
renderer_vulkan: Fix Framebuffer::sample_count move-operator
...
`sample_count` needs to be move/copied over.
Also reorder the accessor order to match the declaration of variables.
2026-05-09 20:30:10 -07:00
Wunkolo
4f0a9aac8d
renderer_vulkan: Fix multisample texture init barrier
...
Should address the MultiSampled image directly since the multisampled image is just a transient image and not the leading state of the image.
2026-05-09 20:30:10 -07:00
Wunkolo
94e782ad2c
renderer_vulkan: Implement multisample texture runtime
...
This seems to be enough for simple programs to render with MSAA enabled!
2026-05-09 20:30:10 -07:00
Wunkolo
50e011d54a
renderer_vulkan: Implement multisample pipeline/renderpass support
...
Allows multi-sample render passes and graphics pipelines to be created, using sample-rate shading rather than coverage-based MSAA.
2026-05-09 20:30:10 -07:00
Wunkolo
3950985c59
rasterizer_cache: Initial support for multi-sample surfaces
2026-05-09 20:30:10 -07:00
Wunkolo
57b82a9d66
vk_instance: Add detection of MSAA features
...
Full multi-sample support is when renderpass-2 and depth-stencil-resolve extensions are available and when sample-rate-shading and msaa-storage-images are supported.
2026-05-09 20:30:10 -07:00
Wunkolo
ad82b2ca76
vk_blit_helper: Add d24s8_to_rgba8_ms_comp
...
Helper host-shader for blitting multi-sampled DS24S8 textures to multi-sampled RGBA8
2026-05-09 20:30:10 -07:00
Wunkolo
dabbf7c1a6
config: Add sample_count renderer option
...
Option is only enabled when the renderer is set to Vulkan, for now.
2026-05-09 20:30:10 -07:00
OpenSauce04
dbe7fd979f
cmake: Add EXCLUDE_FROM_ALL to targets where applicable
2026-05-09 14:01:56 +01:00
PabloMK7
1c7c7a5f1b
svc: Fix instruction cache invalidation only affecting current core ( #2100 )
2026-05-09 14:03:55 +02:00
OpenSauce04
bf59d26c48
externals: Update dllwalker to commit 2f8b349
2026-05-09 10:32:52 +01:00
OpenSauce04
652fc02175
ci: Implement MXE CI/CD build job
2026-05-09 10:32:52 +01:00
OpenSauce04
854e198196
cmake: Implemented bundle target for MXE builds
...
Just copies the content of bin/<type>/ to bundle/
2026-05-09 10:32:52 +01:00
OpenSauce04
5ecd402811
cmake: Explicitly use gcc-ar instead of ar for MXE builds
2026-05-09 10:32:52 +01:00
OpenSauce04
0ce2a30d20
Implement proper DLL resolution for MXE builds
2026-05-09 10:32:52 +01:00
OpenSauce04
644a181aff
cmake: Explicitly disable BUILD_SHARED_LIBS
2026-05-09 10:32:52 +01:00
OpenSauce04
422c7865a3
For Linux --> Windows cross-compilation, copy all cross-compiled DLLs during build
...
As per the comment, this is just to get the build functioning pending a real solution
2026-05-09 10:32:52 +01:00
OpenSauce04
ca99574700
tests: Don't run catch_discover_tests when cross-compiling to a different OS
2026-05-09 10:32:52 +01:00
OpenSauce04
f902010f04
externals: Don't fall back to bundled OpenSSL if USE_SYSTEM_OPENSSL is enabled
2026-05-09 10:32:52 +01:00
PabloMK7
929a51afc6
audio: Add option to simulate headphones plugged in ( #2099 )
citra-build / source (push) Failing after 6m47s
citra-build / linux-x86_64 (appimage-wayland) (push) Successful in 4m21s
citra-build / linux-x86_64 (gcc-nopch) (push) Failing after 4s
citra-build / android (googleplay) (push) Successful in 7s
citra-build / android (vanilla) (push) Failing after 3m24s
citra-build / docker (push) Failing after 20s
citra-format / clang-format (push) Failing after 1s
citra-libretro / android (push) Failing after 2m54s
citra-build / linux-x86_64 (appimage) (push) Failing after 14m13s
citra-libretro / linux (push) Failing after 3m16s
citra-libretro / windows (push) Failing after 3m22s
citra-transifex / transifex (push) Has been skipped
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
2026-05-08 15:19:53 +02:00
PabloMK7
260f08c497
core: Add async filesystem operations ( #2098 )
2026-05-08 11:35:47 +02:00
PabloMK7
921ea178b9
ui: Made rom loading errors more clear and user friendly ( #2097 )
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-05-07 20:39:30 +02:00
PabloMK7
b540725090
Revamp GDB implemenation and add a some minor debug features ( #2086 )
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-05-07 13:48:35 +02:00
PabloMK7
5ddbaeae23
gsp: Fix GPU interrupt queue and add GPU timing emulation ( #2095 )
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-05-07 01:36:21 +02:00
OpenSauce04
b081f800a4
Revert "ci: Override Android SDK Ninja with newer version"
...
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
This reverts commit eee7f076ee .
2026-05-04 17:40:37 +01:00
OpenSauce04
76a71d76d4
externals: Revert to a patched version of OpenAL v1.24.1
2026-05-04 17:40:37 +01:00
Rodrigo Iglesias
83eef0012e
macOS: normalize SDMC directory filenames ( #2080 )
...
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
* macOS: normalize SDMC directory filenames
* Guard macOS filename normalization behind __APPLE__
* Guard macOS filename normalization test
* Apply clang-format
* Update license headers
2026-05-03 00:21:53 +02:00
OpenSauce04
ec6a0dd1c8
ci: Migrate Transifex runner to latest tag
...
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
The `transifex` tag has now been removed due to a seperate image no longer being necessary
2026-04-26 15:29:29 +01:00
OpenSauce04
eb498e5ecd
qt: Fixed outdated use of qt_add_lupdate
2026-04-26 15:25:38 +01:00
OpenSauce04
4fa793b945
android: Bump NDK and AGP versions
...
NDK: 27.1.x --> 27.3.x
AGP: 8.13.1 --> 8.13.2
2026-04-26 13:55:16 +01:00
OpenSauce04
5d84dfed91
Fix building w/ OpenAL on OpenBSD
...
- Explicitly disable Solaris backend on OpenBSD
- Update OpenAL to v1.25.1
2026-04-26 12:52:32 +01:00
OpenSauce04
eee7f076ee
ci: Override Android SDK Ninja with newer version
2026-04-26 12:32:49 +01:00
Francesco Saltori
996abd1eaf
Remove old CONTRIBUTING.md file
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-04-25 21:57:46 +01:00
Wunk
91128d6625
shader_jit: Emit LG2/EX2 subroutines on-demand ( #2046 )
...
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
Rather than emitting these subroutine functions for _every_ shader, only emit
the subroutines when the `LG2` and `EX2` instructions are actually used.
This saves a good chunk of memory across all shaders.
Inspired by Tanuki3DS.
2026-04-24 20:34:46 +02:00
Eric Warmenhoven
37b6c91de6
libretro: update docker image for mxe github action
citra-build / source (push) Waiting to run
citra-build / linux-x86_64 (appimage) (push) Waiting to run
citra-build / linux-x86_64 (appimage-wayland) (push) Waiting to run
citra-build / linux-x86_64 (gcc-nopch) (push) Waiting to run
citra-build / linux-arm64 (clang) (push) Waiting to run
citra-build / linux-arm64 (gcc-nopch) (push) Waiting to run
citra-build / macos (push) Waiting to run
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-libretro / android (push) Waiting to run
citra-libretro / linux (push) Waiting to run
citra-libretro / windows (push) Waiting to run
citra-libretro / macos (arm64) (push) Waiting to run
citra-libretro / macos (x86_64) (push) Waiting to run
citra-libretro / ios (push) Waiting to run
citra-libretro / tvos (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-04-24 14:50:09 +01:00
OpenSauce
b6c54ac8c7
Update PR template
2026-04-24 14:04:16 +01:00
OpenSauce04
b3ee2d8ac5
tools/README.md: Re-updated release checklist
...
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
Knew I'd forgotten something (:
2026-04-21 14:55:40 +01:00
OpenSauce04
9701a3d874
tools/README.md: Updated release checklist
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
2026-04-21 10:47:52 +01:00
OpenSauce04
a276623dbb
Updated translations via Transifex
2026-04-21 10:47:49 +01:00
PabloMK7
2fff086e81
qt: Temporarily fix fullscreen on msys2 builds ( #2049 )
...
citra-build / source (push) Has been cancelled
citra-build / linux-x86_64 (appimage) (push) Has been cancelled
citra-build / linux-x86_64 (appimage-wayland) (push) Has been cancelled
citra-build / linux-x86_64 (gcc-nopch) (push) Has been cancelled
citra-build / linux-arm64 (clang) (push) Has been cancelled
citra-build / linux-arm64 (gcc-nopch) (push) Has been cancelled
citra-build / macos (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-libretro / android (push) Has been cancelled
citra-libretro / linux (push) Has been cancelled
citra-libretro / windows (push) Has been cancelled
citra-libretro / macos (arm64) (push) Has been cancelled
citra-libretro / macos (x86_64) (push) Has been cancelled
citra-libretro / ios (push) Has been cancelled
citra-libretro / tvos (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
* qt: Temporarily fix fullscreen on msys2 builds
* Removed excessive endif comments
We really only need these when nesting ifdefs
* blockRoundedCorners: Invert if condition for readability
---------
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2026-04-19 13:47:49 +01:00