Podman Desktop 1.24 Release
Podman Desktop 1.24 Release! 🎉

Podman Desktop 1.24 is now available. Click here to download it!
This release brings exciting new features and improvements:
- Enterprise-managed default registries: Allow administrators to preconfigure default container registries and mirrors.
- Remote Podman connections visibility: Resource lists now include the connection name.
- Select build targets in Containerfile: Choose a specific build stage when working with multi-stage Containerfiles.
Release details
Enterprise-managed default registries and mirrors
Enterprises often use a set of specific registries as well as mirrors for security and performance. Administrators can now preconfigure default container registries and mirrors across their organization's deployment of Podman Desktop. This simplifies management by directing image pulls through internal registry mirrors or blocking access to specific registries, ensuring compliance and approved workflows. A specific configuration file will need to be configured, see the documentation here: Configuring default registries and mirrors.
Remote Podman connections visibility
When dealing with multiple connections (e.g., Podman Remote), clearly identifying the source of your resources is crucial. The UI now enhances visibility by including the connection name in resource lists. For example, in the container list, the Environment column now clearly displays the Podman connection name, making it significantly easier to differentiate and manage resources across various remote container engines and endpoints.


Select build targets in Containerfile
Building images with multiple targets in your Containerfile is now simpler. On the Build Image page, Podman Desktop now detects automatically the available stages, and a new dropdown menu lets you select the desired build target. This feature is equivalent to the --target option in the Podman CLI and simplifies complex multi-stage builds.

Podman kube play YAML deployment enhanced with 'replace' option
For users applying YAML files via Podman Kube Play (https://docs.podman.io/en/v5.5.1/markdown/podman-kube-play.1.html), support for the replace option has been added. This offers more flexibility when updating resources, allowing for smoother deployments and modifications.

New task manager is now the default
Discover the redesigned task manager, now the default experience in Podman Desktop. This update offers a more intuitive and efficient way to monitor and manage all your ongoing tasks, replacing the older Legacy Task Manager. You can access the new Task Manager by clicking on the bell icon in the bottom navigation bar. You'll find a streamlined interface that provides clearer insights into task status, progress, and historical information, making it easier than ever to keep track of your operations and quickly address any issues.

Performance improvement for Podman version check
This version of Podman Desktop delivers improved performance and reduced resource consumption. We've implemented a caching mechanism for version checks. This enhancement significantly reduces background operations, leading to a faster, more responsive application experience and freeing up system resources for your other critical tasks.
Community thank you
🎉 We’d like to say a big thank you to everyone who helped to make Podman Desktop even better. In this release we received pull requests from the following people:
Final notes
The complete list of issues fixed in this release is available here.
Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.
Detailed release changelog
feat
- feat(renderer): adding env column to podman pods by @axel7083 #15193
- feat(renderer): show container connection display name in environment column by @axel7083 #15027
- feat(podman kube play): support
replaceoption by @axel7083 #15161 - feat(podman): add default registry loader on startup by @cdrage #15122
- feat(package: main): adding scripts/download-remote-extensions.ts by @axel7083 #15121
- feat: expose application name to extensions by @benoitf #15120
- feat(package: main): make ExtensionInstaller injectable by @axel7083 #15118
- feat(main/BuildImage/containerfile-parser): improve target detection by @simonrey1 #15107
- feat(managed-by): apply default settings on init by @cdrage #15089
- feat(main/BuilImage): add target name if any to the task title by @simonrey1 #15030
- feat(ui/Tooltip): support containerClass prop by @axel7083 #15028
- feat(BuildImage): add target dropdown by @simonrey1 #14982
- feat(BuildImage): expose method to extract targets from containerfile by @simonrey1 #14980
- feat: add UPDATING status to statusicon component by @bmahabirbu #14904
- feat: make the new TaskManager default & remove LegagyTaskManager by @axel7083 #14875
- feat(api): add connectionType discriminators to ProviderConnectionInfo types by @sAchin-680 #14839
- feat: add GUI label to for managed-by preferences by @cdrage #14767
fix
- fix: allow to fetch extension from OCI registries with long segments by @benoitf #15191
- fix(renderer): remove default w-full on label by @axel7083 #15190
- fix(main): download-remote-extensions support tmp dir on different device than output by @axel7083 #15189
- fix(podman): see if podman is installed for default registries by @cdrage #15174
- fix(ci): always run testing-prerelease release job to allow logic inside by @odockal #15149
- fix: remove kubernetesReadNamespacedPod.error telemetry by @feloy #15139
- fix: env. var. CI should be tested when in lowercase due to powershel… by @odockal #15097
- fix: updated the network create icon by @bmahabirbu #15058
- fix(storybook): add text-base (12px) to html by @vancura #15057
- fix(renderer/Label): text overflow by @axel7083 #15055
- fix(renderer): use min-w and min-h for dimension in ProviderInfoCircle by @axel7083 #15054
- fix(types/ContainerGroupPartInfoUI): incorrect optional properties by @axel7083 #15023
- fix: fix lock file by @jeffmaury #14939
- fix(extension: docker): incorrect path for
@podman-desktop/apimock alias by @axel7083 #14899 - fix(gpu.md): update dnf commands and clarify GPU setup instructions by @rauldsl #14897
- fix: update labels for WSL and Hyper-V machines by @jeffmaury #14874
- fix: updated podman machine 5.7.0 manifest by @gastoner #14860
chore
- chore: store catalog extension url in product.json by @benoitf #15202
- chore(product): store telemetry key in product.json file by @benoitf #15200
- chore: mock env.appName for extension unit tests by @benoitf #15196
- chore: add usage of env.appName in extension by @benoitf #15194
- chore: updated reddit link in release.md by @rujutashinde #15184
- chore(maintainers): add simonrey1 by @simonrey1 #15162
- chore(main/extension-loader): ensure path exist before readdir by @axel7083 #15158
- chore: add matt to maintainers by @Firewall #15157
- chore(deps): update mdast-util-to-hast to v13.2.1 by @benoitf #15156
- chore(ci): delete the tag and release of testing-builds if on of the … by @odockal #15145
- chore: add network create to navigation.ts and update route by @bmahabirbu #15137
- chore: use product.name rather than Podman Desktop by @benoitf #15110
- chore: include product.json in the final assembly by @benoitf #15109
- chore(ci): disallow daily testing build on forks by @odockal #15101
- chore(deps): bump node-forge from v1.3.1 to v1.3.2 by @benoitf #15099
- chore: extract constants to product.json by @benoitf #15095
- chore(e2e): add github token to podman installation steps by @danivilla9 #15066
- chore(deps): update js-yaml 3.14.1 to v3.14.2 by @benoitf #15039
- chore: moved searchbar out of experimental by @gastoner #15038
- chore(deps): switch to tmp v0.2.5 by @benoitf #15022
- chore(deps): update on-headers to a non-cve version by @benoitf #15020
- chore(deps): upgrade js-yaml to a non-cve version by @benoitf #15019
- chore(deps): update glob to a non-CVE version by @benoitf #15018
- chore(colors): add the neutral Tailwind color palette by @vancura #15015
- chore: update LFX badges in README.md by @benoitf #14998
- chore(guidelines): add example difference between waitFor and waitUntil by @simonrey1 #14992
- chore(main/inversify): add ipcHandle to injectables by @simonrey1 #14979
- chore(main/image build): allow passing target when building image by @simonrey1 #14970
- chore(website): added id for the community events section by @rujutashinde #14958
- chore: populate global mock of the extension API by @benoitf #14938
- chore: add task issue template by @deboer-tim #14918
- chore: use static delta when downloading flathub freeplatform sdk by @benoitf #14909
- chore(deps): bump vitest to v4 by @axel7083 #14898
- chore: remove enhancement template by @deboer-tim #14896
- chore: updated release.md file by @gastoner #14873
- chore: add github issue types to templates by @deboer-tim #14818
- chore: added release notes for 1.23 by @gastoner #14817
- chore: enable async keyword usage in svelte by @benoitf #14584
docs
- docs(settings): update to say %USERPROFILE% not %APPDATA% by @cdrage #15205
- docs(managed-by): elaborate more on managed-by config settings by @cdrage #15199
- docs(code-guideline): do not use code in Svelte templates by @feloy #15116
- docs: add information regarding registries.defaults by @cdrage #15075
- docs: add managed-by GUI label information by @cdrage #15070
- docs(blog): added boost your performance with search bar blog post by @gastoner #14746
- docs: add documentation for managed-by config and settings config by @cdrage #14367
- docs: added a procedure to import Kubernetes contexts by @shipsing #14104
test
- chore(test): push manifest to auth registry by @cbr7 #15159
- chore(test): enabling test suite on linux by @cbr7 #15108
- chore(test): refactoring podman machine onboarding test suite by @cbr7 #15102
- chore(test): extend tasks-page with new functionality by @ScrewTSW #15088
- chore(test): some refactoring of test framework and adding a new test by @cbr7 #15082
- test(extension/podman): check telemetry sent when error on check disguised podman Mac by @simonrey1 #15053
- chore(test): initial set of e2e tests for networks page by @cbr7 #15045
- test(VolumesList): try to stabilize by @simonrey1 #15031
- chore(test): wait for podman machine running state before finishing by @cbr7 #15026
- chore(test): remove unnecessary scrolling which is causing flakyness by @cbr7 #15013
- chore(test): waiting for element attachment to DOM by @cbr7 #14994
- test(renderer/VolumesList): try to stabilize test by @simonrey1 #14993
- chore(test): some refactoring for delete podman machine by @cbr7 #14988
- chore(test): use koji repo for latest Podman and run e2e tests on Fedora 43 by @amisskii #14978
- test(e2e): swap external extensions for internal ones by @danivilla9 #14975
- test(stability): replace waitFor with waitUntil when boolean by @simonrey1 #14974
- test(renderer/ImageList): avoid error logs in test by @simonrey1 #14969
- chore(test): fixing some flakyness issues by @cbr7 #14967
- test(ContainerList): try to stabilize test in ContainerList by @simonrey1 #14941
- test(renderer): reuse existing mock for window.showMessageBox by @simonrey1 #14940
- chore(test): updating hyper-V naming in test framework by @cbr7 #14937
- test(ContainerList): try to stabilize test in ContainerList by @simonrey1 #14923
- test(renderer/KubePlayYAML): try to address flakiness by @axel7083 #14919
- test(renderer/ContainerList): use waitFor syntax & reduce timeout for performance by @simonrey1 #14895
- test(renderer): faster debounce stores every 10 ms in test if not specified by @simonrey1 #14894
- chore(test): increase timeout for better cicd handling by @cbr7 #14868
refactor
- refactor(package: main): use object for analyzeExtension function parameters by @axel7083 #15142
- refactor(extension: podman): move calcWinPipeName function to WinPlatform class by @simonrey1 #15068
- refactor(color-registry): update color registration logic by @vancura #15050
- refactor(renderer/Label): migrate to Svelte5 by @axel7083 #15029
- refactor: do not call a method when iterating elements, ensure it's computed before by @benoitf #15025
- refactor(renderer): factorise environment columns by @axel7083 #15024
- refactor(extension/podman): update test condition by @benoitf #14991
- refactor(extension: podman): move createProvider logic to a dedicated class by @axel7083 #14977
- refactor(extension: podman): use vitest v4 syntax in podman-machine-stream.spec.ts by @axel7083 #14954
- refactor(extension-registries): reuse global mock for @podman-desktop/api by @benoitf #14952
- refactor(extension-podman-docker-context): reuse global mock for @podman-desktop/api by @benoitf #14951
- refactor(extension-kubectl-cli): reuse global mock for @podman-desktop/api by @benoitf #14949
- refactor(extension-docker): reuse global mock for @podman-desktop/api by @benoitf #14948
- refactor(extension-kind): reuse global mock for @podman-desktop/api by @benoitf #14947
- refactor(extension-podman): reuse global mock for @podman-desktop/api by @benoitf #14946
- refactor(extension-compose): reuse global mock for @podman-desktop/api by @benoitf #14943
- refactor(github-workflow): use a single workflow to publish to npmjs by @benoitf #14920
- refactor(main/proxy-system.spec.ts): use vitest v4 compatible syntax by @axel7083 #14917
- refactor(main/filesystem-monitoring.spec.ts): use vitest v4 compatible syntax by @axel7083 #14916
- refactor(main/devtools-manager.spec.ts): use vitest v4 compatible syntax by @axel7083 #14915
- refactor(main/kubernetes): use vitest v4 compatible syntax by @axel7083 #14914
- refactor(main/extension-installer.spec.ts): use vitest v4 compatible syntax by @axel7083 #14913
- refactor(package: renderer): use vitest v4 compatible syntax by @axel7083 #14912
- refactor(package: preload-webview): use vitest v4 compatible syntax by @axel7083 #14908
- refactor(extension: podman): use vitest v4 compatible syntax by @axel7083 #14903
- refactor(extension: kubectl-cli): use vitest v4 compatible syntax by @axel7083 #14902
- refactor(extension: kind): use vitest v4 compatible syntax by @axel7083 #14901
- refactor(extension: compose): use vitest v4 compatible syntax by @axel7083 #14900
- refactor(extension: podman): caching mechanism for
podman --versionby @axel7083 #14757




























