The latest version of the release notes can be found on the website.
- update to JDK 21
- update to Spring Boot 3.4
- use stripped down version of bootstrap to mitigate vulnerabilities
- add the ShinyProxy Operator for Docker
- expose all apps (including apps a user has no access to) as a variable in templates (see docs)
- support links in app descriptions
- allow to show apps in grid on main page (see docs)
- don't include
- Default
in title of app page - improve using ShinyProxy on a mobile device
- much improved monitoring stack
- allow to embed Grafana into ShinyProxy
- support monitoring stack on Docker hosts (see ShinyProxy Operator docs)
- don't restart crashed Kubernetes container (or pod), this makes debugging a crashed app easier
- log reason a Kubernetes pod crashed
- log reason a Docker container crashed
- check health of a container before showing the app crashed page
- show version and debugging information on admin page
- exit with an error code when ShinyProxy crashes
- more clearly log error when ShinyProxy crashes
- improve error when defining duplicate users
- shutdown ShinyProxy container when the JVM goes out of memory (only in official Docker image)
- tweak Java memory settings for more efficient memory usage (only in official Docker image)
- ensure that logs for failed apps are correctly shown in Grafana
- check container health during startup, such that failures are detected more quickly
- allow to record custom user attributes in usage statistics (see docs)
- add CSV usage stats backend (see docs)
- allow using
serverName
inaccess-expression
to limit apps to specific domains - allow using SpEL in the
proxy.title
andproxy.logo-url
properties - ECS: create single log group for each spec instead of for each proxy
- ECS: rename the
proxy.ecs.enable-cloudwatch
toproxy.ecs.enable-cloud-watch
for consistency (the old property still works) - ECS: support repository credentials (pull secrets) (see docs)
- ECS: support adding SecretManger secrets (see docs), contributed by @axel-nagel
- Docker: bind host port of Docker containers on
127.0.0.1
instead of0.0.0.0
(see docs to change this) - Docker: allow specifying default docker network (see docs)
- Docker: allow to use
group-add
for Docker containers (see docs) - Docker: allow to use Loki Docker driver for collecting logs (see docs)
- add
delegate_app_status
andappInfo
Prometheus metrics (see docs) - add option to not use default OpenID scopes (see docs)
- support fetching groups using the Microsoft Graph API when using OpenID (see docs)
- add option to enforce HTTPS in the OpenID redirect URI (see docs)
- allow to use the
NameID
as username when using SAML (see docs) - allow to handle usernames as case-insensitive (see docs)
- add custom header authentication backend (see docs)
- log message when receiving invalid status code when ShinyProxy checks reachability of app
- allow to add extra fields to the
App Details
dialog (see docs) - ensure ShinyProxy can be seamlessly (without downtime) upgraded even if storage schema of Spring session changes
- make the Docker and Kubernetes resources configuration more flexible (see docs)
- validate Kubernetes resources configuration, such that a more user-friendly error is reported
- Note: for improved security, ShinyProxy now uses a (single) Kubernetes
service to access pods. Therefore, ShinyProxy should have permission to manage
Kubernetes services. The manifests of the operator are updated to support this. - Fix: don't send emails with zero-byte attachments
- Fix: don't add request headers that contain non-allowed (i.e. everything except
ISO-8859-1
/ISO-Latin-1
) characters - Fix: don't use protocol of
docker.url
as target protocol for connecting to apps - Fix: gracefully handle errors in usage stats, to not brake the apps
- Fix: prevent memory leak in
SpecExpressionResolver
- Fix: prevent memory leak in
ProxyMappingManager
- Fix: prevent
IllegalStateException: creationTime key must not be null
- Fix: prevent
ConcurrentModificationException
error - Fix: correctly load existing app when spec is removed
- Fix: show
app crashed
page instead of reloading page in specific situations - Fix: prevent
NullPointerException
for requests without aUser-Agent
header