Skip to main content

Podman Desktop 1.18 Release

Β· 17 min read
Sonia Sandler
Associate Software Engineer

Podman Desktop 1.18 Release! πŸŽ‰

podman-desktop-hero-1.18

Podman Desktop 1.18 is now available! Click here to download it!

This release brings exciting new features and improvements:

  • Refining the Docker Compatibility feature: The Docker Compatibility page has been moved out of experimental mode, and now it helps you fully set up Podman even when installed through brew. It also detects and notifies you when Podman can't bind the Docker socket.
  • Switching Kubernetes namespace: Switching between Kubernetes namespaces within Podman Desktop is now available.
  • Jobs in Kubernetes: You can now see Kubernetes jobs in our growing Kubernetes section of Podman Desktop.
  • Experimental status bar providers enhancements: Status bar providers can be pinned and unpinned based on user preferences and the provider status icons have been updated to be easier to understand.

Release Details​

Docker Compatibilty mode page is out of experimental mode πŸŽ‰β€‹

The experimental Docker Compatibility page that was introduced in v1.13 has been moved out of experimental mode. Now everything related to Docker compatibility can be found in one place. In addition, new Docker compatibility related notifications have been added to make the set up process easier and less guesswork when running into problems.

Docker Compatibilty podman mac helper notificationDocker Compatibilty podman mac helper notification Docker Compatibilty docker socket notificationDocker Compatibilty docker socket notification

Switching Kubernetes namepaces​

Until now, only switching Kubernetes contexts was supported in Podman Desktop. With this update, you can now switch between namespaces from within Podman Desktop without having to do anything outside the app. The selection does not modify your Kube config and is persistent across the app, so if you select a specific namespace in one place, it will be used everywhere else in Podman Desktop.

Kubernetes namespacesKubernetes namespaces

Kubernetes Jobs​

As part of our ongoing Kubernetes improvement and enhancement efforts, a new tab has been added for Kubernetes Jobs. You can now view the jobs, all in one place, with details page for each one, and have the ability to delete and view condition statuses.

Kubernetes Jobs listKubernetes Jobs list Kubernetes Job detailsKubernetes Job details

Experimental status bar providers enhancements​

The experimental status bar providers that were introduced in v1.16 have undergone some changes to make them easier to understand and use.

The new provider status icons include:

  • white dot - running
  • red dot - error
  • up arrow - update available
  • spinning circle - stopping or starting
  • darker icon - stopped

In addition, you can now choose which available providers to show by pinning or unpinning them from the status bar:

Status bar providersStatus bar providers

If you have any feedback or thoughts about our experimental features (or any aspect of Podman Desktop at all), feel free to let us know in the relevant experimental feature github discussion, which can be accessed from the experimental tab in the settings page, or by clicking on the comment icon in the lower right side of Podman Desktop and filling out the feedback form.

Additional changes​

Breaking change

As part of the migration to svelte 5, breaking changes were introduced in the DetailsPage and FormPage components of the @podman-desktop/ui-svelte package v1.18.0.

Please use {#snippet <snippet-name>()} instead of slots in those components

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 new people:

  • @j-bs made their first contribution in #11456 docs(website): use consistent order in OS tab groups
  • @chkpnt made their first contribution in #10975 fix: handling of proxy bypass values from system under macOS
  • @AlexonOliveiraRH made their first contribution in #11710 docs: adding an instruction to enable ip_tables
  • @Virakal made their first contribution in #11792 fix(docs): docker export syntax
  • @fabienengels made their first contribution in #12106 docs: add EOST as adopters

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​

Chores βœ…β€‹

  • chore: update release procedure by @benoitf #12192
  • chore: add error indication to statusbar provider by @SoniaSandler #12191
  • chore: exclude one rule for CLOMonitor by @benoitf #12169
  • chore: add badges for CNCF tooling by @benoitf #12158
  • chore: add scorecard by @benoitf #12147
  • chore: website - update footer cncf logo and spacing by @cdrage #12142
  • chore: bump lint memory by @deboer-tim #12140
  • chore: add security insights file by @benoitf #12138
  • chore: website - update font weight and div width by @cdrage #12117
  • chore: website - update download links by @cdrage #12115
  • chore: improve provider widget icons by @SoniaSandler #12112
  • chore(vitest): remove unused files by @axel7083 #12110
  • chore: allow more permissive data in test by @benoitf #12100
  • chore: add missing dispose method in TerminalWindow by @benoitf #12099
  • chore: update estree-util-value-to-estree to v3.3.3 by @benoitf #12085
  • chore: update image-size to 1.2.1 by @benoitf #12084
  • chore(package.json): build should include build:preload:types by @axel7083 #12059
  • chore: Use isUnixLike() instead of isLinux() in some places by @arrowd #12047
  • chore: migrate close button to svelte 5 by @deboer-tim #12043
  • chore: type FetchError removed from library by @feloy #12042
  • chore: enable svelte/require-each-key rule by @SoniaSandler #12041
  • chore: update to podman 5.4.2 by @feloy #12006
  • chore(website): modified community meeting link in the banner and docs by @rujutashinde #11996
  • chore: expose VmProviderConnection and VmProviderConnectionFactory in extension-api by @SoniaSandler #11982
  • chore(dockerode): bump to 3.3.37 by @axel7083 #11979
  • chore: support for changing namespace in experimental mode by @deboer-tim #11964
  • chore: migrate status icon to svelte 5 by @deboer-tim #11961
  • chore: add aria roles and labels into troubleshooting pages by @odockal #11960
  • chore(deps-dev): update eslint-plugin-svelte to v3.5.0 by @benoitf #11959
  • chore: use lcov reporter locally by @feloy #11951
  • chore: retry up to 3 times a failed unit test by @benoitf #11947
  • chore: added dialog for showing manual installation steps on windows by @gastoner #11946
  • chore: add update info to Kind provider by @SoniaSandler #11936
  • chore: migrate provider button onclick by @deboer-tim #11934
  • chore: migrate modal slot to snippet by @deboer-tim #11932
  • chore: migrate tab to svelte 5 by @deboer-tim #11929
  • chore: replace lcov by json output for coverage by @benoitf #11902
  • chore: props interface by @deboer-tim #11901
  • chore: add alert for mac podman socket failures by @cdrage #11892
  • chore: add setup podman-mac-helper to dashboard by @cdrage #11890
  • chore: troubleshooting page improvements - aria by @odockal #11888
  • chore: remove @typescript-eslint/no-explicit-any usage by @jeffmaury #11883
  • chore(refactor): migrate Modal component to Svelte5 by @jeffmaury #11881
  • chore: update ui package icons to svelte 5 by @deboer-tim #11869
  • chore(task-popup): added disapearing task popups by @gastoner #11867
  • chore: update ErrorMessage component to svelte 5 by @SoniaSandler #11866
  • chore: remove old docker compatibility code by @cdrage #11861
  • chore: remove traces by @benoitf #11853
  • chore(Carousel): migrate component to svelte v5 by @benoitf #11852
  • chore: allow optional dock property by @benoitf #11850
  • chore: enable svelte/require-each-key rule - part 5 - image by @SoniaSandler #11840
  • chore(configuration-impl): remove usage of any by @benoitf #11837
  • chore: make dropdown left control clickable by @deboer-tim #11835
  • chore: enable svelte/require-each-key rule - part 4 by @SoniaSandler #11834
  • chore: updated tsconfig and fixed typecheck by @gastoner #11832
  • chore: migrated link component to svelte5 by @gastoner #11830
  • chore: add left snippet to dropdown by @deboer-tim #11810
  • chore(storybook): adding Table with children story by @axel7083 #11808
  • chore(config-registry): remove usage of any by @benoitf #11807
  • chore: enable svelte/require-each-key rule - part 3 by @SoniaSandler #11795
  • chore: enable svelte/require-each-key rule - part 2 - kube and ingresses-routes by @SoniaSandler #11794
  • chore: enable svelte/require-each-key rule- part 1 by @SoniaSandler #11793
  • chore: fix alignment and make provider widget consistent by @deboer-tim #11781
  • chore: clone kubeconfig instead of re-reading from disk by @deboer-tim #11779
  • chore: api to change kubernetes namespace by @deboer-tim #11753
  • chore: enable svelte/require-store-reactive-access rule by @cdrage #11726
  • chore: kind extension - use configuration name when deploying ingress by @cdrage #11722
  • chore: move docker compatibility out of experimental by @SoniaSandler #11708
  • chore: revert #11340 by @axel7083 #11699
  • chore(dependabot): grouping typedoc deps update by @axel7083 #11692
  • chore: Introduce the FreeBSDInfo class into sys-info by @arrowd #11676
  • chore: remove docker compatibility warning from dashboard by @cdrage #11675
  • chore: prepare compatibility with kubernetes-client v1.1.0 by @feloy #11668
  • chore: add jobs name for merge queue by @benoitf #11661
  • chore: handle merge_group event as well for pr-check GH action by @benoitf #11659
  • chore: use latest pnpm v10 by @benoitf #11656
  • chore: refresh dependencies (pnpm upgrade) by @benoitf #11655
  • chore: update to podman 5.4.1 by @feloy #11653
  • chore: update babel dependencies from 7.26.0 to 7.26.10 by @benoitf #11652
  • chore: add merge-group option for PR check by @benoitf #11646
  • chore: update jsonpath-plus by @benoitf #11644
  • chore: update axios by @benoitf #11643
  • chore: update prismjs by @benoitf #11642
  • chore: avoid error saying that we use a variable before its assignment by @benoitf #11641
  • chore: enable svelte/no-immutable-reactive-statements by @feloy #11624
  • chore: prefer nullish coalescing by @benoitf #11621
  • chore: fix nullish coaelescing by @benoitf #11620
  • chore: change the import by @benoitf #11619
  • chore: change the way json files are imported by @benoitf #11618
  • chore: add community meeting banner, remove AI lab banner by @cdrage #11610
  • chore: format unformatted files by @benoitf #11609
  • chore: fix svelte/infinite-reactive-loop by @benoitf #11607
  • chore: use Node.js v22 for website by @benoitf #11606
  • chore(deps-dev): bump electron from 34.3.0 to 35.0.1 and to Node.js v22 by @benoitf #11603
  • chore: refactor spyOn by @benoitf #11601
  • chore: fix nullish coalescing by @benoitf #11600
  • chore: remove any usage by @benoitf #11599
  • chore(code-guidelines): testing style attribute by @axel7083 #11567
  • chore: indicate in provider widget if update is available by @SoniaSandler #11556
  • chore: removed no reactive reassign eslint rule by @gastoner #11549
  • chore: add eyebrows for 1.17 release banner by @cdrage #11548
  • chore(settings): change navigation appearance to icon plus title by default by @axel7083 #11544
  • chore: move terminal service to kubernetes by @deboer-tim #11520
  • chore: clean up PodInfoUI kind by @deboer-tim #11519
  • chore: remove unused kube paths from pods page by @deboer-tim #11516
  • chore: remove unused pod terminal tab by @deboer-tim #11500
  • chore: pods name column cleanup by @deboer-tim #11499
  • chore(deps-dev): bump eslint-plugin-svelte from 2.46.1 to 3.0.2 by @jeffmaury #11497
  • chore: added permission listener for kubernetes permissions by @gastoner #11492
  • chore: remove no-explicit-any from docker extension svelte by @cdrage #11481
  • chore: remove no-explicit-any deployments by @cdrage #11479
  • chore: remove no-explicit-any from lib/dashboard by @cdrage #11478
  • chore: reduce default gap in expandable by @deboer-tim #11475
  • chore: remove explicit-any from config map empty screen by @cdrage #11435
  • chore: remove pod kubernetes actions by @deboer-tim #11410
  • chore(podman): module property missing in tsconfig by @axel7083 #11361
  • chore: remove podman pod kubernetes navigation by @deboer-tim #11352
  • chore(electron): enable web security by @axel7083 #11340
  • chore: remove no-explicit-any from lib/appearance by @cdrage #11282
  • chore: remove no-explicit-any from lib/actions by @cdrage #11278
  • chore: remove @typescript-eslint/no-explicit-any usage by @jeffmaury #10998

Tests πŸš¦β€‹

  • chore(test): parametrize timeout by @cbr7 #12171
  • chore(test): make traces and video deletion configurable by @cbr7 #12134
  • chore(test): add check for error when editting images by @cbr7 #12128
  • fix(tests): fix the heading locator for extensions page by @odockal #12101
  • test(ui): adding svelte legacy usage for button by @axel7083 #12076
  • chore(test): refactor waiters for navigationbar by @cbr7 #12065
  • chore(test): wait for screen by @cbr7 #12057
  • chore(test): switch to polling assert for robustness by @cbr7 #12038
  • chore(test): handle exception thrown from race condition by @cbr7 #12033
  • test: add e2e test for Kind cluster deployment with custom config by @amisskii #12010
  • chore(test): increase timeout to avoid race condition by @cbr7 #11958
  • chore(test): add terminal validation checks by @cbr7 #11955
  • chore(test): fix k8s e2e tests by @amisskii #11928
  • chore(test): add methods to check image badges by @cbr7 #11897
  • chore(test): add troubleshooting pom and smoke e2e test by @odockal #11891
  • test(ui/table): ensuring row with children are covered by @axel7083 #11886
  • test: refactor tests for preload/src/index.ts by @feloy #11828
  • test: e2e test for k8s CronJob resource page by @amisskii #11812
  • chore(test): increase timeout of assertions by @cbr7 #11788
  • test(e2e): added number of expected objects in stress test's case names by @danivilla9 #11768
  • test: k8s ingress e2e test by @amisskii #11752
  • test: new cli e2e tests by @cbr7 #11750
  • chore(test): Docker compatibility e2e test for Windows by @xbabalov #11721
  • chore(test): parametrize strict matching by @cbr7 #11629
  • chore(test): fix k8s e2e tests by @amisskii #11628
  • chore(test): remove obsolete method by @cbr7 #11617
  • test: k8s services e2e test by @amisskii #11604
  • chore(test): extract port-forwarding operations to a dedicated utility file by @amisskii #11588
  • fix(tests): svelte 5.22.5 by @axel7083 #11568
  • chore(tests): enhance pushing image to kind method by @xbabalov #11494
  • chore(test): add push image e2e test by @cbr7 #11433
  • chore(test): skip kind tests that run on rootless mode machines by @danivilla9 #11388
  • test: add E2E test for image manifests by @amisskii #11186

Docs πŸ“–β€‹

  • docs: add more Readme badges by @benoitf #12166
  • docs: add entry for community meetings by @benoitf #12159
  • docs: add EOST as adopters by @fabienengels #12106
  • docs(website): corrected the file name in the troubleshooting doc by @shipsing #12073
  • docs(website): updated the Kubernetes section to reflect how to switc… by @shipsing #12009
  • docs(website): added extension related use cases with API references by @shipsing #11978
  • docs(website): adding a troubleshooting section in the doc by @shipsing #11950
  • docs(website): adding links for the published extensions in the doc by @shipsing #11945
  • docs(website): added details to publish a PD extension to the catalog by @shipsing #11893
  • docs(website): updated the kubernetes section based on latest changes… by @shipsing #11718
  • docs: adding an instruction to enable ip_tables by @AlexonOliveiraRH #11710
  • docs(website): added an uninstall section in the documentation by @shipsing #11689
  • docs: add more information to extend page by @cdrage #11673
  • docs(website): fixed formatting issues by @shipsing #11638
  • docs: update RHEL WSL blog for RHEL 10 by @jeffmaury #11625
  • docs: added demos,presentation and community meeting link to the community page by @rujutashinde #11554
  • docs(website): added a blog to configure a mirror registry by @shipsing #11542
  • docs(website): added a procedure to configure a mirror registry by @shipsing #11465
  • docs: queryBy vs getBy by @feloy #11446
  • docs(website): add blog post for 1.17 release by @benoitf #11431

ci πŸ”β€‹

  • ci: Harden GitHub Actions by @step-security-bot #12162
  • ci: Harden GitHub Actions by @step-security-bot #12160
  • ci: adjust codecov report by @benoitf #11770
  • ci: report unit tests coverage to codecov by @benoitf #11769

Feature πŸ’‘β€‹

  • feat: navigation api for manifests by @deboer-tim #12143
  • feat(vitest): configure workspace by @axel7083 #12111
  • feat(PinRegistry): adding telemetry events by @axel7083 #12088
  • feat(status-bar): pin-unpin providers by @axel7083 #11973
  • feat: vm provider details / terminal by @feloy #11948
  • feat: create VM provider frontend by @feloy #11924
  • feat: startProvider works for VM connections by @feloy #11880
  • feat: add VM provider lifecycle to frontend by @feloy #11863
  • feat(ProviderButton): adding left slot by @axel7083 #11862
  • feat: update start/stop/editProviderConnectionLifecycle for VM by @feloy #11839
  • feat: create vm provider connection (backend) by @feloy #11827
  • feat: add VM provider info to ProviderInfo structure by @feloy #11787
  • feat: implement setVmProviderConnectionFactory by @feloy #11777
  • feat(frontend): adding class props to provider widget by @axel7083 #11775
  • feat: add control to change the kubernetes namespace by @deboer-tim #11756
  • feat: register VM provider connection by @feloy #11755
  • feat(extensions/kind): update projectcontour to v1.30.2 by @Blaimi #11734
  • feat(pin-registry): expose pin / unpin / list to main world by @axel7083 #11701
  • feat: expose ListImagesOptions to main world by @axel7083 #11700
  • feat: represent not permitted resources in Kubernetes dashboard by @feloy #11639
  • feat: handle error when exec command not found by @feloy #11608
  • feat: display resources count in Kubernetes experimental mode by @feloy #11529
  • feat: Add Jobs to Kubernetes by @cdrage #11474
  • feat: use expandable for learning center by @deboer-tim #11470
  • feat: kubernetes experimental backend provides active resources count by @feloy #11467
  • feat(main): adding pin-registry for providers by @axel7083 #11422
  • feat: add the ability to auto scroll to provider from statusbar by @bmahabirbu #11420
  • feat: added visual indicator for kubernetes permissions by @gastoner #11307
  • feat: kube play build support by @axel7083 #10801
  • feat: add community page by @Firewall #10551

Fixes πŸ”¨β€‹

  • fix: image details navigation by @deboer-tim #12139
  • fix(Button): binding usage and event type by @axel7083 #12086
  • fix(ui): race condition in ImageDetailsCheck tests by @axel7083 #12077
  • fix: use intermediate ca store as well on Windows by @jeffmaury #12066
  • fix: updated configmap secret capitilization by @bmahabirbu #12048
  • fix: remove unnecessary assignment by @feloy #12036
  • fix: reset messageBox before sending result through callback by @jeffmaury #12008
  • fix(Table.svelte): children function usage by @axel7083 #11980
  • fix(PinRegistry): listeners and VM support by @axel7083 #11976
  • fix: tests on namespace dropdown by @feloy #11971
  • fix(ui): make Carousel generic by @axel7083 #11922
  • fix: no current context on Kubernetes dashboard by @feloy #11903
  • fix: do not forget to refresh context list after switching docker context by @benoitf #11898
  • fix: wait for kubeconfig change while creating kind cluster by @deboer-tim #11868
  • fix(dropdown): ensure onChange value are non-undefined by @axel7083 #11860
  • fix: name column alignment by @deboer-tim #11838
  • fix: add delete confirmation dialog for Kubernetes Ingress/Routes resources by @amisskii #11806
  • fix(storybook/expandable): enable rule no-useless-children-snippet and fix one violation by @dgolovin #11797
  • fix: update tooltip position for first provider in statusbar by @SoniaSandler #11796
  • fix(docs): docker export syntax by @Virakal #11792
  • fix(frontend): status bar order by @axel7083 #11773
  • fix: remove Kubernetes provider from map when disposed by @feloy #11767
  • fix(extensions/kind): use correct types in download.ts by @Blaimi #11733
  • fix: alignment in kubernetes name column by @deboer-tim #11732
  • fix: update minimal node types to v22 by @odockal #11730
  • fix: enabled svelte no-reactive rule and tested files by @bmahabirbu #11709
  • fix(tools): remove no-explicit-any generator.spec.ts by @axel7083 #11706
  • fix(preload-webview-spec): remove no-explicit-any by @axel7083 #11705
  • fix(preload-webview-index): remove no-explicit-any by @axel7083 #11704
  • fix(renderer): create container from existing with multiple connections by @axel7083 #11702
  • fix: do not declare informer offline on 404 error by @feloy #11674
  • fix: website sprint link by @benoitf #11663
  • fix: grant access to the containers directory for the flatpak build by @vzhukovs #11654
  • fix: removed compose /usr/local/bin in PATH check to align with kubectl by @bmahabirbu #11651
  • fix: do not use ResourceName for experimental kubernetes by @feloy #11616
  • fix: make labels in create new connection form resize properly and update form components width by @SoniaSandler #11532
  • fix: button focus outline by @deboer-tim #11483
  • fix: add back button cursor pointer by @deboer-tim #11471
  • fix: proper validation of input fields by @vzhukovs #11359
  • fix: handling of proxy bypass values from system under macOS by @chkpnt #10975