From 8b69ace3b6d32b07eb60004dc9db90315f75b657 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 10:54:38 +0000 Subject: [PATCH] deploy: fbe4d4dd13d6f337941167398ed4356d7cb766dd --- 404.html | 2 +- assets/js/006e489c.0820074d.js | 1 + assets/js/006e489c.aa213bf5.js | 1 - assets/js/021eaa84.0ad319ce.js | 1 + assets/js/021eaa84.eeb10f58.js | 1 - assets/js/1a16e8bf.87efea1b.js | 1 - assets/js/1a16e8bf.a6bac1ac.js | 1 + assets/js/1cfced13.094662f6.js | 1 - assets/js/1cfced13.778f5e2d.js | 1 + assets/js/4816649b.95e2cb49.js | 1 - assets/js/4816649b.99fd0ff4.js | 1 + assets/js/5628.4d1e89d2.js | 1 + assets/js/5628.bd9d7a73.js | 1 - assets/js/5df556a2.2b7e8a28.js | 1 - assets/js/5df556a2.d35f976a.js | 1 + assets/js/83245ae6.2268355e.js | 1 + assets/js/83245ae6.710bfde3.js | 1 - assets/js/97615df2.15020999.js | 1 - assets/js/97615df2.1f13aea9.js | 1 + assets/js/9f97f9d1.6f54242f.js | 1 + assets/js/9f97f9d1.a2b38731.js | 1 - assets/js/a00af9f0.aa516391.js | 1 + assets/js/a00af9f0.d9986f19.js | 1 - assets/js/f0e3a130.6dc4aaae.js | 1 - assets/js/f0e3a130.98f8b21a.js | 1 + assets/js/reactPlayerDailyMotion.3ed40b36.js | 155 +++++++ assets/js/reactPlayerDailyMotion.f8009a5e.js | 1 + assets/js/reactPlayerFacebook.1d5631d2.js | 1 + assets/js/reactPlayerFacebook.2652c8c4.js | 156 +++++++ assets/js/reactPlayerFilePlayer.b143422e.js | 385 ++++++++++++++++++ assets/js/reactPlayerFilePlayer.cac6ee27.js | 1 + assets/js/reactPlayerKaltura.45130f3f.js | 153 +++++++ assets/js/reactPlayerKaltura.59b3b0c6.js | 1 + assets/js/reactPlayerMixcloud.643d0896.js | 141 +++++++ assets/js/reactPlayerMixcloud.79c9fa66.js | 1 + assets/js/reactPlayerPreview.2267cb44.js | 1 + assets/js/reactPlayerPreview.bb38780d.js | 149 +++++++ assets/js/reactPlayerSoundCloud.b843d475.js | 1 + assets/js/reactPlayerSoundCloud.f5722153.js | 158 +++++++ assets/js/reactPlayerStreamable.353efec6.js | 1 + assets/js/reactPlayerStreamable.8d57960a.js | 151 +++++++ assets/js/reactPlayerTwitch.32269018.js | 1 + assets/js/reactPlayerTwitch.b5a39db7.js | 145 +++++++ assets/js/reactPlayerVidyard.9886dd59.js | 149 +++++++ assets/js/reactPlayerVidyard.aa75b509.js | 1 + assets/js/reactPlayerVimeo.43335252.js | 1 + assets/js/reactPlayerVimeo.afd0735a.js | 190 +++++++++ assets/js/reactPlayerWistia.7ac13b2f.js | 1 + assets/js/reactPlayerWistia.a6be884e.js | 165 ++++++++ assets/js/reactPlayerYouTube.0e0bb5ba.js | 235 +++++++++++ assets/js/reactPlayerYouTube.7c09aa1f.js | 1 + assets/js/runtime~main.702e5015.js | 1 - assets/js/runtime~main.c24bab17.js | 1 + blog.html | 2 +- blog/5-things-to-know-for-a-docker-user.html | 2 +- blog/archive.html | 2 +- blog/develop-using-devcontainer.html | 2 +- blog/podman-desktop-release-0.10.html | 2 +- blog/podman-desktop-release-0.11.html | 2 +- blog/podman-desktop-release-0.12.html | 2 +- blog/podman-desktop-release-0.13.html | 2 +- blog/podman-desktop-release-0.14.html | 2 +- blog/podman-desktop-release-0.15.html | 2 +- blog/podman-desktop-release-1.0.html | 2 +- blog/podman-desktop-release-1.1.html | 2 +- blog/podman-desktop-release-1.2.html | 2 +- blog/podman-desktop-release-1.3.html | 2 +- blog/podman-desktop-release-1.4.html | 2 +- blog/podman-desktop-release-1.5.html | 2 +- ...ubernetes-cluster-with-podman-desktop.html | 2 +- ...podman-images-with-kubernetes-cluster.html | 2 +- blog/tags.html | 2 +- blog/tags/codespaces.html | 2 +- blog/tags/compose.html | 2 +- blog/tags/devcontainer.html | 2 +- blog/tags/docker.html | 2 +- blog/tags/extensions.html | 2 +- blog/tags/images.html | 2 +- blog/tags/kind.html | 2 +- blog/tags/kubernetes.html | 2 +- blog/tags/migrating.html | 2 +- blog/tags/onboarding.html | 2 +- blog/tags/openshift.html | 2 +- blog/tags/podman-desktop.html | 2 +- blog/tags/podman.html | 2 +- blog/tags/release.html | 2 +- blog/tags/settings.html | 2 +- blog/tags/story.html | 2 +- core-values.html | 2 +- docs/compose.html | 2 +- docs/compose/running-compose.html | 2 +- docs/compose/setting-up-compose.html | 2 +- docs/containers.html | 2 +- docs/containers/creating-a-pod.html | 2 +- docs/containers/images.html | 2 +- docs/containers/images/building-an-image.html | 2 +- docs/containers/images/pulling-an-image.html | 2 +- .../pushing-an-image-to-a-registry.html | 2 +- docs/containers/onboarding.html | 2 +- docs/containers/registries.html | 2 +- ...nticating-to-a-preconfigured-registry.html | 2 +- .../registries/insecure-registry.html | 2 +- docs/containers/starting-a-container.html | 2 +- docs/extensions.html | 2 +- docs/extensions/install.html | 2 +- docs/extensions/publish.html | 2 +- docs/extensions/write.html | 2 +- .../extensions/write/onboarding-workflow.html | 2 +- .../extensions/write/when-clause-context.html | 2 +- docs/installation.html | 2 +- docs/installation/linux-install.html | 2 +- ...an-desktop-from-a-compressed-tar-file.html | 2 +- ...-podman-desktop-from-a-flatpak-bundle.html | 2 +- docs/installation/macos-install.html | 2 +- docs/installation/windows-install.html | 2 +- ...nd-podman-in-a-restricted-environment.html | 2 +- ...p-silently-with-the-windows-installer.html | 2 +- ...alling-podman-desktop-with-chocolatey.html | 2 +- .../installing-podman-desktop-with-scoop.html | 2 +- ...installing-podman-desktop-with-winget.html | 2 +- docs/intro.html | 2 +- docs/kind.html | 2 +- ...lding-an-image-and-testing-it-in-kind.html | 2 +- ...onfiguring-podman-for-kind-on-windows.html | 2 +- docs/kind/creating-a-kind-cluster.html | 2 +- docs/kind/deleting-your-kind-cluster.html | 2 +- docs/kind/installing.html | 2 +- docs/kind/pushing-an-image-to-kind.html | 2 +- docs/kind/restarting-your-kind-cluster.html | 2 +- .../working-with-your-local-kind-cluster.html | 2 +- docs/kubernetes.html | 2 +- .../deploying-a-container-to-kubernetes.html | 2 +- .../deploying-a-pod-to-kubernetes.html | 2 +- docs/kubernetes/existing-kubernetes.html | 2 +- .../kind/pushing-an-image-to-kind.html | 2 +- ...t-kubernete-context-in-the-status-bar.html | 2 +- ...d-selecting-current-kubernete-context.html | 2 +- docs/lima.html | 2 +- docs/lima/creating-a-kubernetes-instance.html | 2 +- docs/lima/creating-a-lima-instance.html | 2 +- docs/lima/customizing.html | 2 +- docs/lima/installing.html | 2 +- docs/migrating-from-docker.html | 2 +- .../emulating-docker-cli-with-podman.html | 2 +- .../importing-saved-containers.html | 2 +- .../using-podman-mac-helper.html | 2 +- ...-the-docker_host-environment-variable.html | 2 +- ...verifying-your-tools-are-using-podman.html | 2 +- docs/minikube.html | 2 +- ...g-an-image-and-testing-it-in-minikube.html | 2 +- ...guring-podman-for-minikube-on-windows.html | 2 +- .../minikube/creating-a-minikube-cluster.html | 2 +- .../deleting-your-minikube-cluster.html | 2 +- docs/minikube/installing.html | 2 +- .../pushing-an-image-to-minikube.html | 2 +- .../restarting-your-minikube-cluster.html | 2 +- ...king-with-your-local-minikube-cluster.html | 2 +- docs/openshift.html | 2 +- docs/openshift/developer-sandbox.html | 2 +- docs/openshift/openshift-local.html | 2 +- docs/podman.html | 2 +- docs/podman/creating-a-podman-machine.html | 2 +- ...odman-with-openshift-local-on-windows.html | 2 +- docs/podman/installing.html | 2 +- ...ing-podman-machine-default-connection.html | 2 +- docs/proxy.html | 2 +- .../using-a-proxy-in-your-containers.html | 2 +- docs/proxy/using-a-proxy-on-linux.html | 2 +- .../using-a-proxy-requiring-a-custom-ca.html | 2 +- docs/proxy/using-a-proxy.html | 2 +- docs/proxy/using-a-vpn-on-windows.html | 2 +- docs/tags.html | 2 +- docs/tags/chocolatey.html | 2 +- docs/tags/compose.html | 2 +- docs/tags/containers.html | 2 +- docs/tags/docker.html | 2 +- docs/tags/extension.html | 2 +- docs/tags/flathub.html | 2 +- docs/tags/flatpak.html | 2 +- docs/tags/images.html | 2 +- docs/tags/installing.html | 2 +- docs/tags/kind.html | 2 +- docs/tags/kubernetes.html | 2 +- docs/tags/lima.html | 2 +- docs/tags/linux.html | 2 +- docs/tags/mac-0-s.html | 2 +- docs/tags/mac-os.html | 2 +- docs/tags/macos.html | 2 +- docs/tags/migrating-from-docker.html | 2 +- docs/tags/migrating-to-kubernetes.html | 2 +- docs/tags/minikube.html | 2 +- docs/tags/onboarding.html | 2 +- docs/tags/openshift-local.html | 2 +- docs/tags/openshift.html | 2 +- docs/tags/podman-desktop.html | 2 +- docs/tags/podman.html | 2 +- docs/tags/pods.html | 2 +- docs/tags/proxy.html | 2 +- docs/tags/publishing.html | 2 +- docs/tags/registries.html | 2 +- docs/tags/restricted-environment.html | 2 +- docs/tags/scoop.html | 2 +- docs/tags/vpn.html | 2 +- docs/tags/when-clause.html | 2 +- docs/tags/windows.html | 2 +- docs/tags/winget.html | 2 +- docs/tags/writing.html | 2 +- docs/troubleshooting.html | 2 +- .../troubleshooting-openshift-local.html | 2 +- .../troubleshooting-podman-on-linux.html | 2 +- .../troubleshooting-podman-on-macos.html | 2 +- .../troubleshooting-podman-on-windows.html | 2 +- .../troubleshooting-podman.html | 2 +- downloads.html | 2 +- downloads/linux.html | 2 +- downloads/macos.html | 2 +- downloads/windows.html | 2 +- extend.html | 2 +- features.html | 2 +- index.html | 2 +- search.html | 2 +- 221 files changed, 2527 insertions(+), 182 deletions(-) create mode 100644 assets/js/006e489c.0820074d.js delete mode 100644 assets/js/006e489c.aa213bf5.js create mode 100644 assets/js/021eaa84.0ad319ce.js delete mode 100644 assets/js/021eaa84.eeb10f58.js delete mode 100644 assets/js/1a16e8bf.87efea1b.js create mode 100644 assets/js/1a16e8bf.a6bac1ac.js delete mode 100644 assets/js/1cfced13.094662f6.js create mode 100644 assets/js/1cfced13.778f5e2d.js delete mode 100644 assets/js/4816649b.95e2cb49.js create mode 100644 assets/js/4816649b.99fd0ff4.js create mode 100644 assets/js/5628.4d1e89d2.js delete mode 100644 assets/js/5628.bd9d7a73.js delete mode 100644 assets/js/5df556a2.2b7e8a28.js create mode 100644 assets/js/5df556a2.d35f976a.js create mode 100644 assets/js/83245ae6.2268355e.js delete mode 100644 assets/js/83245ae6.710bfde3.js delete mode 100644 assets/js/97615df2.15020999.js create mode 100644 assets/js/97615df2.1f13aea9.js create mode 100644 assets/js/9f97f9d1.6f54242f.js delete mode 100644 assets/js/9f97f9d1.a2b38731.js create mode 100644 assets/js/a00af9f0.aa516391.js delete mode 100644 assets/js/a00af9f0.d9986f19.js delete mode 100644 assets/js/f0e3a130.6dc4aaae.js create mode 100644 assets/js/f0e3a130.98f8b21a.js create mode 100644 assets/js/reactPlayerDailyMotion.3ed40b36.js create mode 100644 assets/js/reactPlayerDailyMotion.f8009a5e.js create mode 100644 assets/js/reactPlayerFacebook.1d5631d2.js create mode 100644 assets/js/reactPlayerFacebook.2652c8c4.js create mode 100644 assets/js/reactPlayerFilePlayer.b143422e.js create mode 100644 assets/js/reactPlayerFilePlayer.cac6ee27.js create mode 100644 assets/js/reactPlayerKaltura.45130f3f.js create mode 100644 assets/js/reactPlayerKaltura.59b3b0c6.js create mode 100644 assets/js/reactPlayerMixcloud.643d0896.js create mode 100644 assets/js/reactPlayerMixcloud.79c9fa66.js create mode 100644 assets/js/reactPlayerPreview.2267cb44.js create mode 100644 assets/js/reactPlayerPreview.bb38780d.js create mode 100644 assets/js/reactPlayerSoundCloud.b843d475.js create mode 100644 assets/js/reactPlayerSoundCloud.f5722153.js create mode 100644 assets/js/reactPlayerStreamable.353efec6.js create mode 100644 assets/js/reactPlayerStreamable.8d57960a.js create mode 100644 assets/js/reactPlayerTwitch.32269018.js create mode 100644 assets/js/reactPlayerTwitch.b5a39db7.js create mode 100644 assets/js/reactPlayerVidyard.9886dd59.js create mode 100644 assets/js/reactPlayerVidyard.aa75b509.js create mode 100644 assets/js/reactPlayerVimeo.43335252.js create mode 100644 assets/js/reactPlayerVimeo.afd0735a.js create mode 100644 assets/js/reactPlayerWistia.7ac13b2f.js create mode 100644 assets/js/reactPlayerWistia.a6be884e.js create mode 100644 assets/js/reactPlayerYouTube.0e0bb5ba.js create mode 100644 assets/js/reactPlayerYouTube.7c09aa1f.js delete mode 100644 assets/js/runtime~main.702e5015.js create mode 100644 assets/js/runtime~main.c24bab17.js diff --git a/404.html b/404.html index f9b94d181db..8cb726815f5 100644 --- a/404.html +++ b/404.html @@ -13,7 +13,7 @@ - +
diff --git a/assets/js/006e489c.0820074d.js b/assets/js/006e489c.0820074d.js new file mode 100644 index 00000000000..0c5f9c94d81 --- /dev/null +++ b/assets/js/006e489c.0820074d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8145],{11956:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>r,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var t=s(24246),o=s(71670),i=s(92975),a=s.n(i);const l={title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",slug:"podman-desktop-release-0.13",authors:["deboer"],tags:["podman-desktop","release","kubernetes","compose"],hide_table_of_contents:!1},r=void 0,d={permalink:"/blog/podman-desktop-release-0.13",source:"@site/blog/2023-03-29-release-0.13.md",title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",date:"2023-03-29T00:00:00.000Z",formattedDate:"March 29, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"compose",permalink:"/blog/tags/compose"}],readingTime:3.155,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",slug:"podman-desktop-release-0.13",authors:["deboer"],tags:["podman-desktop","release","kubernetes","compose"],hide_table_of_contents:!1},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 0.14",permalink:"/blog/podman-desktop-release-0.14"},nextItem:{title:"5 things to know about Podman Desktop for a Docker user",permalink:"/blog/5-things-to-know-for-a-docker-user"}},h={authorsImageUrls:[void 0]},c=[{value:"Release details",id:"release-details",level:2},{value:"Update to Podman v4.4.4",id:"update-to-podman-v444",level:3},{value:"Compose support",id:"compose-support",level:3},{value:"Extensions",id:"extensions",level:3},{value:"UI and UX improvements",id:"ui-and-ux-improvements",level:3},{value:"Welcome page #1726",id:"welcome-page-1726",level:4},{value:"New Task Manager #1724",id:"new-task-manager-1724",level:4},{value:"Updated Resources Settings #1582",id:"updated-resources-settings-1582",level:4},{value:"Update Alerts #1827",id:"update-alerts-1827",level:4},{value:"Prune buttons #1481, #1482, #1484",id:"prune-buttons-1481-1482-1484",level:4},{value:"Other notable enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Community thank you",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components},{Icon:i}=n;return i||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"This release note covers Podman Desktop 0.13 release changes."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman Version"}),": Podman 4.4.4 now included in Windows and Mac installers."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Compose"}),": Support for installing Docker Compose."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extensions"}),": Improved extension support for Podman Desktop with additional capabilities."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": Welcome page, task manager, resources, and update alerts."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.13 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-0-13-hero",src:s(75771).Z+"",width:"1852",height:"1323"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release details"}),"\n",(0,t.jsx)(n.h3,{id:"update-to-podman-v444",children:"Update to Podman v4.4.4"}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.13 embeds ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases/tag/v4.4.4",children:"Podman 4.4.4"})," in\nWindows and macOS installers ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1456",children:"#1456"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"compose-support",children:"Compose support"}),"\n",(0,t.jsxs)(n.p,{children:["You can install Docker Compose from the Podman Desktop UI ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1578",children:"#1578"}),". This will allow you use Compose workflows using Podman."]}),"\n",(0,t.jsx)(n.h3,{id:"extensions",children:"Extensions"}),"\n",(0,t.jsx)(n.p,{children:"To make it easier to extend Podman Desktop we have:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Published the ",(0,t.jsx)(n.a,{href:"https://www.npmjs.com/package/@podman-desktop/api",children:"Podman Desktop Extension API"})," to npmjs ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1727",children:"#1727"})]}),"\n",(0,t.jsxs)(n.li,{children:["Documented ",(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/extensions",children:"how to create, publish, and install your own extensions"})]}),"\n",(0,t.jsxs)(n.li,{children:["Expanded the API for ",(0,t.jsx)(n.code,{children:"QuickPickInput"})," ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1839",children:"#1839"})]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"ui-and-ux-improvements",children:"UI and UX improvements"}),"\n",(0,t.jsxs)(n.h4,{id:"welcome-page-1726",children:["Welcome page ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1726",children:"#1726"})]}),"\n",(0,t.jsx)(n.p,{children:"The first time every user starts Podman Desktop, they will see a welcome page:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/225682776-e016ba31-5bb9-41d5-87ed-f93caeb3fb84.png",alt:"welcome-page"})}),"\n",(0,t.jsx)(n.p,{children:"Note that the Welcome page will only appear the first time you run Podman Desktop 0.13.0, and none of your settings or assets in Podman Desktop will be affected by it.\nOver time, this page will be expanded to help with initial setup and configuration."}),"\n",(0,t.jsxs)(n.h4,{id:"new-task-manager-1724",children:["New Task Manager ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1724",children:"#1724"})]}),"\n",(0,t.jsxs)(n.p,{children:["A new Task Manager has been added to the status bar to see the progress (or return to) long running tasks. To start with, building images ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1725",children:"#1725"})," and Podman machine ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1742",children:"#1742"})," are using the task manager."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"task-manager",src:s(9184).Z+"",width:"2082",height:"1198"})}),"\n",(0,t.jsxs)(n.h4,{id:"updated-resources-settings-1582",children:["Updated Resources Settings ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1582",children:"#1582"})]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(i,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]})," page has been updated with a new design, making it easier to see and control your providers from a single place."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/221908815-595715fe-4c95-4087-89e0-45e5544ed5c9.gif",alt:"resources"})}),"\n",(0,t.jsx)(n.p,{children:"The other settings pages have been updated for consistency with this new design."}),"\n",(0,t.jsxs)(n.h4,{id:"update-alerts-1827",children:["Update Alerts ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1827",children:"#1827"})]}),"\n",(0,t.jsx)(n.p,{children:"A new alert button will appear in the status bar when future updates are available."}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/227596136-c6123d5c-d9ae-4fb3-a569-0cfaaeebf09c.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.h4,{id:"prune-buttons-1481-1482-1484",children:["Prune buttons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1481",children:"#1481"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1482",children:"#1482"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1484",children:"#1484"})]}),"\n",(0,t.jsxs)(n.p,{children:["We've added buttons to prune unused volumes ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1481",children:"#1481"}),", images ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1482",children:"#1482"})," and pods ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1484",children:"#1484"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"prune-image",src:s(66557).Z+"",width:"2074",height:"570"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other notable enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Kubernetes pods are now shown in the Pods view ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1312",children:"#1312"})]}),"\n",(0,t.jsxs)(n.li,{children:["Easy button to fix Docker compatibility mode on macOS ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1697",children:"#1697"})]}),"\n",(0,t.jsxs)(n.li,{children:["Display extension icons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1058",children:"#1058"})]}),"\n",(0,t.jsxs)(n.li,{children:["API to cancel long running tasks ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1777",children:"#1777"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"documentation",children:"Documentation"}),"\n",(0,t.jsx)(n.p,{children:"The documentation has new content:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/extensions",children:"How to create, publish, and install your own Podman Desktop extensions"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/compose/podman-compose",children:"Using Compose"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/kind",children:"Restarting Kind"})}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable bug fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Periodically check and refresh Podman connection on Windows and Mac ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1662",children:"#1662"})]}),"\n",(0,t.jsxs)(n.li,{children:["Fix inconsistent Log view behaviour ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1710",children:"#1710"})]}),"\n",(0,t.jsxs)(n.li,{children:["Don't create route for regular Kubernetes clusters ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1707",children:"#1707"})]}),"\n",(0,t.jsxs)(n.li,{children:["Fix copy button on empty screen ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1804",children:"#1804"})]}),"\n",(0,t.jsxs)(n.li,{children:["Register extension tray items correctly ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1778",children:"#1778"})," and handle updates ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1800",children:"#1800"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community thank you"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.13 even better:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/Tony-Sol",children:(0,t.jsx)(n.code,{children:"Tony Soloveyv"})})," in ",(0,t.jsxs)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1605",children:["#1605 - Fix directories inconsistency in ",(0,t.jsx)(n.code,{children:"~/.local/share/"})]})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/RobotSail",children:(0,t.jsx)(n.code,{children:"Oleg"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1567",children:"#1567 - Check for Flatpak when calling command from exec"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/cblecker",children:(0,t.jsx)(n.code,{children:"Christoph Blecker"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1556",children:"#1556 - Fix: Hide dock icon on macOS if starting minimized"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/pwright",children:(0,t.jsx)(n.code,{children:"Paul Wright"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1604",children:"#1604 - Docs: correct syntax of kind doc"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/dgolovin",children:(0,t.jsx)(n.code,{children:"Denis Golovin"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1790",children:"#1790 - Feat: add EventEmitter class to extension API"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/cfergeau",children:(0,t.jsx)(n.code,{children:"Christophe Fergeau"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1642",children:'#1642 - Fix: Pod list "an pod" typing error'})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.13.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},75771:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-0.13-a15251500e13ad05b8a7b404ab301f34.png"},66557:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/prune-image-96f9366ae264c822b47bfc350d987451.png"},9184:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/task-manager-2c9725a8db209c3607e83a24d9ea1582.png"}}]); \ No newline at end of file diff --git a/assets/js/006e489c.aa213bf5.js b/assets/js/006e489c.aa213bf5.js deleted file mode 100644 index da59ba83977..00000000000 --- a/assets/js/006e489c.aa213bf5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8145],{11956:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>r,toc:()=>h});var t=s(24246),o=s(71670),i=s(92975);const a={title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",slug:"podman-desktop-release-0.13",authors:["deboer"],tags:["podman-desktop","release","kubernetes","compose"],hide_table_of_contents:!1},l=void 0,r={permalink:"/blog/podman-desktop-release-0.13",source:"@site/blog/2023-03-29-release-0.13.md",title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",date:"2023-03-29T00:00:00.000Z",formattedDate:"March 29, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"compose",permalink:"/blog/tags/compose"}],readingTime:3.155,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 0.13",description:"Podman Desktop 0.13 has been released!",slug:"podman-desktop-release-0.13",authors:["deboer"],tags:["podman-desktop","release","kubernetes","compose"],hide_table_of_contents:!1},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 0.14",permalink:"/blog/podman-desktop-release-0.14"},nextItem:{title:"5 things to know about Podman Desktop for a Docker user",permalink:"/blog/5-things-to-know-for-a-docker-user"}},d={authorsImageUrls:[void 0]},h=[{value:"Release details",id:"release-details",level:2},{value:"Update to Podman v4.4.4",id:"update-to-podman-v444",level:3},{value:"Compose support",id:"compose-support",level:3},{value:"Extensions",id:"extensions",level:3},{value:"UI and UX improvements",id:"ui-and-ux-improvements",level:3},{value:"Welcome page #1726",id:"welcome-page-1726",level:4},{value:"New Task Manager #1724",id:"new-task-manager-1724",level:4},{value:"Updated Resources Settings #1582",id:"updated-resources-settings-1582",level:4},{value:"Update Alerts #1827",id:"update-alerts-1827",level:4},{value:"Prune buttons #1481, #1482, #1484",id:"prune-buttons-1481-1482-1484",level:4},{value:"Other notable enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Community thank you",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components},{Icon:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"This release note covers Podman Desktop 0.13 release changes."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman Version"}),": Podman 4.4.4 now included in Windows and Mac installers."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Compose"}),": Support for installing Docker Compose."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extensions"}),": Improved extension support for Podman Desktop with additional capabilities."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": Welcome page, task manager, resources, and update alerts."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.13 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-0-13-hero",src:s(75771).Z+"",width:"1852",height:"1323"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release details"}),"\n",(0,t.jsx)(n.h3,{id:"update-to-podman-v444",children:"Update to Podman v4.4.4"}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.13 embeds ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases/tag/v4.4.4",children:"Podman 4.4.4"})," in\nWindows and macOS installers ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1456",children:"#1456"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"compose-support",children:"Compose support"}),"\n",(0,t.jsxs)(n.p,{children:["You can install Docker Compose from the Podman Desktop UI ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1578",children:"#1578"}),". This will allow you use Compose workflows using Podman."]}),"\n",(0,t.jsx)(n.h3,{id:"extensions",children:"Extensions"}),"\n",(0,t.jsx)(n.p,{children:"To make it easier to extend Podman Desktop we have:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Published the ",(0,t.jsx)(n.a,{href:"https://www.npmjs.com/package/@podman-desktop/api",children:"Podman Desktop Extension API"})," to npmjs ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1727",children:"#1727"})]}),"\n",(0,t.jsxs)(n.li,{children:["Documented ",(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/extensions",children:"how to create, publish, and install your own extensions"})]}),"\n",(0,t.jsxs)(n.li,{children:["Expanded the API for ",(0,t.jsx)(n.code,{children:"QuickPickInput"})," ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1839",children:"#1839"})]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"ui-and-ux-improvements",children:"UI and UX improvements"}),"\n",(0,t.jsxs)(n.h4,{id:"welcome-page-1726",children:["Welcome page ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1726",children:"#1726"})]}),"\n",(0,t.jsx)(n.p,{children:"The first time every user starts Podman Desktop, they will see a welcome page:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/225682776-e016ba31-5bb9-41d5-87ed-f93caeb3fb84.png",alt:"welcome-page"})}),"\n",(0,t.jsx)(n.p,{children:"Note that the Welcome page will only appear the first time you run Podman Desktop 0.13.0, and none of your settings or assets in Podman Desktop will be affected by it.\nOver time, this page will be expanded to help with initial setup and configuration."}),"\n",(0,t.jsxs)(n.h4,{id:"new-task-manager-1724",children:["New Task Manager ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1724",children:"#1724"})]}),"\n",(0,t.jsxs)(n.p,{children:["A new Task Manager has been added to the status bar to see the progress (or return to) long running tasks. To start with, building images ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1725",children:"#1725"})," and Podman machine ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1742",children:"#1742"})," are using the task manager."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"task-manager",src:s(9184).Z+"",width:"2082",height:"1198"})}),"\n",(0,t.jsxs)(n.h4,{id:"updated-resources-settings-1582",children:["Updated Resources Settings ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1582",children:"#1582"})]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]})," page has been updated with a new design, making it easier to see and control your providers from a single place."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/221908815-595715fe-4c95-4087-89e0-45e5544ed5c9.gif",alt:"resources"})}),"\n",(0,t.jsx)(n.p,{children:"The other settings pages have been updated for consistency with this new design."}),"\n",(0,t.jsxs)(n.h4,{id:"update-alerts-1827",children:["Update Alerts ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1827",children:"#1827"})]}),"\n",(0,t.jsx)(n.p,{children:"A new alert button will appear in the status bar when future updates are available."}),"\n",(0,t.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/227596136-c6123d5c-d9ae-4fb3-a569-0cfaaeebf09c.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.h4,{id:"prune-buttons-1481-1482-1484",children:["Prune buttons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1481",children:"#1481"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1482",children:"#1482"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1484",children:"#1484"})]}),"\n",(0,t.jsxs)(n.p,{children:["We've added buttons to prune unused volumes ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1481",children:"#1481"}),", images ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1482",children:"#1482"})," and pods ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1484",children:"#1484"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"prune-image",src:s(66557).Z+"",width:"2074",height:"570"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other notable enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Kubernetes pods are now shown in the Pods view ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1312",children:"#1312"})]}),"\n",(0,t.jsxs)(n.li,{children:["Easy button to fix Docker compatibility mode on macOS ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1697",children:"#1697"})]}),"\n",(0,t.jsxs)(n.li,{children:["Display extension icons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1058",children:"#1058"})]}),"\n",(0,t.jsxs)(n.li,{children:["API to cancel long running tasks ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1777",children:"#1777"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"documentation",children:"Documentation"}),"\n",(0,t.jsx)(n.p,{children:"The documentation has new content:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/extensions",children:"How to create, publish, and install your own Podman Desktop extensions"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/compose/podman-compose",children:"Using Compose"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/kind",children:"Restarting Kind"})}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable bug fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Periodically check and refresh Podman connection on Windows and Mac ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1662",children:"#1662"})]}),"\n",(0,t.jsxs)(n.li,{children:["Fix inconsistent Log view behaviour ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1710",children:"#1710"})]}),"\n",(0,t.jsxs)(n.li,{children:["Don't create route for regular Kubernetes clusters ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1707",children:"#1707"})]}),"\n",(0,t.jsxs)(n.li,{children:["Fix copy button on empty screen ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1804",children:"#1804"})]}),"\n",(0,t.jsxs)(n.li,{children:["Register extension tray items correctly ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1778",children:"#1778"})," and handle updates ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1800",children:"#1800"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community thank you"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.13 even better:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/Tony-Sol",children:(0,t.jsx)(n.code,{children:"Tony Soloveyv"})})," in ",(0,t.jsxs)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1605",children:["#1605 - Fix directories inconsistency in ",(0,t.jsx)(n.code,{children:"~/.local/share/"})]})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/RobotSail",children:(0,t.jsx)(n.code,{children:"Oleg"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1567",children:"#1567 - Check for Flatpak when calling command from exec"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/cblecker",children:(0,t.jsx)(n.code,{children:"Christoph Blecker"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1556",children:"#1556 - Fix: Hide dock icon on macOS if starting minimized"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/pwright",children:(0,t.jsx)(n.code,{children:"Paul Wright"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1604",children:"#1604 - Docs: correct syntax of kind doc"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/dgolovin",children:(0,t.jsx)(n.code,{children:"Denis Golovin"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1790",children:"#1790 - Feat: add EventEmitter class to extension API"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/cfergeau",children:(0,t.jsx)(n.code,{children:"Christophe Fergeau"})})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1642",children:'#1642 - Fix: Pod list "an pod" typing error'})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.13.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},75771:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-0.13-a15251500e13ad05b8a7b404ab301f34.png"},66557:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/prune-image-96f9366ae264c822b47bfc350d987451.png"},9184:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/task-manager-2c9725a8db209c3607e83a24d9ea1582.png"}}]); \ No newline at end of file diff --git a/assets/js/021eaa84.0ad319ce.js b/assets/js/021eaa84.0ad319ce.js new file mode 100644 index 00000000000..b5ab7c72472 --- /dev/null +++ b/assets/js/021eaa84.0ad319ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7875],{61708:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var t=s(24246),i=s(71670),o=s(92975),a=s.n(o);const r={title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},l=void 0,d={permalink:"/blog/podman-desktop-release-1.5",source:"@site/blog/2023-11-03-release-1.5.md",title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",date:"2023-11-03T00:00:00.000Z",formattedDate:"November 3, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"},{label:"onboarding",permalink:"/blog/tags/onboarding"},{label:"compose",permalink:"/blog/tags/compose"},{label:"extensions",permalink:"/blog/tags/extensions"},{label:"settings",permalink:"/blog/tags/settings"}],readingTime:8.14,hasTruncateMarker:!1,authors:[{name:"M\xe1ir\xedn Duffy",title:"User Experience Designer",url:"https://github.com/mairin",imageURL:"https://github.com/mairin.png",key:"duffy"}],frontMatter:{title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},unlisted:!1,prevItem:{title:"Share your local podman images with the Kubernetes cluster",permalink:"/blog/sharing-podman-images-with-kubernetes-cluster"},nextItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"}},h={authorsImageUrls:[void 0]},c=[{value:"Release Details",id:"release-details",level:2},{value:"Onboarding",id:"onboarding",level:3},{value:"Command Palette",id:"command-palette",level:3},{value:"Expanded "Summary" tab for Kubernetes pods",id:"expanded-summary-tab-for-kubernetes-pods",level:3},{value:"Environment file support",id:"environment-file-support",level:3},{value:"Enhancements to the Settings area",id:"enhancements-to-the-settings-area",level:3},{value:"Improved user experience for state changes",id:"improved-user-experience-for-state-changes",level:3},{value:"Extension API improvements",id:"extension-api-improvements",level:3},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2},{value:"Known Issues",id:"known-issues",level:3},{value:"Known Issues: Podman Desktop 1.5.2",id:"known-issues-podman-desktop-152",level:4},{value:"Fixed Issues",id:"fixed-issues",level:3},{value:"Where to Download",id:"where-to-download",level:3}];function p(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:o}=n;return o||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.5 Release! \ud83c\udf89"}),"\n",(0,t.jsxs)(n.p,{children:["With this release of Podman Desktop, we're introducing ",(0,t.jsx)(n.strong,{children:"a new onboarding feature"})," that we hope will earn your \ud83e\uddad seal of approval! But wait... there's so much more!"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Onboarding"}),": Guided setup and configuration of ",(0,t.jsx)(n.strong,{children:"Podman"})," and ",(0,t.jsx)(n.strong,{children:"Compose"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.7.2"}),": ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases",children:"Podman 4.7.2"})," is now included in Windows and Mac installers"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Command Palette"}),": Gain easy access to various commands via a new keyboard-driven command palette"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:'Expanded "Summary" tab for Kubernetes pods'}),': Go deep with extended details on Kubernetes pods in the pod "Summary" tab']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Environment file support"}),": Chart out environment variables for new containers to access on creation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enhancements to the Settings area"}),": Get your bearings with improved Docker compatibility mode controls"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Improved user experience for state changes"}),": No more dead reckoning on container state with improved visual indication of status"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extension API improvements"}),": A boatload of improvements to the extension API enabling more goodness from \ud83e\uddad Podman Desktop's extensions"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.5 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-5-hero",src:s(90973).Z+"",width:"1920",height:"1080"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"onboarding",children:"Onboarding"}),"\n",(0,t.jsx)(n.p,{children:"We are introducing a new feature providing guided flows for the initial setup of specific \ud83e\uddad Podman Desktop extensions. Release 1.5 features two new onboarding flows: Podman and Compose."}),"\n",(0,t.jsxs)(n.p,{children:['To start the Podman onboarding flow, you can start from the dashboard notification by clicking the "Set up" button:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280362279-598cc052-5ea4-4c31-849c-da9bbbcc3e42.png",alt:"podman-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280363859-f35b85f8-1dd4-4b7f-a995-25fe5d1ccced.png",alt:"podman-onboarding"})]}),"\n",(0,t.jsxs)(n.p,{children:["Visit ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Resources"]}),' screen and click the Compose "Setup ..." button in order to start Compose onboarding:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280276847-ca0558ab-70ad-48cc-8dd5-67e3eb465a62.png",alt:"compose-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280277936-77ba0fb2-5cb0-41de-a7cf-1a3d6400fd89.png",alt:"compose-onboarding"})]}),"\n",(0,t.jsx)(n.h3,{id:"command-palette",children:"Command Palette"}),"\n",(0,t.jsxs)(n.p,{children:["A new, search-driven command palette is now available to enable quick access to various commands available across \ud83e\uddad Podman Desktop. You can try this new tool out by hitting the F1 key. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4081",children:"#4081"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3979",children:"#3979"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/270362431-5aaa6a1b-6df5-4b66-a811-cdd148d02ad6.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"expanded-summary-tab-for-kubernetes-pods",children:'Expanded "Summary" tab for Kubernetes pods'}),"\n",(0,t.jsx)(n.p,{children:'Kubernetes pods now offer a more comprehensive set of information under the "Summary" tab, including networking, volumes, environment variables, and other key metadata.'}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/272972815-bed96f3a-6b13-45d3-a13b-74eacb27a4cd.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"environment-file-support",children:"Environment file support"}),"\n",(0,t.jsxs)(n.p,{children:["When creating a container from the Images list, there's now an option to provide an environment file to set env variables for the new container. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4026",children:"#4026"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4025",children:"#4025"})]}),"\n",(0,t.jsx)(n.h3,{id:"enhancements-to-the-settings-area",children:"Enhancements to the Settings area"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience for enabling or disabling Docker compatibility is improved, with a new entry in the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screen that includes contextual guidance. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4093",children:"#4093"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/270497318-902b2566-62ad-4ee6-87af-6a9a2705de99.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"improved-user-experience-for-state-changes",children:"Improved user experience for state changes"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience around state changes for containers, pods, and other objects in the UI is improved, with clear status messages and improved animated visual indicator of state changes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4056",children:"#4056"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027524-f5176cf9-462f-4024-920a-b4a906c7d30d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027533-70e152ec-5bbf-45ad-9f1d-563752464655.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"extension-api-improvements",children:"Extension API improvements"}),"\n",(0,t.jsx)(n.p,{children:"The \ud83e\uddad Podman Desktop extension API received many improvements, including:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In addition to pushing and listing image from an extension, it's now possible to pull images from a \ud83e\uddad Podman Desktop extension ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4155",children:"#4155"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The \ud83e\uddad Podman Desktop extension API has been enhanced with both the ability to list images & networks and the ability to create containers & networks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4172",children:"#4172"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["\ud83e\uddad Podman Desktop extensions now have a consistent way to run administrative tasks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4049",children:"#4049"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions now have the ability to register a custom Kubernetes config generator. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The ability of extensions to add commands to UI menus has been extended; previously for action menus it was only available in the Image list screen. It is now possible for extensions to add commands to the action menus of items listed on the Containers list screen as well. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947"})," & ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions have gained the ability to contribute menu items in the UI based on specific conditions. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enhanced logic for displaying or hiding properties listed under the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screens is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4159",children:"#4159"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/271650937-3991565c-12a4-4e6c-a315-9343bfa25f65.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The progress of loading an image into Kind is now visible as a task in the task manager. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/42176370/270154775-eb7007b4-fd0e-4287-be9e-40ffc412de35.png",alt:"kind-progress-task"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["It's now possible to start a new Podman machine right after creation, or you can create it and wait to start it later. It's up to you! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4046",children:"#4046"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/269941187-f4768833-ecfc-4d0b-8acf-d4afedb428d9.png",alt:"podman-start-now-or-later"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The Podman machine and Kubernetes provider creation forms have an updated look & feel consisted with other forms in the user interface, along with minor bug fixes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4317",children:"#4317"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/274694157-fe89f3bc-e5b8-4735-96e9-669fe52c7a41.png",alt:"Updated provider creation forms"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The empty screen message shown when a search filter results in no matches now provides a message specific to filter matching, including the specific filter terms and an explicit button for clearing the filter. Previously, the screen displayed a generic message about how to create new objects of the type displayed on the screen, which led to some confusion about the status of the system. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3988",children:"#3988"})]}),"\n"]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/269291090-13e724f7-252f-4915-bb04-00665001d21d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["New support for adding spin animations to icons is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4188",children:"#4188"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["There is a new indeterminate progress bar type available for the task manager; this is meant for providing limited status for actions whose APIs do not provide detailed status information. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["For authenticating as admin to perform administrative tasks, \ud83e\uddad Podman Desktop now provides touchID support for macOS. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4050",children:"#4050"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/436777/248588015-f08115bd-d211-43ad-bddd-286d7b3a7056.png",alt:"touchID-support"})}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/269859758-47581e2b-8469-4e9c-822c-f4fddf46684d.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Support for connecting to interactive terminals for containers via tty was added. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3900",children:"#3900"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["It's now more clear which container/pod providers will autostart when \ud83e\uddad Podman Desktop starts. Previously autostart had both a global and a per-provider setting. It has been simplified by removing the global setting. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3840",children:"#3840"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "Working with containers" section of the documentation has been reworked and improved. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3951",children:"#3951"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The disable registry command was not blocking subsequent pulls from disabled registries. This has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4183",children:"#4183"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Some users behind network proxies were unable to complete workflow involving the download of online resources. The mechanism for fetching these resources has been fixed to be proxy compatible to address this issue. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3994",children:"#3994"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The status of pods running in Kubernetes that are undergoing the deletion process is now accurately reflected in the \ud83e\uddad Podman Desktop UI. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3877",children:"#3877"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The image details page always listed the image as being "not used" even when it was. This has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3985",children:"#3985"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Previously, deleting a specific image tag would cause all tags with the same Image ID to be deleted. This has been fixed so only the selected image tag will be deleted. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3837",children:"#3837"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Could not view the pod details for some remote Kubernetes cluster pods due to an encoding error. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4371",children:"#4371"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Error logs were being tracked separately from the actions they applied to. This has been addressed for kind cluster creation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4427",children:"#4427"})," and Compose installation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4407",children:"#4407"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['For Linux users, \ud83e\uddad Podman Desktop previously did not appear under the "Development" menu when installed via Flatpak; it appeared under "Utilities." \ud83e\uddad Podman Desktop now appears under the "Development" menu. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3911",children:"#3911"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['Podman Machine names are no longer prefixed with the "Podman Machine" string. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3878",children:"#3878"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/267378447-aafdfbd7-f005-4b94-8626-9e11eec61b95.png",alt:"touchID-support"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The initial action state of pods and containers was being displayed as "STARTING" regardless of actual state; this has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3889",children:"#3889"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Resizing the application window no longer makes the last lines of a container's terminal invisible. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3993",children:"#3993"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An issue with incorrect terminal behavior in response to long lines in the terminal attached to a container has been resolved. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3955",children:"#3955"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["A spacing issue on the run image form has been corrected. [#4089]",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4089",children:"https://github.com/containers/podman-desktop/pull/4089"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "podify" icon & button on the Containers list was unusually large in release 1.4. That regression has been corrected in this release. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4122",children:"#4122"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An error in the instructions for Windows users on migrating from Docker has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make \ud83e\uddad Podman Desktop even better. In this\nrelease we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"afbjorklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4373",children:"#4373 - docs: fix broken links and add lima onboarding"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4372",children:"#4372 - docs: clear up lima column on containers page"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4091",children:"#4091 - fix: avoid errors with unexpected JSON input"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4098",children:"#4098 - docs: Lima onboarding details"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3854",children:"#3854 - fix: check if machine init rootful flag supported"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/axel7083",children:"axel7083"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061 - feat: adding task progress for kind"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970 - feat: extension can register custom kube generator"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959 - feat: add when property to extensions menus"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016 - feat: indeterminate progress bar"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963 - fix: ContainerList propagating containers in ComposeActions and PodActions"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947 - feat: extend menus capabilities"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/ayushrakesh",children:"ayushrakesh"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4415#",children:"#4415 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/eltociear",children:"eltociear"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4194",children:"#4194 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/foxydevloper",children:"foxydeveloper"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157 - docs: Correct windows instructions for migrating from docker"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/harsh-solanki21",children:"harsh-solanki21"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4162",children:"#4162 - fix: Removed fullstop from summary"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/rahul0x00",children:"rahul0x00"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4240",children:"#4240 - fix typos in README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/shelar1423",children:"shelar1423"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4221",children:"#4221 - chore: document property setting in EXTENSIONS.md"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsx)(n.h3,{id:"known-issues",children:"Known Issues"}),"\n",(0,t.jsx)(n.p,{children:"We have a discussion board topic where we have posted known issues with this release. If you run into problems, please check this list before filing a bug - if we already have an issue open for it, it saves you the time and trouble of filing, and there may be a workaround posted in the issue."}),"\n",(0,t.jsx)(n.h4,{id:"known-issues-podman-desktop-152",children:(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/discussions/4635",children:"Known Issues: Podman Desktop 1.5.2"})}),"\n",(0,t.jsx)(n.h3,{id:"fixed-issues",children:"Fixed Issues"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.5.0",children:"here"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"where-to-download",children:"Where to Download"}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},90973:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/onboarding-selkies-3ddb7cb6ee2cf9abed002b01f63b1822.png"}}]); \ No newline at end of file diff --git a/assets/js/021eaa84.eeb10f58.js b/assets/js/021eaa84.eeb10f58.js deleted file mode 100644 index 91b355e66f1..00000000000 --- a/assets/js/021eaa84.eeb10f58.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7875],{61708:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>h});var t=s(24246),i=s(71670),o=s(92975);const a={title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},r=void 0,l={permalink:"/blog/podman-desktop-release-1.5",source:"@site/blog/2023-11-03-release-1.5.md",title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",date:"2023-11-03T00:00:00.000Z",formattedDate:"November 3, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"},{label:"onboarding",permalink:"/blog/tags/onboarding"},{label:"compose",permalink:"/blog/tags/compose"},{label:"extensions",permalink:"/blog/tags/extensions"},{label:"settings",permalink:"/blog/tags/settings"}],readingTime:8.14,hasTruncateMarker:!1,authors:[{name:"M\xe1ir\xedn Duffy",title:"User Experience Designer",url:"https://github.com/mairin",imageURL:"https://github.com/mairin.png",key:"duffy"}],frontMatter:{title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},unlisted:!1,prevItem:{title:"Share your local podman images with the Kubernetes cluster",permalink:"/blog/sharing-podman-images-with-kubernetes-cluster"},nextItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"}},d={authorsImageUrls:[void 0]},h=[{value:"Release Details",id:"release-details",level:2},{value:"Onboarding",id:"onboarding",level:3},{value:"Command Palette",id:"command-palette",level:3},{value:"Expanded "Summary" tab for Kubernetes pods",id:"expanded-summary-tab-for-kubernetes-pods",level:3},{value:"Environment file support",id:"environment-file-support",level:3},{value:"Enhancements to the Settings area",id:"enhancements-to-the-settings-area",level:3},{value:"Improved user experience for state changes",id:"improved-user-experience-for-state-changes",level:3},{value:"Extension API improvements",id:"extension-api-improvements",level:3},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2},{value:"Known Issues",id:"known-issues",level:3},{value:"Known Issues: Podman Desktop 1.5.2",id:"known-issues-podman-desktop-152",level:4},{value:"Fixed Issues",id:"fixed-issues",level:3},{value:"Where to Download",id:"where-to-download",level:3}];function c(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.5 Release! \ud83c\udf89"}),"\n",(0,t.jsxs)(n.p,{children:["With this release of Podman Desktop, we're introducing ",(0,t.jsx)(n.strong,{children:"a new onboarding feature"})," that we hope will earn your \ud83e\uddad seal of approval! But wait... there's so much more!"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Onboarding"}),": Guided setup and configuration of ",(0,t.jsx)(n.strong,{children:"Podman"})," and ",(0,t.jsx)(n.strong,{children:"Compose"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.7.2"}),": ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases",children:"Podman 4.7.2"})," is now included in Windows and Mac installers"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Command Palette"}),": Gain easy access to various commands via a new keyboard-driven command palette"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:'Expanded "Summary" tab for Kubernetes pods'}),': Go deep with extended details on Kubernetes pods in the pod "Summary" tab']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Environment file support"}),": Chart out environment variables for new containers to access on creation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enhancements to the Settings area"}),": Get your bearings with improved Docker compatibility mode controls"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Improved user experience for state changes"}),": No more dead reckoning on container state with improved visual indication of status"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extension API improvements"}),": A boatload of improvements to the extension API enabling more goodness from \ud83e\uddad Podman Desktop's extensions"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.5 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-5-hero",src:s(90973).Z+"",width:"1920",height:"1080"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"onboarding",children:"Onboarding"}),"\n",(0,t.jsx)(n.p,{children:"We are introducing a new feature providing guided flows for the initial setup of specific \ud83e\uddad Podman Desktop extensions. Release 1.5 features two new onboarding flows: Podman and Compose."}),"\n",(0,t.jsxs)(n.p,{children:['To start the Podman onboarding flow, you can start from the dashboard notification by clicking the "Set up" button:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280362279-598cc052-5ea4-4c31-849c-da9bbbcc3e42.png",alt:"podman-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280363859-f35b85f8-1dd4-4b7f-a995-25fe5d1ccced.png",alt:"podman-onboarding"})]}),"\n",(0,t.jsxs)(n.p,{children:["Visit ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Resources"]}),' screen and click the Compose "Setup ..." button in order to start Compose onboarding:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280276847-ca0558ab-70ad-48cc-8dd5-67e3eb465a62.png",alt:"compose-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280277936-77ba0fb2-5cb0-41de-a7cf-1a3d6400fd89.png",alt:"compose-onboarding"})]}),"\n",(0,t.jsx)(n.h3,{id:"command-palette",children:"Command Palette"}),"\n",(0,t.jsxs)(n.p,{children:["A new, search-driven command palette is now available to enable quick access to various commands available across \ud83e\uddad Podman Desktop. You can try this new tool out by hitting the F1 key. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4081",children:"#4081"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3979",children:"#3979"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/270362431-5aaa6a1b-6df5-4b66-a811-cdd148d02ad6.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"expanded-summary-tab-for-kubernetes-pods",children:'Expanded "Summary" tab for Kubernetes pods'}),"\n",(0,t.jsx)(n.p,{children:'Kubernetes pods now offer a more comprehensive set of information under the "Summary" tab, including networking, volumes, environment variables, and other key metadata.'}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/272972815-bed96f3a-6b13-45d3-a13b-74eacb27a4cd.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"environment-file-support",children:"Environment file support"}),"\n",(0,t.jsxs)(n.p,{children:["When creating a container from the Images list, there's now an option to provide an environment file to set env variables for the new container. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4026",children:"#4026"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4025",children:"#4025"})]}),"\n",(0,t.jsx)(n.h3,{id:"enhancements-to-the-settings-area",children:"Enhancements to the Settings area"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience for enabling or disabling Docker compatibility is improved, with a new entry in the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screen that includes contextual guidance. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4093",children:"#4093"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/270497318-902b2566-62ad-4ee6-87af-6a9a2705de99.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"improved-user-experience-for-state-changes",children:"Improved user experience for state changes"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience around state changes for containers, pods, and other objects in the UI is improved, with clear status messages and improved animated visual indicator of state changes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4056",children:"#4056"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027524-f5176cf9-462f-4024-920a-b4a906c7d30d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027533-70e152ec-5bbf-45ad-9f1d-563752464655.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"extension-api-improvements",children:"Extension API improvements"}),"\n",(0,t.jsx)(n.p,{children:"The \ud83e\uddad Podman Desktop extension API received many improvements, including:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In addition to pushing and listing image from an extension, it's now possible to pull images from a \ud83e\uddad Podman Desktop extension ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4155",children:"#4155"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The \ud83e\uddad Podman Desktop extension API has been enhanced with both the ability to list images & networks and the ability to create containers & networks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4172",children:"#4172"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["\ud83e\uddad Podman Desktop extensions now have a consistent way to run administrative tasks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4049",children:"#4049"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions now have the ability to register a custom Kubernetes config generator. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The ability of extensions to add commands to UI menus has been extended; previously for action menus it was only available in the Image list screen. It is now possible for extensions to add commands to the action menus of items listed on the Containers list screen as well. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947"})," & ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions have gained the ability to contribute menu items in the UI based on specific conditions. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enhanced logic for displaying or hiding properties listed under the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screens is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4159",children:"#4159"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/271650937-3991565c-12a4-4e6c-a315-9343bfa25f65.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The progress of loading an image into Kind is now visible as a task in the task manager. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/42176370/270154775-eb7007b4-fd0e-4287-be9e-40ffc412de35.png",alt:"kind-progress-task"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["It's now possible to start a new Podman machine right after creation, or you can create it and wait to start it later. It's up to you! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4046",children:"#4046"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/269941187-f4768833-ecfc-4d0b-8acf-d4afedb428d9.png",alt:"podman-start-now-or-later"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The Podman machine and Kubernetes provider creation forms have an updated look & feel consisted with other forms in the user interface, along with minor bug fixes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4317",children:"#4317"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/274694157-fe89f3bc-e5b8-4735-96e9-669fe52c7a41.png",alt:"Updated provider creation forms"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The empty screen message shown when a search filter results in no matches now provides a message specific to filter matching, including the specific filter terms and an explicit button for clearing the filter. Previously, the screen displayed a generic message about how to create new objects of the type displayed on the screen, which led to some confusion about the status of the system. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3988",children:"#3988"})]}),"\n"]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/269291090-13e724f7-252f-4915-bb04-00665001d21d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["New support for adding spin animations to icons is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4188",children:"#4188"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["There is a new indeterminate progress bar type available for the task manager; this is meant for providing limited status for actions whose APIs do not provide detailed status information. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["For authenticating as admin to perform administrative tasks, \ud83e\uddad Podman Desktop now provides touchID support for macOS. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4050",children:"#4050"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/436777/248588015-f08115bd-d211-43ad-bddd-286d7b3a7056.png",alt:"touchID-support"})}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/269859758-47581e2b-8469-4e9c-822c-f4fddf46684d.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Support for connecting to interactive terminals for containers via tty was added. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3900",children:"#3900"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["It's now more clear which container/pod providers will autostart when \ud83e\uddad Podman Desktop starts. Previously autostart had both a global and a per-provider setting. It has been simplified by removing the global setting. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3840",children:"#3840"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "Working with containers" section of the documentation has been reworked and improved. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3951",children:"#3951"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The disable registry command was not blocking subsequent pulls from disabled registries. This has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4183",children:"#4183"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Some users behind network proxies were unable to complete workflow involving the download of online resources. The mechanism for fetching these resources has been fixed to be proxy compatible to address this issue. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3994",children:"#3994"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The status of pods running in Kubernetes that are undergoing the deletion process is now accurately reflected in the \ud83e\uddad Podman Desktop UI. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3877",children:"#3877"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The image details page always listed the image as being "not used" even when it was. This has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3985",children:"#3985"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Previously, deleting a specific image tag would cause all tags with the same Image ID to be deleted. This has been fixed so only the selected image tag will be deleted. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3837",children:"#3837"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Could not view the pod details for some remote Kubernetes cluster pods due to an encoding error. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4371",children:"#4371"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Error logs were being tracked separately from the actions they applied to. This has been addressed for kind cluster creation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4427",children:"#4427"})," and Compose installation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4407",children:"#4407"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['For Linux users, \ud83e\uddad Podman Desktop previously did not appear under the "Development" menu when installed via Flatpak; it appeared under "Utilities." \ud83e\uddad Podman Desktop now appears under the "Development" menu. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3911",children:"#3911"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['Podman Machine names are no longer prefixed with the "Podman Machine" string. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3878",children:"#3878"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/267378447-aafdfbd7-f005-4b94-8626-9e11eec61b95.png",alt:"touchID-support"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The initial action state of pods and containers was being displayed as "STARTING" regardless of actual state; this has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3889",children:"#3889"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Resizing the application window no longer makes the last lines of a container's terminal invisible. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3993",children:"#3993"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An issue with incorrect terminal behavior in response to long lines in the terminal attached to a container has been resolved. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3955",children:"#3955"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["A spacing issue on the run image form has been corrected. [#4089]",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4089",children:"https://github.com/containers/podman-desktop/pull/4089"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "podify" icon & button on the Containers list was unusually large in release 1.4. That regression has been corrected in this release. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4122",children:"#4122"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An error in the instructions for Windows users on migrating from Docker has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make \ud83e\uddad Podman Desktop even better. In this\nrelease we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"afbjorklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4373",children:"#4373 - docs: fix broken links and add lima onboarding"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4372",children:"#4372 - docs: clear up lima column on containers page"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4091",children:"#4091 - fix: avoid errors with unexpected JSON input"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4098",children:"#4098 - docs: Lima onboarding details"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3854",children:"#3854 - fix: check if machine init rootful flag supported"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/axel7083",children:"axel7083"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061 - feat: adding task progress for kind"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970 - feat: extension can register custom kube generator"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959 - feat: add when property to extensions menus"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016 - feat: indeterminate progress bar"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963 - fix: ContainerList propagating containers in ComposeActions and PodActions"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947 - feat: extend menus capabilities"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/ayushrakesh",children:"ayushrakesh"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4415#",children:"#4415 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/eltociear",children:"eltociear"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4194",children:"#4194 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/foxydevloper",children:"foxydeveloper"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157 - docs: Correct windows instructions for migrating from docker"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/harsh-solanki21",children:"harsh-solanki21"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4162",children:"#4162 - fix: Removed fullstop from summary"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/rahul0x00",children:"rahul0x00"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4240",children:"#4240 - fix typos in README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/shelar1423",children:"shelar1423"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4221",children:"#4221 - chore: document property setting in EXTENSIONS.md"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsx)(n.h3,{id:"known-issues",children:"Known Issues"}),"\n",(0,t.jsx)(n.p,{children:"We have a discussion board topic where we have posted known issues with this release. If you run into problems, please check this list before filing a bug - if we already have an issue open for it, it saves you the time and trouble of filing, and there may be a workaround posted in the issue."}),"\n",(0,t.jsx)(n.h4,{id:"known-issues-podman-desktop-152",children:(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/discussions/4635",children:"Known Issues: Podman Desktop 1.5.2"})}),"\n",(0,t.jsx)(n.h3,{id:"fixed-issues",children:"Fixed Issues"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.5.0",children:"here"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"where-to-download",children:"Where to Download"}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function p(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},90973:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/onboarding-selkies-3ddb7cb6ee2cf9abed002b01f63b1822.png"}}]); \ No newline at end of file diff --git a/assets/js/1a16e8bf.87efea1b.js b/assets/js/1a16e8bf.87efea1b.js deleted file mode 100644 index e12ca3222c0..00000000000 --- a/assets/js/1a16e8bf.87efea1b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2079],{7792:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>a,metadata:()=>r,toc:()=>h});var t=s(24246),o=s(71670),i=s(92975);const a={title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",slug:"podman-desktop-release-1.1",authors:["deboer"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.1.webp"},l=void 0,r={permalink:"/blog/podman-desktop-release-1.1",source:"@site/blog/2023-06-08-release-1.1.md",title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:2.465,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",slug:"podman-desktop-release-1.1",authors:["deboer"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.1.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.2",permalink:"/blog/podman-desktop-release-1.2"},nextItem:{title:"Release Notes - Podman Desktop 1.0",permalink:"/blog/podman-desktop-release-1.0"}},d={authorsImageUrls:[void 0]},h=[{value:"Release Details",id:"release-details",level:2},{value:"Podman v4.5.1",id:"podman-v451",level:3},{value:"Extensions",id:"extensions",level:3},{value:"Lima Support",id:"lima-support",level:3},{value:"Other UI and UX Improvements",id:"other-ui-and-ux-improvements",level:3},{value:"New Loading Screen",id:"new-loading-screen",level:4},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function p(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components},{Icon:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.1 Release! \ud83c\udf89"}),"\n",(0,t.jsx)(n.p,{children:"This is primarily a bug-fix release to fix a few important issues, but we've managed to squeeze in a few enhancements\nalong the way."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.5.1"}),": Podman 4.5.1 now included in Windows and Mac installers."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extensions"}),": Update extensions from within Podman Desktop."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Lima Support"}),": Choose engine type and override its name from the settings."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": New loading screen."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.1 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-1-hero",src:s(24825).Z+"",width:"3958",height:"2308"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"podman-v451",children:"Podman v4.5.1"}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.1 moves up to ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases/tag/v4.5.1",children:"Podman 4.5.1"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"extensions",children:"Extensions"}),"\n",(0,t.jsxs)(n.p,{children:["Optional extensions will follow their own lifecycle and update independently from Podman Desktop. As of\nthis release you'll be able to see when there is an update available and install from within\nPodman Desktop ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2655",children:"#2655"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["We've also added options in ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," to\nautomatically check for and install extension updates."]}),"\n",(0,t.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/241246481-305d215f-2a5c-46e8-9cc3-ecd90a6bd2bc.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Update extensions",src:s(78687).Z+"",width:"1324",height:"364"})}),"\n",(0,t.jsx)(n.h3,{id:"lima-support",children:"Lima Support"}),"\n",(0,t.jsxs)(n.p,{children:["Thanks to contributor ",(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"Anders Bj\xf6rklund"}),", we have some improvements to the\nLima extension! In ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," you can select which\nengine type Lima runs on and override the instance name ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2674",children:"#2674"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/10364051/241755966-0a6a293b-b18e-4222-9c40-abd6c114d464.png",alt:"Lima preferences"})}),"\n",(0,t.jsx)(n.h3,{id:"other-ui-and-ux-improvements",children:"Other UI and UX Improvements"}),"\n",(0,t.jsx)(n.h4,{id:"new-loading-screen",children:"New Loading Screen"}),"\n",(0,t.jsxs)(n.p,{children:["We have a new loading screen, Podman Desktop style! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2743",children:"#2743"}),"."]}),"\n",(0,t.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/243706137-324b5870-f6a0-4bc1-ac91-e8b45c374c90.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Docker-compose can be installed system-wide ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2718",children:"#2718"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Show warning when creating a pod with two containers that use the same port ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2671",children:"#2671"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Display Kubernetes context name in pod label ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2634",children:"#2634"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Add Docker compatibility button using flatpak-spawn ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1925",children:"#1925"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Improve UI consistency of Pull Image page ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2604",children:"#2604"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Could not install extensions on Windows 10 ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2762",children:"#2762"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Could not use locally built images on Kubernetes ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2710",children:"#2710"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Dashboard still suggests update after installation ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2648",children:"#2648"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Could not Play Kubernetes YAML to Podman on Windows ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2594",children:"#2594"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Pod label wasn't always shown in list ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2614",children:"#2614"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Dashboard button state was resetting ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2584",children:"#2584"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Change checkbox style so they don't look like stop buttons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2723",children:"#2723"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better. In this\nsprint we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/fatelei",children:"wangxiaolei"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2602",children:"#2602 - Add meaningful tooltips to build, pull, prune buttons"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/AsciiWolf",children:"AsciiWolf"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2607",children:"#2607 - fix typing error in Flathub name"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2609",children:"#2609 - fix Flatpak install instructions"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"Anders Bj\xf6rklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2674",children:"#2674 - Select engine for Lima provider"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.1.0",children:"here"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.1.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function c(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},24825:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-1.1-44e0feeaa28730210c0fbecda0193b95.png"},78687:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/update-extensions-6b1ea25170c2f1b7608d8f5a887d902a.png"}}]); \ No newline at end of file diff --git a/assets/js/1a16e8bf.a6bac1ac.js b/assets/js/1a16e8bf.a6bac1ac.js new file mode 100644 index 00000000000..3ca23710052 --- /dev/null +++ b/assets/js/1a16e8bf.a6bac1ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2079],{7792:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>r,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var t=s(24246),o=s(71670),i=s(92975),a=s.n(i);const l={title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",slug:"podman-desktop-release-1.1",authors:["deboer"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.1.webp"},r=void 0,d={permalink:"/blog/podman-desktop-release-1.1",source:"@site/blog/2023-06-08-release-1.1.md",title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",date:"2023-06-08T00:00:00.000Z",formattedDate:"June 8, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:2.465,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 1.1",description:"Podman Desktop 1.1 has been released!",slug:"podman-desktop-release-1.1",authors:["deboer"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.1.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.2",permalink:"/blog/podman-desktop-release-1.2"},nextItem:{title:"Release Notes - Podman Desktop 1.0",permalink:"/blog/podman-desktop-release-1.0"}},h={authorsImageUrls:[void 0]},p=[{value:"Release Details",id:"release-details",level:2},{value:"Podman v4.5.1",id:"podman-v451",level:3},{value:"Extensions",id:"extensions",level:3},{value:"Lima Support",id:"lima-support",level:3},{value:"Other UI and UX Improvements",id:"other-ui-and-ux-improvements",level:3},{value:"New Loading Screen",id:"new-loading-screen",level:4},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function c(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components},{Icon:i}=n;return i||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.1 Release! \ud83c\udf89"}),"\n",(0,t.jsx)(n.p,{children:"This is primarily a bug-fix release to fix a few important issues, but we've managed to squeeze in a few enhancements\nalong the way."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.5.1"}),": Podman 4.5.1 now included in Windows and Mac installers."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extensions"}),": Update extensions from within Podman Desktop."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Lima Support"}),": Choose engine type and override its name from the settings."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": New loading screen."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.1 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-1-hero",src:s(24825).Z+"",width:"3958",height:"2308"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"podman-v451",children:"Podman v4.5.1"}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.1 moves up to ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases/tag/v4.5.1",children:"Podman 4.5.1"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"extensions",children:"Extensions"}),"\n",(0,t.jsxs)(n.p,{children:["Optional extensions will follow their own lifecycle and update independently from Podman Desktop. As of\nthis release you'll be able to see when there is an update available and install from within\nPodman Desktop ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2655",children:"#2655"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["We've also added options in ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(i,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," to\nautomatically check for and install extension updates."]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/241246481-305d215f-2a5c-46e8-9cc3-ecd90a6bd2bc.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Update extensions",src:s(78687).Z+"",width:"1324",height:"364"})}),"\n",(0,t.jsx)(n.h3,{id:"lima-support",children:"Lima Support"}),"\n",(0,t.jsxs)(n.p,{children:["Thanks to contributor ",(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"Anders Bj\xf6rklund"}),", we have some improvements to the\nLima extension! In ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(i,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," you can select which\nengine type Lima runs on and override the instance name ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2674",children:"#2674"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/10364051/241755966-0a6a293b-b18e-4222-9c40-abd6c114d464.png",alt:"Lima preferences"})}),"\n",(0,t.jsx)(n.h3,{id:"other-ui-and-ux-improvements",children:"Other UI and UX Improvements"}),"\n",(0,t.jsx)(n.h4,{id:"new-loading-screen",children:"New Loading Screen"}),"\n",(0,t.jsxs)(n.p,{children:["We have a new loading screen, Podman Desktop style! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2743",children:"#2743"}),"."]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/243706137-324b5870-f6a0-4bc1-ac91-e8b45c374c90.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Docker-compose can be installed system-wide ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2718",children:"#2718"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Show warning when creating a pod with two containers that use the same port ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2671",children:"#2671"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Display Kubernetes context name in pod label ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2634",children:"#2634"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Add Docker compatibility button using flatpak-spawn ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1925",children:"#1925"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Improve UI consistency of Pull Image page ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2604",children:"#2604"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Could not install extensions on Windows 10 ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2762",children:"#2762"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Could not use locally built images on Kubernetes ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2710",children:"#2710"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Dashboard still suggests update after installation ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2648",children:"#2648"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Could not Play Kubernetes YAML to Podman on Windows ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2594",children:"#2594"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Pod label wasn't always shown in list ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2614",children:"#2614"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Dashboard button state was resetting ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2584",children:"#2584"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Change checkbox style so they don't look like stop buttons ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2723",children:"#2723"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better. In this\nsprint we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/fatelei",children:"wangxiaolei"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2602",children:"#2602 - Add meaningful tooltips to build, pull, prune buttons"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/AsciiWolf",children:"AsciiWolf"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2607",children:"#2607 - fix typing error in Flathub name"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2609",children:"#2609 - fix Flatpak install instructions"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"Anders Bj\xf6rklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2674",children:"#2674 - Select engine for Lima provider"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.1.0",children:"here"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.1.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},24825:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-1.1-44e0feeaa28730210c0fbecda0193b95.png"},78687:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/update-extensions-6b1ea25170c2f1b7608d8f5a887d902a.png"}}]); \ No newline at end of file diff --git a/assets/js/1cfced13.094662f6.js b/assets/js/1cfced13.094662f6.js deleted file mode 100644 index 783763bae66..00000000000 --- a/assets/js/1cfced13.094662f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8215],{36277:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>h});var s=t(24246),o=t(71670),i=t(92975);const r={title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",slug:"podman-desktop-release-1.2",authors:["cdrage"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.2.webp"},a=void 0,l={permalink:"/blog/podman-desktop-release-1.2",source:"@site/blog/2023-07-12-release-1.2.md",title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:6.05,hasTruncateMarker:!1,authors:[{name:"Charlie Drage",title:"Software Engineer",url:"https://github.com/cdrage",imageURL:"https://github.com/cdrage.png",key:"cdrage"}],frontMatter:{title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",slug:"podman-desktop-release-1.2",authors:["cdrage"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.2.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.3",permalink:"/blog/podman-desktop-release-1.3"},nextItem:{title:"Release Notes - Podman Desktop 1.1",permalink:"/blog/podman-desktop-release-1.1"}},d={authorsImageUrls:[void 0]},h=[{value:"Release Details",id:"release-details",level:2},{value:"Added start/stop/delete/restart buttons for Compose",id:"added-startstopdeleterestart-buttons-for-compose",level:3},{value:"Kubernetes context on the status bar",id:"kubernetes-context-on-the-status-bar",level:3},{value:"Rename images",id:"rename-images",level:3},{value:"Troubleshooting page",id:"troubleshooting-page",level:3},{value:"Protocol handler support",id:"protocol-handler-support",level:3},{value:"Other Notable Features",id:"other-notable-features",level:2},{value:"Documentation Updates",id:"documentation-updates",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Podman Desktop 1.2 Release! \ud83c\udf89"}),"\n",(0,s.jsx)(n.p,{children:"We're excited to announce the release of Podman Desktop version 1.2.0! This release includes many new features (Kubernetes, Compose and extension support!), bug fixes, and improvements to enhance your container management experience. Here's a summary of the key changes in this release:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Added start/stop/delete/restart buttons for Compose"}),": You can now make changes to an entire Compose group of containers"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Kubernetes context on the status bar"}),": Choose from multiple Kubernetes contexts more easily all from the status bar"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Rename images"}),": Rename an image with a click of a button"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Protocol handler support"}),": Added support for protocol handlers such as ",(0,s.jsx)(n.code,{children:"open podman-desktop:extension/redhat.openshift-local"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Troubleshooting page"}),": A troubleshooting page for helping diagnose Podman Desktop related development issues"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Podman Desktop 1.2 is now available. ",(0,s.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Podman-desktop-1-2-hero",src:t(31965).Z+"",width:"1920",height:"1080"})}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,s.jsx)(n.h3,{id:"added-startstopdeleterestart-buttons-for-compose",children:"Added start/stop/delete/restart buttons for Compose"}),"\n",(0,s.jsxs)(n.p,{children:["In the last month we've been addind support for more Compose features. Before you were only able to control a group of containers if they were in a Pod. Now we have added the ability to control a group of Compose containers. You can now start, stop, delete and restart a group of containers launched by either ",(0,s.jsx)(n.code,{children:"docker-compose"})," or ",(0,s.jsx)(n.code,{children:"podman-compose"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Stay tuned as we add even more features to Compose! If you have any feedback or feature requests, feel free to open an issue or start a discussion on GitHub."}),"\n",(0,s.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/253331226-d80e7637-c223-4bb8-8675-1dcb8d48818f.mov",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"kubernetes-context-on-the-status-bar",children:"Kubernetes context on the status bar"}),"\n",(0,s.jsx)(n.p,{children:"With Kubernetes context on the status bar, you can switch from one context to another in just a couple of clicks. Easily switch to a different cluster all together. If there are multiple contexts available, you can now click and pick which one to use."}),"\n",(0,s.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/243804525-242b02b4-fc3c-415b-be08-24eb1933adc5.mov",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"rename-images",children:"Rename images"}),"\n",(0,s.jsxs)(n.p,{children:["Deployed an image but now you need to rename it / add a new tag? Podman Desktop allows you to edit an image now. Thanks to an awesome contributor ",(0,s.jsx)(n.a,{href:"https://github.com/tuckerrc",children:"@tuckerrc"})," who added the new feature."]}),"\n",(0,s.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251759557-bd15a631-93ee-4383-a81c-8ef3934dfb59.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"troubleshooting-page",children:"Troubleshooting page"}),"\n",(0,s.jsx)(n.p,{children:"Developing an extension for Podman Desktop? Want to view the logs of Podman Desktop as well as ping your container connection? We now have a troubleshooting page!"}),"\n",(0,s.jsx)(n.p,{children:"Click on the lightbulb button on the bottom right to access the page."}),"\n",(0,s.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/248210601-e0a5deb0-44ad-4eea-9b24-134754fede80.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"protocol-handler-support",children:"Protocol handler support"}),"\n",(0,s.jsxs)(n.p,{children:["Podman Desktop now supports protocol handling when using the terminal! Want to access your favourite extension directly from a script or the terminal? If you type in ",(0,s.jsx)(n.code,{children:"open podman-desktop:extension/redhat.openshift-local"})," in the terminal, Podman Desktop will automatically load up to the correct extension."]}),"\n",(0,s.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/243304511-b11ad1e4-4c2f-455c-957a-01653d2a93c8.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"other-notable-features",children:"Other Notable Features"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Background colors and FormPage (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2977",children:"PR #2977"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add ability to add insecure registry / skipping cert verify (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2896",children:"PR #2896"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add support for icon contribution (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2984",children:"PR #2984"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add warning dialog message that virtual machine has low memory limit (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2822",children:"PR #2822"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Propose indexed name for new pod (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3028",children:"PR #3028"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add restart button after enabling / disabling mac os compatibility (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2841",children:"PR #2841"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add environment related helper constants (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3079",children:"PR #3079"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Allow entrypoint and cmd when starting container (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3031",children:"PR #3031"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add a way to debug stores in troubleshooting page (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3121",children:"PR #3121"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add custompick component (#2855) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3012",children:"PR #3012"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Dynamic breadcrumbs (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3119",children:"PR #3119"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Icons on form pages (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3155",children:"PR #3155"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Switch more pages to formpage (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3162",children:"PR #3162"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add rename image button (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2588",children:"PR #2588"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Fixed headers, improved scrollbars (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2863",children:"PR #2863"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Reports warnings on failed kube deploy, fixes error out (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3050",children:"PR #3050"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Kube context on statusbar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2755",children:"PR #2755"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Install provider if not installed when clicking on create new button (#2706) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2817",children:"PR #2817"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add tag and authenticated push capacity to the extension API (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2876",children:"PR #2876"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add navigation bar e2e tests (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2950",children:"PR #2950"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"documentation-updates",children:"Documentation Updates"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Fix documentation for building image of extensions (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2873",children:"PR #2873"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add Minikube install docs (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2824",children:"PR #2824"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add Minikube documentation (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2694",children:"PR #2694"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Updated Building an image procedure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2964",children:"PR #2964"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Starting a container (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2958",children:"PR #2958"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Pulling an image (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2956",children:"PR #2956"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Updated selecting containers to run in a pod (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2970",children:"PR #2970"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Pushing an image to a registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2969",children:"PR #2969"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["How to add an insecure registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2953",children:"PR #2953"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add documentation for lima (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2995",children:"PR #2995"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Replace broken link to podman.io (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2994",children:"PR #2994"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Authenticating to a pre-configured registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2965",children:"PR #2965"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Lima is not a container engine (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3051",children:"PR #3051"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Using the Troubleshooting page (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3083",children:"PR #3083"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["View and select your current Kubernetes context in the status bar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3090",children:"PR #3090"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Deleting a running pod generates an error (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2827",children:"PR #2827"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["If kubeconfig is empty, does not try to do things, cancel (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2874",children:"PR #2874"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Async telemetry startup (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2885",children:"PR #2885"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not block startup while waiting for kube resource refresh (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2884",children:"PR #2884"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Images list too wide (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2918",children:"PR #2918"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Compose deactivate function never called (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2922",children:"PR #2922"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Auto-scrolling on form pages, layout issues (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2927",children:"PR #2927"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Show current context in quick pick (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2920",children:"PR #2920"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Remove sticky position of loader in dashboard UI (#2535) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2959",children:"PR #2959"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Undo change that broke the website (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2992",children:"PR #2992"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Detailspage, resizing & consistency (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2987",children:"PR #2987"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Quick pick click to close and over nav bar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2758",children:"PR #2758"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Only show empty screen when no pods (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2929",children:"PR #2929"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not redirect to /pods when deleting pod in containerlist (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2963",children:"PR #2963"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Bulk delete on pods should call the pod deletion (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2979",children:"PR #2979"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Update nodejs version to 18 in .nvmrc to fix yarn install failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2989",children:"PR #2989"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Website check targets (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2996",children:"PR #2996"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Don't show exception to user (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3034",children:"PR #3034"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Interpret arguments given to info command for example (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3015",children:"PR #3015"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Change defaults for Podman machine (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3061",children:"PR #3061"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Normalize development/production folders path (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3113",children:"PR #3113"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Calculate machine socket path for linux (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3070",children:"PR #3070"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Replace backslash with slash so to support rendering on Windows (#3120) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3122",children:"PR #3122"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Keep stdout and stderr in the error object for Docker Desktop extensions (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3014",children:"PR #3014"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Mark task completed if there's a failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3016",children:"PR #3016"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Handle invalid kubeconfig file (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3129",children:"PR #3129"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not remove registries when podman extension is stopping (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3136",children:"PR #3136"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Warning should be amber (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3153",children:"PR #3153"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Load user extensions from plugins as removable (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3152",children:"PR #3152"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Images with spaces in entrypoints or commands fail to start (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3161",children:"PR #3161"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Scrolling offscreen when clicking checkbox (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3178",children:"PR #3178"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Avoid messagebox expanding offscreen (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2778",children:"PR #2778"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Release-notes-generator run failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2752",children:"PR #2752"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Unable to do a new build if the previous one failed (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2721",children:"PR #2721"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,s.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,s.jsxs)(n.p,{children:["A big shoutout to ",(0,s.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"@afbjorklund"}),", ",(0,s.jsx)(n.a,{href:"https://github.com/tuckerrc",children:"@tuckerrc"})," and ",(0,s.jsx)(n.a,{href:"https://github.com/evanshortiss",children:"@evanshortiss"})," who contributed to this release!"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,s.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.2.0",children:"here"})," and ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.2.0",children:"here"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Get the latest release from the ",(0,s.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},31965:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/podman-desktop-release-1.2-3a022da0788ed1fd7e6c1820879dd235.png"}}]); \ No newline at end of file diff --git a/assets/js/1cfced13.778f5e2d.js b/assets/js/1cfced13.778f5e2d.js new file mode 100644 index 00000000000..e8721a063d6 --- /dev/null +++ b/assets/js/1cfced13.778f5e2d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8215],{36277:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>c});var s=t(24246),o=t(71670),i=t(92975),r=t.n(i);const a={title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",slug:"podman-desktop-release-1.2",authors:["cdrage"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.2.webp"},l=void 0,d={permalink:"/blog/podman-desktop-release-1.2",source:"@site/blog/2023-07-12-release-1.2.md",title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",date:"2023-07-12T00:00:00.000Z",formattedDate:"July 12, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:6.05,hasTruncateMarker:!1,authors:[{name:"Charlie Drage",title:"Software Engineer",url:"https://github.com/cdrage",imageURL:"https://github.com/cdrage.png",key:"cdrage"}],frontMatter:{title:"Release Notes - Podman Desktop 1.2",description:"Podman Desktop 1.2 has been released!",slug:"podman-desktop-release-1.2",authors:["cdrage"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.2.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.3",permalink:"/blog/podman-desktop-release-1.3"},nextItem:{title:"Release Notes - Podman Desktop 1.1",permalink:"/blog/podman-desktop-release-1.1"}},h={authorsImageUrls:[void 0]},c=[{value:"Release Details",id:"release-details",level:2},{value:"Added start/stop/delete/restart buttons for Compose",id:"added-startstopdeleterestart-buttons-for-compose",level:3},{value:"Kubernetes context on the status bar",id:"kubernetes-context-on-the-status-bar",level:3},{value:"Rename images",id:"rename-images",level:3},{value:"Troubleshooting page",id:"troubleshooting-page",level:3},{value:"Protocol handler support",id:"protocol-handler-support",level:3},{value:"Other Notable Features",id:"other-notable-features",level:2},{value:"Documentation Updates",id:"documentation-updates",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Podman Desktop 1.2 Release! \ud83c\udf89"}),"\n",(0,s.jsx)(n.p,{children:"We're excited to announce the release of Podman Desktop version 1.2.0! This release includes many new features (Kubernetes, Compose and extension support!), bug fixes, and improvements to enhance your container management experience. Here's a summary of the key changes in this release:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Added start/stop/delete/restart buttons for Compose"}),": You can now make changes to an entire Compose group of containers"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Kubernetes context on the status bar"}),": Choose from multiple Kubernetes contexts more easily all from the status bar"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Rename images"}),": Rename an image with a click of a button"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Protocol handler support"}),": Added support for protocol handlers such as ",(0,s.jsx)(n.code,{children:"open podman-desktop:extension/redhat.openshift-local"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Troubleshooting page"}),": A troubleshooting page for helping diagnose Podman Desktop related development issues"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Podman Desktop 1.2 is now available. ",(0,s.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Podman-desktop-1-2-hero",src:t(31965).Z+"",width:"1920",height:"1080"})}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,s.jsx)(n.h3,{id:"added-startstopdeleterestart-buttons-for-compose",children:"Added start/stop/delete/restart buttons for Compose"}),"\n",(0,s.jsxs)(n.p,{children:["In the last month we've been addind support for more Compose features. Before you were only able to control a group of containers if they were in a Pod. Now we have added the ability to control a group of Compose containers. You can now start, stop, delete and restart a group of containers launched by either ",(0,s.jsx)(n.code,{children:"docker-compose"})," or ",(0,s.jsx)(n.code,{children:"podman-compose"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Stay tuned as we add even more features to Compose! If you have any feedback or feature requests, feel free to open an issue or start a discussion on GitHub."}),"\n",(0,s.jsx)(r(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/253331226-d80e7637-c223-4bb8-8675-1dcb8d48818f.mov",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"kubernetes-context-on-the-status-bar",children:"Kubernetes context on the status bar"}),"\n",(0,s.jsx)(n.p,{children:"With Kubernetes context on the status bar, you can switch from one context to another in just a couple of clicks. Easily switch to a different cluster all together. If there are multiple contexts available, you can now click and pick which one to use."}),"\n",(0,s.jsx)(r(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/243804525-242b02b4-fc3c-415b-be08-24eb1933adc5.mov",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"rename-images",children:"Rename images"}),"\n",(0,s.jsxs)(n.p,{children:["Deployed an image but now you need to rename it / add a new tag? Podman Desktop allows you to edit an image now. Thanks to an awesome contributor ",(0,s.jsx)(n.a,{href:"https://github.com/tuckerrc",children:"@tuckerrc"})," who added the new feature."]}),"\n",(0,s.jsx)(r(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251759557-bd15a631-93ee-4383-a81c-8ef3934dfb59.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"troubleshooting-page",children:"Troubleshooting page"}),"\n",(0,s.jsx)(n.p,{children:"Developing an extension for Podman Desktop? Want to view the logs of Podman Desktop as well as ping your container connection? We now have a troubleshooting page!"}),"\n",(0,s.jsx)(n.p,{children:"Click on the lightbulb button on the bottom right to access the page."}),"\n",(0,s.jsx)(r(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/248210601-e0a5deb0-44ad-4eea-9b24-134754fede80.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.h3,{id:"protocol-handler-support",children:"Protocol handler support"}),"\n",(0,s.jsxs)(n.p,{children:["Podman Desktop now supports protocol handling when using the terminal! Want to access your favourite extension directly from a script or the terminal? If you type in ",(0,s.jsx)(n.code,{children:"open podman-desktop:extension/redhat.openshift-local"})," in the terminal, Podman Desktop will automatically load up to the correct extension."]}),"\n",(0,s.jsx)(r(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/243304511-b11ad1e4-4c2f-455c-957a-01653d2a93c8.mp4",width:"100%",height:"100%"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"other-notable-features",children:"Other Notable Features"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Background colors and FormPage (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2977",children:"PR #2977"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add ability to add insecure registry / skipping cert verify (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2896",children:"PR #2896"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add support for icon contribution (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2984",children:"PR #2984"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add warning dialog message that virtual machine has low memory limit (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2822",children:"PR #2822"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Propose indexed name for new pod (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3028",children:"PR #3028"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add restart button after enabling / disabling mac os compatibility (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2841",children:"PR #2841"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add environment related helper constants (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3079",children:"PR #3079"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Allow entrypoint and cmd when starting container (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3031",children:"PR #3031"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add a way to debug stores in troubleshooting page (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3121",children:"PR #3121"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add custompick component (#2855) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3012",children:"PR #3012"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Dynamic breadcrumbs (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3119",children:"PR #3119"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Icons on form pages (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3155",children:"PR #3155"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Switch more pages to formpage (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3162",children:"PR #3162"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add rename image button (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2588",children:"PR #2588"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Fixed headers, improved scrollbars (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2863",children:"PR #2863"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Reports warnings on failed kube deploy, fixes error out (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3050",children:"PR #3050"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Kube context on statusbar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2755",children:"PR #2755"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Install provider if not installed when clicking on create new button (#2706) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2817",children:"PR #2817"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add tag and authenticated push capacity to the extension API (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2876",children:"PR #2876"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add navigation bar e2e tests (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2950",children:"PR #2950"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"documentation-updates",children:"Documentation Updates"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Fix documentation for building image of extensions (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2873",children:"PR #2873"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add Minikube install docs (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2824",children:"PR #2824"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add Minikube documentation (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2694",children:"PR #2694"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Updated Building an image procedure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2964",children:"PR #2964"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Starting a container (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2958",children:"PR #2958"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Pulling an image (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2956",children:"PR #2956"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Updated selecting containers to run in a pod (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2970",children:"PR #2970"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Pushing an image to a registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2969",children:"PR #2969"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["How to add an insecure registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2953",children:"PR #2953"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Add documentation for lima (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2995",children:"PR #2995"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Replace broken link to podman.io (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2994",children:"PR #2994"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Authenticating to a pre-configured registry (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2965",children:"PR #2965"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Lima is not a container engine (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3051",children:"PR #3051"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Using the Troubleshooting page (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3083",children:"PR #3083"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["View and select your current Kubernetes context in the status bar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3090",children:"PR #3090"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Deleting a running pod generates an error (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2827",children:"PR #2827"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["If kubeconfig is empty, does not try to do things, cancel (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2874",children:"PR #2874"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Async telemetry startup (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2885",children:"PR #2885"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not block startup while waiting for kube resource refresh (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2884",children:"PR #2884"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Images list too wide (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2918",children:"PR #2918"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Compose deactivate function never called (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2922",children:"PR #2922"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Auto-scrolling on form pages, layout issues (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2927",children:"PR #2927"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Show current context in quick pick (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2920",children:"PR #2920"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Remove sticky position of loader in dashboard UI (#2535) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2959",children:"PR #2959"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Undo change that broke the website (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2992",children:"PR #2992"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Detailspage, resizing & consistency (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2987",children:"PR #2987"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Quick pick click to close and over nav bar (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2758",children:"PR #2758"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Only show empty screen when no pods (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2929",children:"PR #2929"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not redirect to /pods when deleting pod in containerlist (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2963",children:"PR #2963"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Bulk delete on pods should call the pod deletion (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2979",children:"PR #2979"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Update nodejs version to 18 in .nvmrc to fix yarn install failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2989",children:"PR #2989"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Website check targets (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2996",children:"PR #2996"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Don't show exception to user (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3034",children:"PR #3034"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Interpret arguments given to info command for example (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3015",children:"PR #3015"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Change defaults for Podman machine (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3061",children:"PR #3061"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Normalize development/production folders path (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3113",children:"PR #3113"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Calculate machine socket path for linux (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3070",children:"PR #3070"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Replace backslash with slash so to support rendering on Windows (#3120) (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3122",children:"PR #3122"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Keep stdout and stderr in the error object for Docker Desktop extensions (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3014",children:"PR #3014"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Mark task completed if there's a failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3016",children:"PR #3016"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Handle invalid kubeconfig file (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3129",children:"PR #3129"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Do not remove registries when podman extension is stopping (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3136",children:"PR #3136"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Warning should be amber (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3153",children:"PR #3153"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Load user extensions from plugins as removable (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3152",children:"PR #3152"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Images with spaces in entrypoints or commands fail to start (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3161",children:"PR #3161"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Scrolling offscreen when clicking checkbox (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3178",children:"PR #3178"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Avoid messagebox expanding offscreen (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2778",children:"PR #2778"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Release-notes-generator run failure (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2752",children:"PR #2752"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:["Unable to do a new build if the previous one failed (",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2721",children:"PR #2721"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,s.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,s.jsxs)(n.p,{children:["A big shoutout to ",(0,s.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"@afbjorklund"}),", ",(0,s.jsx)(n.a,{href:"https://github.com/tuckerrc",children:"@tuckerrc"})," and ",(0,s.jsx)(n.a,{href:"https://github.com/evanshortiss",children:"@evanshortiss"})," who contributed to this release!"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,s.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.2.0",children:"here"})," and ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.2.0",children:"here"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Get the latest release from the ",(0,s.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,s.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function u(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},31965:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/podman-desktop-release-1.2-3a022da0788ed1fd7e6c1820879dd235.png"}}]); \ No newline at end of file diff --git a/assets/js/4816649b.95e2cb49.js b/assets/js/4816649b.95e2cb49.js deleted file mode 100644 index e41da4c6e64..00000000000 --- a/assets/js/4816649b.95e2cb49.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6690],{47883:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>h});var t=s(24246),i=s(71670),o=s(92975);const a={title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",slug:"podman-desktop-release-0.14",authors:["deboer"],tags:["podman-desktop","release","kubernetes","kind"],hide_table_of_contents:!1},r=void 0,l={permalink:"/blog/podman-desktop-release-0.14",source:"@site/blog/2023-04-14-release-0.14.md",title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"kind",permalink:"/blog/tags/kind"}],readingTime:4.025,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",slug:"podman-desktop-release-0.14",authors:["deboer"],tags:["podman-desktop","release","kubernetes","kind"],hide_table_of_contents:!1},unlisted:!1,prevItem:{title:"Setting up and running a Kubernetes cluster locally with Podman Desktop",permalink:"/blog/running-a-local-kubernetes-cluster-with-podman-desktop"},nextItem:{title:"Release Notes - Podman Desktop 0.13",permalink:"/blog/podman-desktop-release-0.13"}},d={authorsImageUrls:[void 0]},h=[{value:"Release details",id:"release-details",level:2},{value:"Kind Installation",id:"kind-installation",level:3},{value:"Manage Kind Clusters",id:"manage-kind-clusters",level:3},{value:"Using Kind",id:"using-kind",level:3},{value:"Kind Ingress",id:"kind-ingress",level:3},{value:"UI and UX improvements",id:"ui-and-ux-improvements",level:3},{value:"Updated Preferences",id:"updated-preferences",level:4},{value:"Telemetry Prompt",id:"telemetry-prompt",level:4},{value:"Other notable enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Final notes",id:"final-notes",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 0.14 - Our Kind-est release yet!"}),"\n",(0,t.jsx)(n.p,{children:"We have been working on a Kind extension for a while now, and decided it is time to promote it\ninto a release just in time for KubeCon and CloudNativeCon Europe!"}),"\n",(0,t.jsx)(n.p,{children:"We're especially excited about releasing Kind because it finally shows the full purpose\nof Podman Desktop: not just local container engines, but Kubernetes too. More importantly,\nproviding tools that allow you to manage both environments and seamlessly move between them."}),"\n",(0,t.jsx)(n.p,{children:"Some of these features were available in development mode over the last few releases,\nbut since they are now in the release build, we will do a full roundup and talk about\nall the Kind features."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Kind Installation"}),": Install Kind from the status bar"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Manage Kind Clusters"}),": Create and manage Kind clusters from ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Using Kind"}),": Deploying YAML and sharing images to a cluster"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Kind Ingress"}),": Install a Contour ingress controller"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": Updated preferences and telemetry prompt"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.14 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-0-14-hero",src:s(41767).Z+"",width:"1140",height:"1097"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release details"}),"\n",(0,t.jsx)(n.h3,{id:"kind-installation",children:"Kind Installation"}),"\n",(0,t.jsxs)(n.p,{children:["Get Kind up and running in seconds! The Kind extension is now bundled as part of Podman Desktop\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1421",children:"1421"}),"\nand allows you to easily ",(0,t.jsx)(n.a,{href:"/docs/kind/installing",children:"install Kind directly from the status bar"}),"\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1257",children:"1257"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The installed ",(0,t.jsx)(n.code,{children:"kind"})," CLI is available from the system shell ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1516",children:"1516"}),",\nallowing you to open a terminal window to ",(0,t.jsx)(n.code,{children:"kind get clusters"})," or work with other tools."]}),"\n",(0,t.jsx)(n.h3,{id:"manage-kind-clusters",children:"Manage Kind Clusters"}),"\n",(0,t.jsxs)(n.p,{children:["Once Kind is installed (or if you already had it), you can manage your clusters in ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]}),".\nFrom here you can ",(0,t.jsx)(n.a,{href:"/docs/kind/creating-a-kind-cluster",children:"create Kind clusters"}),",\nstart/stop ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1953",children:"1953"}),"\nor delete ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1977",children:"1977"})," them."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"kind-clusters",src:s(45988).Z+"",width:"1484",height:"364"})}),"\n",(0,t.jsxs)(n.p,{children:["The Kind control plane runs as a container. You will see this container\nin the ",(0,t.jsx)(n.strong,{children:"Container"})," list and can also start or stop it from there."]}),"\n",(0,t.jsx)(n.h3,{id:"using-kind",children:"Using Kind"}),"\n",(0,t.jsxs)(n.p,{children:["Now that you have Kind installed and running, what can you do with it?\nIf you like terminals, you can always open one up and use the Kind CLI to\n",(0,t.jsx)(n.a,{href:"https://kind.sigs.k8s.io/docs/user/quick-start/#interacting-with-your-cluster",children:"interact with your cluster"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Within Podman Desktop we have started with two ways to interact with the cluster.\nThe first is the ability to play local YAML files on your Kind (or any other Kubernetes!) cluster ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1261",children:"1261"}),". This allows you to take existing Kubernetes YAML definitions -\nyour deployments, services, or other objects - and deploy it to the cluster."]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/231812563-ece0a56a-b347-48f8-a3a7-400eb9449037.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.p,{children:["As you deploy pods, they will automatically appear in the list of ",(0,t.jsx)(n.strong,{children:"Pods"})," ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1263",children:"1263"}),", allowing you to start, stop, and interact them just like pods running on Podman."]}),"\n",(0,t.jsxs)(n.p,{children:["One of the most common uses is to deploy a container that you have been running on Podman, and this will fail\nif the image is not available in Kind. To solve this we have made it easy to push images from\nPodman to Kind ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1448",children:"1448"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"push-image-kind",src:s(75281).Z+"",width:"1054",height:"152"})}),"\n",(0,t.jsx)(n.h3,{id:"kind-ingress",children:"Kind Ingress"}),"\n",(0,t.jsxs)(n.p,{children:["If you deploy a pod to Kind, you are also going to want to reach it! To do this you will need to install a load balancer or\ningress controller so that the pod is accessible from outside the cluster. We made it easy to install the Contour ingress\ncontroller while creating a Kind cluster ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1675",children:"1675"}),",\nso if you created your cluster with Podman Desktop it is already there!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"kind-ingress",src:s(61958).Z+"",width:"1328",height:"1238"})}),"\n",(0,t.jsx)(n.p,{children:"We have several other Kind and Kubernetes features planned to expand the supported scenarios, but hopefully this\nmakes it easy to get started with Kind and shows where we're headed. As always, feedback is appreciated!"}),"\n",(0,t.jsx)(n.h3,{id:"ui-and-ux-improvements",children:"UI and UX improvements"}),"\n",(0,t.jsx)(n.h4,{id:"updated-preferences",children:"Updated Preferences"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Preferences"]})," page has been updated with a new design ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1913",children:"1913"}),",\nmaking it easier to see and change preferences. Changes are live, no more Update button."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229498507-e754b55c-dcbd-486d-9ee3-a1fe3bed7271.gif",alt:"preferences"})}),"\n",(0,t.jsx)(n.h4,{id:"telemetry-prompt",children:"Telemetry Prompt"}),"\n",(0,t.jsxs)(n.p,{children:["The prompt to enable or disable telemetry has been moved from its own dialog into the ",(0,t.jsx)(n.strong,{children:"Welcome"})," screen.\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1927",children:"1927"}),"\nThis is more usable, one less prompt, and solves a window-layering issue for some users!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/229577331-365a9a01-0426-4482-a95d-f5dfe39af90a.png",alt:"telemetry prompt"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other notable enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Extension support for opening an external URL ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2028",children:"2028"})," and\naccessing the clipboard ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2023",children:"2023"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"documentation",children:"Documentation"}),"\n",(0,t.jsxs)(n.p,{children:["Naturally, we have a section in the documentation just for ",(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/kind",children:"Kind"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable bug fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Avoid a dialog box if unable to check for updates ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2062",children:"2062"})]}),"\n",(0,t.jsxs)(n.li,{children:["Unable to get to the Dashboard if Kind (or Kubernetes) cluster was not running ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/2052",children:"2052"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.14.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function p(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},45988:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/kind-clusters-580828529dfdd23680262d7ee586823d.png"},61958:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/kind-ingress-ab2dd4054a7ce838c758ddc0d98cc5cb.png"},41767:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-0.14-5d7adb6814b7191ab2623cdd431642f3.png"},75281:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/push-image-kind-ea3f19b80ab3ce13cdfadbbb63762780.png"}}]); \ No newline at end of file diff --git a/assets/js/4816649b.99fd0ff4.js b/assets/js/4816649b.99fd0ff4.js new file mode 100644 index 00000000000..310066de8b4 --- /dev/null +++ b/assets/js/4816649b.99fd0ff4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6690],{47883:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var t=s(24246),i=s(71670),o=s(92975),a=s.n(o);const r={title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",slug:"podman-desktop-release-0.14",authors:["deboer"],tags:["podman-desktop","release","kubernetes","kind"],hide_table_of_contents:!1},l=void 0,d={permalink:"/blog/podman-desktop-release-0.14",source:"@site/blog/2023-04-14-release-0.14.md",title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",date:"2023-04-14T00:00:00.000Z",formattedDate:"April 14, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"kind",permalink:"/blog/tags/kind"}],readingTime:4.025,hasTruncateMarker:!0,authors:[{name:"Tim deBoer",title:"Architect",url:"https://github.com/deboer-tim",imageURL:"https://github.com/deboer-tim.png",key:"deboer"}],frontMatter:{title:"Release Notes - Podman Desktop 0.14",description:"Podman Desktop 0.14 has been released!",slug:"podman-desktop-release-0.14",authors:["deboer"],tags:["podman-desktop","release","kubernetes","kind"],hide_table_of_contents:!1},unlisted:!1,prevItem:{title:"Setting up and running a Kubernetes cluster locally with Podman Desktop",permalink:"/blog/running-a-local-kubernetes-cluster-with-podman-desktop"},nextItem:{title:"Release Notes - Podman Desktop 0.13",permalink:"/blog/podman-desktop-release-0.13"}},h={authorsImageUrls:[void 0]},c=[{value:"Release details",id:"release-details",level:2},{value:"Kind Installation",id:"kind-installation",level:3},{value:"Manage Kind Clusters",id:"manage-kind-clusters",level:3},{value:"Using Kind",id:"using-kind",level:3},{value:"Kind Ingress",id:"kind-ingress",level:3},{value:"UI and UX improvements",id:"ui-and-ux-improvements",level:3},{value:"Updated Preferences",id:"updated-preferences",level:4},{value:"Telemetry Prompt",id:"telemetry-prompt",level:4},{value:"Other notable enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Final notes",id:"final-notes",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:o}=n;return o||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 0.14 - Our Kind-est release yet!"}),"\n",(0,t.jsx)(n.p,{children:"We have been working on a Kind extension for a while now, and decided it is time to promote it\ninto a release just in time for KubeCon and CloudNativeCon Europe!"}),"\n",(0,t.jsx)(n.p,{children:"We're especially excited about releasing Kind because it finally shows the full purpose\nof Podman Desktop: not just local container engines, but Kubernetes too. More importantly,\nproviding tools that allow you to manage both environments and seamlessly move between them."}),"\n",(0,t.jsx)(n.p,{children:"Some of these features were available in development mode over the last few releases,\nbut since they are now in the release build, we will do a full roundup and talk about\nall the Kind features."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Kind Installation"}),": Install Kind from the status bar"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Manage Kind Clusters"}),": Create and manage Kind clusters from ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Using Kind"}),": Deploying YAML and sharing images to a cluster"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Kind Ingress"}),": Install a Contour ingress controller"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"UX and UI Improvements"}),": Updated preferences and telemetry prompt"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 0.14 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-0-14-hero",src:s(41767).Z+"",width:"1140",height:"1097"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release details"}),"\n",(0,t.jsx)(n.h3,{id:"kind-installation",children:"Kind Installation"}),"\n",(0,t.jsxs)(n.p,{children:["Get Kind up and running in seconds! The Kind extension is now bundled as part of Podman Desktop\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1421",children:"1421"}),"\nand allows you to easily ",(0,t.jsx)(n.a,{href:"/docs/kind/installing",children:"install Kind directly from the status bar"}),"\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1257",children:"1257"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The installed ",(0,t.jsx)(n.code,{children:"kind"})," CLI is available from the system shell ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1516",children:"1516"}),",\nallowing you to open a terminal window to ",(0,t.jsx)(n.code,{children:"kind get clusters"})," or work with other tools."]}),"\n",(0,t.jsx)(n.h3,{id:"manage-kind-clusters",children:"Manage Kind Clusters"}),"\n",(0,t.jsxs)(n.p,{children:["Once Kind is installed (or if you already had it), you can manage your clusters in ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Resources"]}),".\nFrom here you can ",(0,t.jsx)(n.a,{href:"/docs/kind/creating-a-kind-cluster",children:"create Kind clusters"}),",\nstart/stop ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1953",children:"1953"}),"\nor delete ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1977",children:"1977"})," them."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"kind-clusters",src:s(45988).Z+"",width:"1484",height:"364"})}),"\n",(0,t.jsxs)(n.p,{children:["The Kind control plane runs as a container. You will see this container\nin the ",(0,t.jsx)(n.strong,{children:"Container"})," list and can also start or stop it from there."]}),"\n",(0,t.jsx)(n.h3,{id:"using-kind",children:"Using Kind"}),"\n",(0,t.jsxs)(n.p,{children:["Now that you have Kind installed and running, what can you do with it?\nIf you like terminals, you can always open one up and use the Kind CLI to\n",(0,t.jsx)(n.a,{href:"https://kind.sigs.k8s.io/docs/user/quick-start/#interacting-with-your-cluster",children:"interact with your cluster"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Within Podman Desktop we have started with two ways to interact with the cluster.\nThe first is the ability to play local YAML files on your Kind (or any other Kubernetes!) cluster ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1261",children:"1261"}),". This allows you to take existing Kubernetes YAML definitions -\nyour deployments, services, or other objects - and deploy it to the cluster."]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/231812563-ece0a56a-b347-48f8-a3a7-400eb9449037.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.p,{children:["As you deploy pods, they will automatically appear in the list of ",(0,t.jsx)(n.strong,{children:"Pods"})," ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1263",children:"1263"}),", allowing you to start, stop, and interact them just like pods running on Podman."]}),"\n",(0,t.jsxs)(n.p,{children:["One of the most common uses is to deploy a container that you have been running on Podman, and this will fail\nif the image is not available in Kind. To solve this we have made it easy to push images from\nPodman to Kind ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1448",children:"1448"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"push-image-kind",src:s(75281).Z+"",width:"1054",height:"152"})}),"\n",(0,t.jsx)(n.h3,{id:"kind-ingress",children:"Kind Ingress"}),"\n",(0,t.jsxs)(n.p,{children:["If you deploy a pod to Kind, you are also going to want to reach it! To do this you will need to install a load balancer or\ningress controller so that the pod is accessible from outside the cluster. We made it easy to install the Contour ingress\ncontroller while creating a Kind cluster ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/1675",children:"1675"}),",\nso if you created your cluster with Podman Desktop it is already there!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"kind-ingress",src:s(61958).Z+"",width:"1328",height:"1238"})}),"\n",(0,t.jsx)(n.p,{children:"We have several other Kind and Kubernetes features planned to expand the supported scenarios, but hopefully this\nmakes it easy to get started with Kind and shows where we're headed. As always, feedback is appreciated!"}),"\n",(0,t.jsx)(n.h3,{id:"ui-and-ux-improvements",children:"UI and UX improvements"}),"\n",(0,t.jsx)(n.h4,{id:"updated-preferences",children:"Updated Preferences"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"})," Settings > Preferences"]})," page has been updated with a new design ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1913",children:"1913"}),",\nmaking it easier to see and change preferences. Changes are live, no more Update button."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229498507-e754b55c-dcbd-486d-9ee3-a1fe3bed7271.gif",alt:"preferences"})}),"\n",(0,t.jsx)(n.h4,{id:"telemetry-prompt",children:"Telemetry Prompt"}),"\n",(0,t.jsxs)(n.p,{children:["The prompt to enable or disable telemetry has been moved from its own dialog into the ",(0,t.jsx)(n.strong,{children:"Welcome"})," screen.\n",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1927",children:"1927"}),"\nThis is more usable, one less prompt, and solves a window-layering issue for some users!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/229577331-365a9a01-0426-4482-a95d-f5dfe39af90a.png",alt:"telemetry prompt"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other notable enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Extension support for opening an external URL ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2028",children:"2028"})," and\naccessing the clipboard ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2023",children:"2023"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"documentation",children:"Documentation"}),"\n",(0,t.jsxs)(n.p,{children:["Naturally, we have a section in the documentation just for ",(0,t.jsx)(n.a,{href:"https://podman-desktop.io/docs/kind",children:"Kind"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable bug fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Avoid a dialog box if unable to check for updates ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2062",children:"2062"})]}),"\n",(0,t.jsxs)(n.li,{children:["Unable to get to the Dashboard if Kind (or Kubernetes) cluster was not running ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues/2052",children:"2052"})]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.14.0",children:"here"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function u(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},45988:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/kind-clusters-580828529dfdd23680262d7ee586823d.png"},61958:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/kind-ingress-ab2dd4054a7ce838c758ddc0d98cc5cb.png"},41767:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/podman-desktop-release-0.14-5d7adb6814b7191ab2623cdd431642f3.png"},75281:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/push-image-kind-ea3f19b80ab3ce13cdfadbbb63762780.png"}}]); \ No newline at end of file diff --git a/assets/js/5628.4d1e89d2.js b/assets/js/5628.4d1e89d2.js new file mode 100644 index 00000000000..eef9f6d45b8 --- /dev/null +++ b/assets/js/5628.4d1e89d2.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5628],{21857:e=>{"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?s((r=e,Array.isArray(r)?[]:{}),e,t):e;var r}function a(e,t,r){return e.concat(t).map((function(e){return n(e,r)}))}function o(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function i(e,t){try{return t in e}catch(r){return!1}}function l(e,t,r){var a={};return r.isMergeableObject(e)&&o(e).forEach((function(t){a[t]=n(e[t],r)})),o(t).forEach((function(o){(function(e,t){return i(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,o)||(i(e,o)&&r.isMergeableObject(t[o])?a[o]=function(e,t){if(!t.customMerge)return s;var r=t.customMerge(e);return"function"==typeof r?r:s}(o,r)(e[o],t[o],r):a[o]=n(t[o],r))})),a}function s(e,r,o){(o=o||{}).arrayMerge=o.arrayMerge||a,o.isMergeableObject=o.isMergeableObject||t,o.cloneUnlessOtherwiseSpecified=n;var i=Array.isArray(r);return i===Array.isArray(e)?i?o.arrayMerge(e,r,o):l(e,r,o):n(r,o)}s.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return s(e,r,t)}),{})};var u=s;e.exports=u},1204:e=>{function t(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function r(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}e.exports=function(e,n,a){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");"function"==typeof n&&(a=n,n={}),n=n||{},a=a||function(){},i.type=n.type||"text/javascript",i.charset=n.charset||"utf8",i.async=!("async"in n)||!!n.async,i.src=e,n.attrs&&function(e,t){for(var r in t)e.setAttribute(r,t[r])}(i,n.attrs),n.text&&(i.text=""+n.text),("onload"in i?t:r)(i,a),i.onload||t(i,a),o.appendChild(i)}},56583:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function a(e,t){if(e.length!==t.length)return!1;for(var r=0;rDeploy to kubernetes in compose actions #3299",id:"deploy-to-kubernetes-in-compose-actions-3299",level:3},{value:"Generate Kube in Compose actions and Kube tab in compose details #3253",id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",level:3},{value:"Install multiple extensions using extension pack #3150",id:"install-multiple-extensions-using-extension-pack-3150",level:3},{value:"Customize icons from extension #3131",id:"customize-icons-from-extension-3131",level:3},{value:"Resource details page update #1923",id:"resource-details-page-update-1923",level:3},{value:"Node's container image field added to Create a Kind cluster form #3508",id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",level:3},{value:"Support Docker Desktop extensions using a backend #3435",id:"support-docker-desktop-extensions-using-a-backend-3435",level:3},{value:"Initial onboarding implementation for podman (experimental) #3308",id:"initial-onboarding-implementation-for-podman-experimental-3308",level:3},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:3},{value:"Community Thank You",id:"community-thank-you",level:3},{value:"Final Notes",id:"final-notes",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Podman Desktop 1.3 Release! \ud83c\udf89"}),"\n",(0,o.jsx)(n.p,{children:"This is essentially a bug-fix release to fix various issues in UI, extension engine and featured extensions, but as usual we also added a few new features."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman 4.6.1"}),": Podman 4.6.1 included in Windows and Mac installers"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman user-mode networking support to Windows/WSL"}),": A new switch `User mode networking' is available when creating Podman machine on Windows for Podman 4.6.0+ to configure podman to work in certain VPN setups and other specialized networking configurations"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Compose group new UI elements"}),": You can now see summary, inspect, deploy to kubernetes, generate kube yaml and view logs"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Extension packs and extension dependencies"}),": Install group of extensions in one click"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Resource details page update"}),": See summary and log for resource"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Create Kind cluster form update"}),": A new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Support Docker Desktop extensions using a backend"}),": When loading Docker Desktop extension the containers are created in the backend as described in the vm section of extension's descriptor"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman Initial Onboarding (preview)"}),": Install and configure podman using included installer"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Podman Desktop 1.3 is now available. ",(0,o.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Podman-desktop-1-3-bug-swatting",src:s(46714).Z+"",width:"1920",height:"1080"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-logs-tab-3176",children:["Compose group Logs tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3176",children:"#3176"})]}),"\n",(0,o.jsx)(n.p,{children:"When clicking on the group of containers, you can now view the logs of the entire group of compose containers and don't need to open\nlog for every component individually."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/6422176/743a4ffc-e291-4697-8ac5-8052cc921946",alt:"Screenshot 2023-07-11 at 12 48 47 PM"})}),"\n",(0,o.jsxs)(n.h3,{id:"podman-user-mode-networking-support-to-windowswsl-3251",children:["Podman user-mode networking support to Windows/WSL ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3251",children:"#3251"})]}),"\n",(0,o.jsx)(n.p,{children:"Certain VPN setups or other specialized networking configs will block traffic from the virtual WSL networking device, resulting in the podman WSL backend from being unable to contact systems on the VPN, and potentially losing internet access altogether. The new switch allows you to create a podman VM machine configured to work correctly in mentioned above networking environments."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/620330/2f521576-b6a6-42b5-b24d-08df5b432608",alt:"user"})}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-summary-tab-3317",children:["Compose group Summary tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3317",children:"#3317"}),","]}),"\n",(0,o.jsx)(n.p,{children:"Compose group Summary tab shows all containers in the group and let you navigate to Details page for specific container."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://github.com/containers/podman-desktop/assets/620330/6dd6dacd-a0d8-478d-b11e-2b414108bd20",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-inspect-tab-3316",children:["Compose group Inspect tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3316",children:"#3316"})]}),"\n",(0,o.jsx)(n.p,{children:'Compose group Inspect tab shows an array of "container inspect" from docker / podman.'}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/255658081-4a2ce4ce-bdc7-435d-9114-1071ab1ec3c5.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"deploy-to-kubernetes-in-compose-actions-3299",children:[(0,o.jsx)(n.code,{children:"Deploy to kubernetes"})," in compose actions ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3295",children:"#3299"})]}),"\n",(0,o.jsx)(n.p,{children:"A button to deploy to kubernetes added to Compose group."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254973806-1ce57225-3422-4d36-8d09-b70a2825869f.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",children:[(0,o.jsx)(n.code,{children:"Generate Kube"})," in Compose actions and ",(0,o.jsx)(n.code,{children:"Kube"})," tab in compose details ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3253",children:"#3253"})]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Generate Kube"}),' item added to Compose actions and "Kube" tab is now available in Compose details view.']}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254337805-98268722-4dde-4c0e-afdf-4873fa4f43fe.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"install-multiple-extensions-using-extension-pack-3150",children:["Install multiple extensions using extension pack ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3150",children:"#3150"})]}),"\n",(0,o.jsx)(n.p,{children:"An Extension pack introduced in Extension engine is a way to declare set of extensions to install them all at once."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251741571-0cd4a199-06f4-4890-8414-4e93ca9178bc.mp4",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"customize-icons-from-extension-3131",children:["Customize icons from extension ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3131",children:"#3131"})]}),"\n",(0,o.jsxs)(n.p,{children:["Extensions now can customize icons for list elements using ",(0,o.jsx)(n.code,{children:"when"})," clause."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/49404737/7aae5347-4f07-4854-ba11-1f629b5ccf22",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"resource-details-page-update-1923",children:["Resource details page update ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1923",children:"#1923"})]}),"\n",(0,o.jsx)(n.p,{children:"If you click on the arrow icon next to a resource name it will open up a details page (similarly to how clicking on a container in the container list opens up a details page)."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229542404-bae44f89-5cd3-4baf-8b08-e934e4462697.gif",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",children:[(0,o.jsx)(n.code,{children:"Node's container image"})," field added to ",(0,o.jsx)(n.code,{children:"Create a Kind cluster"})," form ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3508",children:"#3508"})]}),"\n",(0,o.jsxs)(n.p,{children:["The new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/42176370/b2a63faf-629f-436d-8496-7c0cd8158679",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"support-docker-desktop-extensions-using-a-backend-3435",children:["Support Docker Desktop extensions using a backend ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3435",children:"#3435"})]}),"\n",(0,o.jsx)(n.p,{children:"Podman Desktop now loads the containers in the backend as described in the vm section of extension descriptor the same way as Docker Desktop does."}),"\n",(0,o.jsxs)(n.h3,{id:"initial-onboarding-implementation-for-podman-experimental-3308",children:["Initial onboarding implementation for podman (experimental) ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3308",children:"#3308"})]}),"\n",(0,o.jsx)(n.p,{children:"This is the initial implementation for the onboarding feature. It only covers a simple onboarding for podman. Check system requirements -> install podman -> yay! Done!"}),"\n",(0,o.jsx)(n.h3,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updating videos to be adaptive for mobile by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3229",children:"#3229"})]}),"\n",(0,o.jsxs)(n.li,{children:["Consistent max width and padding in settings by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3232",children:"#3232"})]}),"\n",(0,o.jsxs)(n.li,{children:["Settings navigation bar resizing by @deboer-tim in ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3231",children:"#3231"})]}),"\n",(0,o.jsxs)(n.li,{children:["Move new registry button to header by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3245",children:"#3245"})]}),"\n",(0,o.jsxs)(n.li,{children:["Bigger lima logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3248",children:"#3248"})]}),"\n",(0,o.jsxs)(n.li,{children:["Horizontal docker logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3236",children:"#3236"})]}),"\n",(0,o.jsxs)(n.li,{children:["Respect LIMA_HOME environment variable by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3254",children:"#3254"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add check before writing to terminal by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3263",children:"#3263"})]}),"\n",(0,o.jsxs)(n.li,{children:["Wait until remote side has fully initialized the extensions by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3257",children:"#3257"})]}),"\n",(0,o.jsxs)(n.li,{children:["Fix loader not centered horizontally by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3270",children:"#3270"})]}),"\n",(0,o.jsxs)(n.li,{children:["Troubleshooting still waiting after failure by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3354",children:"#3354"})]}),"\n",(0,o.jsxs)(n.li,{children:["Store error for build by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3365",children:"#3365"})]}),"\n",(0,o.jsxs)(n.li,{children:["Missing checkbox tooltips by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3380",children:"#3380"})]}),"\n",(0,o.jsxs)(n.li,{children:["Load compose logs async not await by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3377",children:"#3377"})]}),"\n",(0,o.jsxs)(n.li,{children:["Set rootful connection when starting rootful machine by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3364",children:"#3364"})]}),"\n",(0,o.jsxs)(n.li,{children:["Default last page by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3388",children:"#3388"})]}),"\n",(0,o.jsxs)(n.li,{children:["Avoid dashboard displaying providers starting while they don't by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3451",children:"#3451"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not use extensionInfo until it is defined by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3450",children:"#V"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow BASIC authentication (all caps) by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3471",children:"#3471"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow single domain registry such as localhost:5000 by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3468",children:"#3468"})]}),"\n",(0,o.jsxs)(n.li,{children:["Create /usr/local/bin directory if it does not exist on binary install by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3425",children:"#3425"})]}),"\n",(0,o.jsxs)(n.li,{children:["Only delete selected pods by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3378",children:"#"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add back 'Done' text on the button by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3487",children:"#3487"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not wait for more than 5s when checking for podman ping by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3497",children:"#3497"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add proxy support for extension using patching get and request approach by @dgolovin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2825",children:"#2825"})]}),"\n",(0,o.jsxs)(n.li,{children:["Refresh component when field is updated by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3525",children:"#3525"})]}),"\n",(0,o.jsxs)(n.li,{children:["Higher-res icons for featured extensions list by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3511",children:"#3511"})]}),"\n",(0,o.jsxs)(n.li,{children:["Main nav selection by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3510",children:"#3510"})]}),"\n",(0,o.jsxs)(n.li,{children:["kube event error when switching context by @jeffmaury ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3494",children:"#3494"})]}),"\n",(0,o.jsxs)(n.li,{children:["Reset error message each time we pull image by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3550",children:"#3550"})]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,o.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,o.jsxs)(n.p,{children:["A warm welcome to ",(0,o.jsx)(n.a,{href:"https://github.com/rostalan",children:"@rostalan"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/axel7083",children:"@axel7083"})," who made their first contribution to the project in this release."]}),"\n",(0,o.jsx)(n.h3,{id:"final-notes",children:"Final Notes"}),"\n",(0,o.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.3.0",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Get the latest release from the ",(0,o.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},46714:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/title-bug-swatting-8a5058958e05e545e61c1e5e689335d3.png"}}]);
\ No newline at end of file
diff --git a/assets/js/9f97f9d1.a2b38731.js b/assets/js/9f97f9d1.a2b38731.js
deleted file mode 100644
index e9b702472a1..00000000000
--- a/assets/js/9f97f9d1.a2b38731.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6843],{31482:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var o=s(24246),t=s(71670),i=s(92975);const a={title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},l=void 0,r={permalink:"/blog/podman-desktop-release-1.3",source:"@site/blog/2023-08-16-release-1.3.md",title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",date:"2023-08-16T00:00:00.000Z",formattedDate:"August 16, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:5.195,hasTruncateMarker:!1,authors:[{name:"Denis Golovin",title:"Principal Software Engineer",url:"https://github.com/cdrage",imageURL:"https://github.com/dgolovin.png",key:"dgolovin"}],frontMatter:{title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"},nextItem:{title:"Release Notes - Podman Desktop 1.2",permalink:"/blog/podman-desktop-release-1.2"}},d={authorsImageUrls:[void 0]},c=[{value:"Release Details",id:"release-details",level:2},{value:"Compose group Logs tab #3176",id:"compose-group-logs-tab-3176",level:3},{value:"Podman user-mode networking support to Windows/WSL #3251",id:"podman-user-mode-networking-support-to-windowswsl-3251",level:3},{value:"Compose group Summary tab #3317,",id:"compose-group-summary-tab-3317",level:3},{value:"Compose group Inspect tab #3316",id:"compose-group-inspect-tab-3316",level:3},{value:"Deploy to kubernetes in compose actions #3299",id:"deploy-to-kubernetes-in-compose-actions-3299",level:3},{value:"Generate Kube in Compose actions and Kube tab in compose details #3253",id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",level:3},{value:"Install multiple extensions using extension pack #3150",id:"install-multiple-extensions-using-extension-pack-3150",level:3},{value:"Customize icons from extension #3131",id:"customize-icons-from-extension-3131",level:3},{value:"Resource details page update #1923",id:"resource-details-page-update-1923",level:3},{value:"Node's container image field added to Create a Kind cluster form #3508",id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",level:3},{value:"Support Docker Desktop extensions using a backend #3435",id:"support-docker-desktop-extensions-using-a-backend-3435",level:3},{value:"Initial onboarding implementation for podman (experimental) #3308",id:"initial-onboarding-implementation-for-podman-experimental-3308",level:3},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:3},{value:"Community Thank You",id:"community-thank-you",level:3},{value:"Final Notes",id:"final-notes",level:3}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Podman Desktop 1.3 Release! \ud83c\udf89"}),"\n",(0,o.jsx)(n.p,{children:"This is essentially a bug-fix release to fix various issues in UI, extension engine and featured extensions, but as usual we also added a few new features."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman 4.6.1"}),": Podman 4.6.1 included in Windows and Mac installers"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman user-mode networking support to Windows/WSL"}),": A new switch `User mode networking' is available when creating Podman machine on Windows for Podman 4.6.0+ to configure podman to work in certain VPN setups and other specialized networking configurations"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Compose group new UI elements"}),": You can now see summary, inspect, deploy to kubernetes, generate kube yaml and view logs"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Extension packs and extension dependencies"}),": Install group of extensions in one click"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Resource details page update"}),": See summary and log for resource"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Create Kind cluster form update"}),": A new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Support Docker Desktop extensions using a backend"}),": When loading Docker Desktop extension the containers are created in the backend as described in the vm section of extension's descriptor"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman Initial Onboarding (preview)"}),": Install and configure podman using included installer"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Podman Desktop 1.3 is now available. ",(0,o.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Podman-desktop-1-3-bug-swatting",src:s(46714).Z+"",width:"1920",height:"1080"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-logs-tab-3176",children:["Compose group Logs tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3176",children:"#3176"})]}),"\n",(0,o.jsx)(n.p,{children:"When clicking on the group of containers, you can now view the logs of the entire group of compose containers and don't need to open\nlog for every component individually."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/6422176/743a4ffc-e291-4697-8ac5-8052cc921946",alt:"Screenshot 2023-07-11 at 12 48 47 PM"})}),"\n",(0,o.jsxs)(n.h3,{id:"podman-user-mode-networking-support-to-windowswsl-3251",children:["Podman user-mode networking support to Windows/WSL ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3251",children:"#3251"})]}),"\n",(0,o.jsx)(n.p,{children:"Certain VPN setups or other specialized networking configs will block traffic from the virtual WSL networking device, resulting in the podman WSL backend from being unable to contact systems on the VPN, and potentially losing internet access altogether. The new switch allows you to create a podman VM machine configured to work correctly in mentioned above networking environments."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/620330/2f521576-b6a6-42b5-b24d-08df5b432608",alt:"user"})}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-summary-tab-3317",children:["Compose group Summary tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3317",children:"#3317"}),","]}),"\n",(0,o.jsx)(n.p,{children:"Compose group Summary tab shows all containers in the group and let you navigate to Details page for specific container."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://github.com/containers/podman-desktop/assets/620330/6dd6dacd-a0d8-478d-b11e-2b414108bd20",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-inspect-tab-3316",children:["Compose group Inspect tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3316",children:"#3316"})]}),"\n",(0,o.jsx)(n.p,{children:'Compose group Inspect tab shows an array of "container inspect" from docker / podman.'}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/255658081-4a2ce4ce-bdc7-435d-9114-1071ab1ec3c5.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"deploy-to-kubernetes-in-compose-actions-3299",children:[(0,o.jsx)(n.code,{children:"Deploy to kubernetes"})," in compose actions ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3295",children:"#3299"})]}),"\n",(0,o.jsx)(n.p,{children:"A button to deploy to kubernetes added to Compose group."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254973806-1ce57225-3422-4d36-8d09-b70a2825869f.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",children:[(0,o.jsx)(n.code,{children:"Generate Kube"})," in Compose actions and ",(0,o.jsx)(n.code,{children:"Kube"})," tab in compose details ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3253",children:"#3253"})]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Generate Kube"}),' item added to Compose actions and "Kube" tab is now available in Compose details view.']}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254337805-98268722-4dde-4c0e-afdf-4873fa4f43fe.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"install-multiple-extensions-using-extension-pack-3150",children:["Install multiple extensions using extension pack ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3150",children:"#3150"})]}),"\n",(0,o.jsx)(n.p,{children:"An Extension pack introduced in Extension engine is a way to declare set of extensions to install them all at once."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251741571-0cd4a199-06f4-4890-8414-4e93ca9178bc.mp4",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"customize-icons-from-extension-3131",children:["Customize icons from extension ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3131",children:"#3131"})]}),"\n",(0,o.jsxs)(n.p,{children:["Extensions now can customize icons for list elements using ",(0,o.jsx)(n.code,{children:"when"})," clause."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/49404737/7aae5347-4f07-4854-ba11-1f629b5ccf22",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"resource-details-page-update-1923",children:["Resource details page update ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1923",children:"#1923"})]}),"\n",(0,o.jsx)(n.p,{children:"If you click on the arrow icon next to a resource name it will open up a details page (similarly to how clicking on a container in the container list opens up a details page)."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229542404-bae44f89-5cd3-4baf-8b08-e934e4462697.gif",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",children:[(0,o.jsx)(n.code,{children:"Node's container image"})," field added to ",(0,o.jsx)(n.code,{children:"Create a Kind cluster"})," form ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3508",children:"#3508"})]}),"\n",(0,o.jsxs)(n.p,{children:["The new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/42176370/b2a63faf-629f-436d-8496-7c0cd8158679",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"support-docker-desktop-extensions-using-a-backend-3435",children:["Support Docker Desktop extensions using a backend ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3435",children:"#3435"})]}),"\n",(0,o.jsx)(n.p,{children:"Podman Desktop now loads the containers in the backend as described in the vm section of extension descriptor the same way as Docker Desktop does."}),"\n",(0,o.jsxs)(n.h3,{id:"initial-onboarding-implementation-for-podman-experimental-3308",children:["Initial onboarding implementation for podman (experimental) ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3308",children:"#3308"})]}),"\n",(0,o.jsx)(n.p,{children:"This is the initial implementation for the onboarding feature. It only covers a simple onboarding for podman. Check system requirements -> install podman -> yay! Done!"}),"\n",(0,o.jsx)(n.h3,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updating videos to be adaptive for mobile by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3229",children:"#3229"})]}),"\n",(0,o.jsxs)(n.li,{children:["Consistent max width and padding in settings by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3232",children:"#3232"})]}),"\n",(0,o.jsxs)(n.li,{children:["Settings navigation bar resizing by @deboer-tim in ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3231",children:"#3231"})]}),"\n",(0,o.jsxs)(n.li,{children:["Move new registry button to header by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3245",children:"#3245"})]}),"\n",(0,o.jsxs)(n.li,{children:["Bigger lima logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3248",children:"#3248"})]}),"\n",(0,o.jsxs)(n.li,{children:["Horizontal docker logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3236",children:"#3236"})]}),"\n",(0,o.jsxs)(n.li,{children:["Respect LIMA_HOME environment variable by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3254",children:"#3254"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add check before writing to terminal by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3263",children:"#3263"})]}),"\n",(0,o.jsxs)(n.li,{children:["Wait until remote side has fully initialized the extensions by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3257",children:"#3257"})]}),"\n",(0,o.jsxs)(n.li,{children:["Fix loader not centered horizontally by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3270",children:"#3270"})]}),"\n",(0,o.jsxs)(n.li,{children:["Troubleshooting still waiting after failure by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3354",children:"#3354"})]}),"\n",(0,o.jsxs)(n.li,{children:["Store error for build by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3365",children:"#3365"})]}),"\n",(0,o.jsxs)(n.li,{children:["Missing checkbox tooltips by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3380",children:"#3380"})]}),"\n",(0,o.jsxs)(n.li,{children:["Load compose logs async not await by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3377",children:"#3377"})]}),"\n",(0,o.jsxs)(n.li,{children:["Set rootful connection when starting rootful machine by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3364",children:"#3364"})]}),"\n",(0,o.jsxs)(n.li,{children:["Default last page by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3388",children:"#3388"})]}),"\n",(0,o.jsxs)(n.li,{children:["Avoid dashboard displaying providers starting while they don't by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3451",children:"#3451"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not use extensionInfo until it is defined by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3450",children:"#V"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow BASIC authentication (all caps) by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3471",children:"#3471"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow single domain registry such as localhost:5000 by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3468",children:"#3468"})]}),"\n",(0,o.jsxs)(n.li,{children:["Create /usr/local/bin directory if it does not exist on binary install by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3425",children:"#3425"})]}),"\n",(0,o.jsxs)(n.li,{children:["Only delete selected pods by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3378",children:"#"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add back 'Done' text on the button by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3487",children:"#3487"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not wait for more than 5s when checking for podman ping by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3497",children:"#3497"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add proxy support for extension using patching get and request approach by @dgolovin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2825",children:"#2825"})]}),"\n",(0,o.jsxs)(n.li,{children:["Refresh component when field is updated by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3525",children:"#3525"})]}),"\n",(0,o.jsxs)(n.li,{children:["Higher-res icons for featured extensions list by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3511",children:"#3511"})]}),"\n",(0,o.jsxs)(n.li,{children:["Main nav selection by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3510",children:"#3510"})]}),"\n",(0,o.jsxs)(n.li,{children:["kube event error when switching context by @jeffmaury ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3494",children:"#3494"})]}),"\n",(0,o.jsxs)(n.li,{children:["Reset error message each time we pull image by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3550",children:"#3550"})]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,o.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,o.jsxs)(n.p,{children:["A warm welcome to ",(0,o.jsx)(n.a,{href:"https://github.com/rostalan",children:"@rostalan"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/axel7083",children:"@axel7083"})," who made their first contribution to the project in this release."]}),"\n",(0,o.jsx)(n.h3,{id:"final-notes",children:"Final Notes"}),"\n",(0,o.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.3.0",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Get the latest release from the ",(0,o.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},46714:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/title-bug-swatting-8a5058958e05e545e61c1e5e689335d3.png"}}]);
\ No newline at end of file
diff --git a/assets/js/a00af9f0.aa516391.js b/assets/js/a00af9f0.aa516391.js
new file mode 100644
index 00000000000..c75862d58dd
--- /dev/null
+++ b/assets/js/a00af9f0.aa516391.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[822],{5416:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var t=s(24246),i=s(71670),o=s(92975),a=s.n(o);const r={title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},l=void 0,d={permalink:"/blog/podman-desktop-release-1.5",source:"@site/blog/2023-11-03-release-1.5.md",title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",date:"2023-11-03T00:00:00.000Z",formattedDate:"November 3, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"},{label:"onboarding",permalink:"/blog/tags/onboarding"},{label:"compose",permalink:"/blog/tags/compose"},{label:"extensions",permalink:"/blog/tags/extensions"},{label:"settings",permalink:"/blog/tags/settings"}],readingTime:8.14,hasTruncateMarker:!1,authors:[{name:"M\xe1ir\xedn Duffy",title:"User Experience Designer",url:"https://github.com/mairin",imageURL:"https://github.com/mairin.png",key:"duffy"}],frontMatter:{title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},unlisted:!1,prevItem:{title:"Share your local podman images with the Kubernetes cluster",permalink:"/blog/sharing-podman-images-with-kubernetes-cluster"},nextItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"}},h={authorsImageUrls:[void 0]},c=[{value:"Release Details",id:"release-details",level:2},{value:"Onboarding",id:"onboarding",level:3},{value:"Command Palette",id:"command-palette",level:3},{value:"Expanded "Summary" tab for Kubernetes pods",id:"expanded-summary-tab-for-kubernetes-pods",level:3},{value:"Environment file support",id:"environment-file-support",level:3},{value:"Enhancements to the Settings area",id:"enhancements-to-the-settings-area",level:3},{value:"Improved user experience for state changes",id:"improved-user-experience-for-state-changes",level:3},{value:"Extension API improvements",id:"extension-api-improvements",level:3},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2},{value:"Known Issues",id:"known-issues",level:3},{value:"Known Issues: Podman Desktop 1.5.2",id:"known-issues-podman-desktop-152",level:4},{value:"Fixed Issues",id:"fixed-issues",level:3},{value:"Where to Download",id:"where-to-download",level:3}];function p(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:o}=n;return o||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.5 Release! \ud83c\udf89"}),"\n",(0,t.jsxs)(n.p,{children:["With this release of Podman Desktop, we're introducing ",(0,t.jsx)(n.strong,{children:"a new onboarding feature"})," that we hope will earn your \ud83e\uddad seal of approval! But wait... there's so much more!"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Onboarding"}),": Guided setup and configuration of ",(0,t.jsx)(n.strong,{children:"Podman"})," and ",(0,t.jsx)(n.strong,{children:"Compose"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.7.2"}),": ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases",children:"Podman 4.7.2"})," is now included in Windows and Mac installers"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Command Palette"}),": Gain easy access to various commands via a new keyboard-driven command palette"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:'Expanded "Summary" tab for Kubernetes pods'}),': Go deep with extended details on Kubernetes pods in the pod "Summary" tab']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Environment file support"}),": Chart out environment variables for new containers to access on creation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enhancements to the Settings area"}),": Get your bearings with improved Docker compatibility mode controls"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Improved user experience for state changes"}),": No more dead reckoning on container state with improved visual indication of status"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extension API improvements"}),": A boatload of improvements to the extension API enabling more goodness from \ud83e\uddad Podman Desktop's extensions"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.5 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-5-hero",src:s(90973).Z+"",width:"1920",height:"1080"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"onboarding",children:"Onboarding"}),"\n",(0,t.jsx)(n.p,{children:"We are introducing a new feature providing guided flows for the initial setup of specific \ud83e\uddad Podman Desktop extensions. Release 1.5 features two new onboarding flows: Podman and Compose."}),"\n",(0,t.jsxs)(n.p,{children:['To start the Podman onboarding flow, you can start from the dashboard notification by clicking the "Set up" button:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280362279-598cc052-5ea4-4c31-849c-da9bbbcc3e42.png",alt:"podman-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280363859-f35b85f8-1dd4-4b7f-a995-25fe5d1ccced.png",alt:"podman-onboarding"})]}),"\n",(0,t.jsxs)(n.p,{children:["Visit ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Resources"]}),' screen and click the Compose "Setup ..." button in order to start Compose onboarding:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280276847-ca0558ab-70ad-48cc-8dd5-67e3eb465a62.png",alt:"compose-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280277936-77ba0fb2-5cb0-41de-a7cf-1a3d6400fd89.png",alt:"compose-onboarding"})]}),"\n",(0,t.jsx)(n.h3,{id:"command-palette",children:"Command Palette"}),"\n",(0,t.jsxs)(n.p,{children:["A new, search-driven command palette is now available to enable quick access to various commands available across \ud83e\uddad Podman Desktop. You can try this new tool out by hitting the F1 key. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4081",children:"#4081"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3979",children:"#3979"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/270362431-5aaa6a1b-6df5-4b66-a811-cdd148d02ad6.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"expanded-summary-tab-for-kubernetes-pods",children:'Expanded "Summary" tab for Kubernetes pods'}),"\n",(0,t.jsx)(n.p,{children:'Kubernetes pods now offer a more comprehensive set of information under the "Summary" tab, including networking, volumes, environment variables, and other key metadata.'}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/272972815-bed96f3a-6b13-45d3-a13b-74eacb27a4cd.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"environment-file-support",children:"Environment file support"}),"\n",(0,t.jsxs)(n.p,{children:["When creating a container from the Images list, there's now an option to provide an environment file to set env variables for the new container. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4026",children:"#4026"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4025",children:"#4025"})]}),"\n",(0,t.jsx)(n.h3,{id:"enhancements-to-the-settings-area",children:"Enhancements to the Settings area"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience for enabling or disabling Docker compatibility is improved, with a new entry in the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screen that includes contextual guidance. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4093",children:"#4093"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/270497318-902b2566-62ad-4ee6-87af-6a9a2705de99.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"improved-user-experience-for-state-changes",children:"Improved user experience for state changes"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience around state changes for containers, pods, and other objects in the UI is improved, with clear status messages and improved animated visual indicator of state changes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4056",children:"#4056"})]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027524-f5176cf9-462f-4024-920a-b4a906c7d30d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027533-70e152ec-5bbf-45ad-9f1d-563752464655.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"extension-api-improvements",children:"Extension API improvements"}),"\n",(0,t.jsx)(n.p,{children:"The \ud83e\uddad Podman Desktop extension API received many improvements, including:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In addition to pushing and listing image from an extension, it's now possible to pull images from a \ud83e\uddad Podman Desktop extension ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4155",children:"#4155"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The \ud83e\uddad Podman Desktop extension API has been enhanced with both the ability to list images & networks and the ability to create containers & networks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4172",children:"#4172"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["\ud83e\uddad Podman Desktop extensions now have a consistent way to run administrative tasks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4049",children:"#4049"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions now have the ability to register a custom Kubernetes config generator. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The ability of extensions to add commands to UI menus has been extended; previously for action menus it was only available in the Image list screen. It is now possible for extensions to add commands to the action menus of items listed on the Containers list screen as well. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947"})," & ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions have gained the ability to contribute menu items in the UI based on specific conditions. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enhanced logic for displaying or hiding properties listed under the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(o,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screens is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4159",children:"#4159"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/271650937-3991565c-12a4-4e6c-a315-9343bfa25f65.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The progress of loading an image into Kind is now visible as a task in the task manager. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/42176370/270154775-eb7007b4-fd0e-4287-be9e-40ffc412de35.png",alt:"kind-progress-task"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["It's now possible to start a new Podman machine right after creation, or you can create it and wait to start it later. It's up to you! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4046",children:"#4046"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/269941187-f4768833-ecfc-4d0b-8acf-d4afedb428d9.png",alt:"podman-start-now-or-later"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The Podman machine and Kubernetes provider creation forms have an updated look & feel consisted with other forms in the user interface, along with minor bug fixes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4317",children:"#4317"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/274694157-fe89f3bc-e5b8-4735-96e9-669fe52c7a41.png",alt:"Updated provider creation forms"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The empty screen message shown when a search filter results in no matches now provides a message specific to filter matching, including the specific filter terms and an explicit button for clearing the filter. Previously, the screen displayed a generic message about how to create new objects of the type displayed on the screen, which led to some confusion about the status of the system. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3988",children:"#3988"})]}),"\n"]}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/269291090-13e724f7-252f-4915-bb04-00665001d21d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["New support for adding spin animations to icons is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4188",children:"#4188"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["There is a new indeterminate progress bar type available for the task manager; this is meant for providing limited status for actions whose APIs do not provide detailed status information. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["For authenticating as admin to perform administrative tasks, \ud83e\uddad Podman Desktop now provides touchID support for macOS. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4050",children:"#4050"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/436777/248588015-f08115bd-d211-43ad-bddd-286d7b3a7056.png",alt:"touchID-support"})}),"\n",(0,t.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/269859758-47581e2b-8469-4e9c-822c-f4fddf46684d.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Support for connecting to interactive terminals for containers via tty was added. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3900",children:"#3900"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["It's now more clear which container/pod providers will autostart when \ud83e\uddad Podman Desktop starts. Previously autostart had both a global and a per-provider setting. It has been simplified by removing the global setting. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3840",children:"#3840"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "Working with containers" section of the documentation has been reworked and improved. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3951",children:"#3951"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The disable registry command was not blocking subsequent pulls from disabled registries. This has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4183",children:"#4183"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Some users behind network proxies were unable to complete workflow involving the download of online resources. The mechanism for fetching these resources has been fixed to be proxy compatible to address this issue. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3994",children:"#3994"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The status of pods running in Kubernetes that are undergoing the deletion process is now accurately reflected in the \ud83e\uddad Podman Desktop UI. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3877",children:"#3877"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The image details page always listed the image as being "not used" even when it was. This has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3985",children:"#3985"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Previously, deleting a specific image tag would cause all tags with the same Image ID to be deleted. This has been fixed so only the selected image tag will be deleted. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3837",children:"#3837"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Could not view the pod details for some remote Kubernetes cluster pods due to an encoding error. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4371",children:"#4371"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Error logs were being tracked separately from the actions they applied to. This has been addressed for kind cluster creation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4427",children:"#4427"})," and Compose installation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4407",children:"#4407"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['For Linux users, \ud83e\uddad Podman Desktop previously did not appear under the "Development" menu when installed via Flatpak; it appeared under "Utilities." \ud83e\uddad Podman Desktop now appears under the "Development" menu. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3911",children:"#3911"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['Podman Machine names are no longer prefixed with the "Podman Machine" string. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3878",children:"#3878"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/267378447-aafdfbd7-f005-4b94-8626-9e11eec61b95.png",alt:"touchID-support"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The initial action state of pods and containers was being displayed as "STARTING" regardless of actual state; this has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3889",children:"#3889"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Resizing the application window no longer makes the last lines of a container's terminal invisible. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3993",children:"#3993"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An issue with incorrect terminal behavior in response to long lines in the terminal attached to a container has been resolved. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3955",children:"#3955"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["A spacing issue on the run image form has been corrected. [#4089]",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4089",children:"https://github.com/containers/podman-desktop/pull/4089"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "podify" icon & button on the Containers list was unusually large in release 1.4. That regression has been corrected in this release. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4122",children:"#4122"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An error in the instructions for Windows users on migrating from Docker has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make \ud83e\uddad Podman Desktop even better. In this\nrelease we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"afbjorklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4373",children:"#4373 - docs: fix broken links and add lima onboarding"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4372",children:"#4372 - docs: clear up lima column on containers page"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4091",children:"#4091 - fix: avoid errors with unexpected JSON input"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4098",children:"#4098 - docs: Lima onboarding details"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3854",children:"#3854 - fix: check if machine init rootful flag supported"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/axel7083",children:"axel7083"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061 - feat: adding task progress for kind"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970 - feat: extension can register custom kube generator"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959 - feat: add when property to extensions menus"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016 - feat: indeterminate progress bar"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963 - fix: ContainerList propagating containers in ComposeActions and PodActions"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947 - feat: extend menus capabilities"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/ayushrakesh",children:"ayushrakesh"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4415#",children:"#4415 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/eltociear",children:"eltociear"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4194",children:"#4194 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/foxydevloper",children:"foxydeveloper"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157 - docs: Correct windows instructions for migrating from docker"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/harsh-solanki21",children:"harsh-solanki21"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4162",children:"#4162 - fix: Removed fullstop from summary"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/rahul0x00",children:"rahul0x00"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4240",children:"#4240 - fix typos in README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/shelar1423",children:"shelar1423"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4221",children:"#4221 - chore: document property setting in EXTENSIONS.md"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsx)(n.h3,{id:"known-issues",children:"Known Issues"}),"\n",(0,t.jsx)(n.p,{children:"We have a discussion board topic where we have posted known issues with this release. If you run into problems, please check this list before filing a bug - if we already have an issue open for it, it saves you the time and trouble of filing, and there may be a workaround posted in the issue."}),"\n",(0,t.jsx)(n.h4,{id:"known-issues-podman-desktop-152",children:(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/discussions/4635",children:"Known Issues: Podman Desktop 1.5.2"})}),"\n",(0,t.jsx)(n.h3,{id:"fixed-issues",children:"Fixed Issues"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.5.0",children:"here"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"where-to-download",children:"Where to Download"}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},90973:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/onboarding-selkies-3ddb7cb6ee2cf9abed002b01f63b1822.png"}}]);
\ No newline at end of file
diff --git a/assets/js/a00af9f0.d9986f19.js b/assets/js/a00af9f0.d9986f19.js
deleted file mode 100644
index c1324a67fc4..00000000000
--- a/assets/js/a00af9f0.d9986f19.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[822],{5416:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>h});var t=s(24246),i=s(71670),o=s(92975);const a={title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},r=void 0,l={permalink:"/blog/podman-desktop-release-1.5",source:"@site/blog/2023-11-03-release-1.5.md",title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",date:"2023-11-03T00:00:00.000Z",formattedDate:"November 3, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"},{label:"onboarding",permalink:"/blog/tags/onboarding"},{label:"compose",permalink:"/blog/tags/compose"},{label:"extensions",permalink:"/blog/tags/extensions"},{label:"settings",permalink:"/blog/tags/settings"}],readingTime:8.14,hasTruncateMarker:!1,authors:[{name:"M\xe1ir\xedn Duffy",title:"User Experience Designer",url:"https://github.com/mairin",imageURL:"https://github.com/mairin.png",key:"duffy"}],frontMatter:{title:"Release Notes - Podman Desktop 1.5",description:"Podman Desktop 1.5 has been released!",slug:"podman-desktop-release-1.5",authors:"duffy",tags:["podman-desktop","release","kubernetes","openshift","onboarding","compose","extensions","settings"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.5/onboarding-selkies.png"},unlisted:!1,prevItem:{title:"Share your local podman images with the Kubernetes cluster",permalink:"/blog/sharing-podman-images-with-kubernetes-cluster"},nextItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"}},d={authorsImageUrls:[void 0]},h=[{value:"Release Details",id:"release-details",level:2},{value:"Onboarding",id:"onboarding",level:3},{value:"Command Palette",id:"command-palette",level:3},{value:"Expanded "Summary" tab for Kubernetes pods",id:"expanded-summary-tab-for-kubernetes-pods",level:3},{value:"Environment file support",id:"environment-file-support",level:3},{value:"Enhancements to the Settings area",id:"enhancements-to-the-settings-area",level:3},{value:"Improved user experience for state changes",id:"improved-user-experience-for-state-changes",level:3},{value:"Extension API improvements",id:"extension-api-improvements",level:3},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You",id:"community-thank-you",level:2},{value:"Final notes",id:"final-notes",level:2},{value:"Known Issues",id:"known-issues",level:3},{value:"Known Issues: Podman Desktop 1.5.2",id:"known-issues-podman-desktop-152",level:4},{value:"Fixed Issues",id:"fixed-issues",level:3},{value:"Where to Download",id:"where-to-download",level:3}];function c(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{Icon:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Icon",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Podman Desktop 1.5 Release! \ud83c\udf89"}),"\n",(0,t.jsxs)(n.p,{children:["With this release of Podman Desktop, we're introducing ",(0,t.jsx)(n.strong,{children:"a new onboarding feature"})," that we hope will earn your \ud83e\uddad seal of approval! But wait... there's so much more!"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Onboarding"}),": Guided setup and configuration of ",(0,t.jsx)(n.strong,{children:"Podman"})," and ",(0,t.jsx)(n.strong,{children:"Compose"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Podman 4.7.2"}),": ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman/releases",children:"Podman 4.7.2"})," is now included in Windows and Mac installers"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Command Palette"}),": Gain easy access to various commands via a new keyboard-driven command palette"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:'Expanded "Summary" tab for Kubernetes pods'}),': Go deep with extended details on Kubernetes pods in the pod "Summary" tab']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Environment file support"}),": Chart out environment variables for new containers to access on creation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enhancements to the Settings area"}),": Get your bearings with improved Docker compatibility mode controls"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Improved user experience for state changes"}),": No more dead reckoning on container state with improved visual indication of status"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Extension API improvements"}),": A boatload of improvements to the extension API enabling more goodness from \ud83e\uddad Podman Desktop's extensions"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Podman Desktop 1.5 is now available. ",(0,t.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Podman-desktop-1-5-hero",src:s(90973).Z+"",width:"1920",height:"1080"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,t.jsx)(n.h3,{id:"onboarding",children:"Onboarding"}),"\n",(0,t.jsx)(n.p,{children:"We are introducing a new feature providing guided flows for the initial setup of specific \ud83e\uddad Podman Desktop extensions. Release 1.5 features two new onboarding flows: Podman and Compose."}),"\n",(0,t.jsxs)(n.p,{children:['To start the Podman onboarding flow, you can start from the dashboard notification by clicking the "Set up" button:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280362279-598cc052-5ea4-4c31-849c-da9bbbcc3e42.png",alt:"podman-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280363859-f35b85f8-1dd4-4b7f-a995-25fe5d1ccced.png",alt:"podman-onboarding"})]}),"\n",(0,t.jsxs)(n.p,{children:["Visit ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Resources"]}),' screen and click the Compose "Setup ..." button in order to start Compose onboarding:\n',(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280276847-ca0558ab-70ad-48cc-8dd5-67e3eb465a62.png",alt:"compose-onboarding-start"}),"\n",(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/799683/280277936-77ba0fb2-5cb0-41de-a7cf-1a3d6400fd89.png",alt:"compose-onboarding"})]}),"\n",(0,t.jsx)(n.h3,{id:"command-palette",children:"Command Palette"}),"\n",(0,t.jsxs)(n.p,{children:["A new, search-driven command palette is now available to enable quick access to various commands available across \ud83e\uddad Podman Desktop. You can try this new tool out by hitting the F1 key. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4081",children:"#4081"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3979",children:"#3979"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/270362431-5aaa6a1b-6df5-4b66-a811-cdd148d02ad6.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"expanded-summary-tab-for-kubernetes-pods",children:'Expanded "Summary" tab for Kubernetes pods'}),"\n",(0,t.jsx)(n.p,{children:'Kubernetes pods now offer a more comprehensive set of information under the "Summary" tab, including networking, volumes, environment variables, and other key metadata.'}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/272972815-bed96f3a-6b13-45d3-a13b-74eacb27a4cd.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"environment-file-support",children:"Environment file support"}),"\n",(0,t.jsxs)(n.p,{children:["When creating a container from the Images list, there's now an option to provide an environment file to set env variables for the new container. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4026",children:"#4026"})," && ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4025",children:"#4025"})]}),"\n",(0,t.jsx)(n.h3,{id:"enhancements-to-the-settings-area",children:"Enhancements to the Settings area"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience for enabling or disabling Docker compatibility is improved, with a new entry in the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screen that includes contextual guidance. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4093",children:"#4093"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/270497318-902b2566-62ad-4ee6-87af-6a9a2705de99.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"improved-user-experience-for-state-changes",children:"Improved user experience for state changes"}),"\n",(0,t.jsxs)(n.p,{children:["The user experience around state changes for containers, pods, and other objects in the UI is improved, with clear status messages and improved animated visual indicator of state changes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4056",children:"#4056"})]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027524-f5176cf9-462f-4024-920a-b4a906c7d30d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/270027533-70e152ec-5bbf-45ad-9f1d-563752464655.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.h3,{id:"extension-api-improvements",children:"Extension API improvements"}),"\n",(0,t.jsx)(n.p,{children:"The \ud83e\uddad Podman Desktop extension API received many improvements, including:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["In addition to pushing and listing image from an extension, it's now possible to pull images from a \ud83e\uddad Podman Desktop extension ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4155",children:"#4155"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The \ud83e\uddad Podman Desktop extension API has been enhanced with both the ability to list images & networks and the ability to create containers & networks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4172",children:"#4172"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["\ud83e\uddad Podman Desktop extensions now have a consistent way to run administrative tasks. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4049",children:"#4049"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions now have the ability to register a custom Kubernetes config generator. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The ability of extensions to add commands to UI menus has been extended; previously for action menus it was only available in the Image list screen. It is now possible for extensions to add commands to the action menus of items listed on the Containers list screen as well. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947"})," & ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Extensions have gained the ability to contribute menu items in the UI based on specific conditions. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Enhanced logic for displaying or hiding properties listed under the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(a,{icon:"fa-solid fa-cog",size:"lg"}),"Settings > Preferences"]})," screens is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4159",children:"#4159"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/271650937-3991565c-12a4-4e6c-a315-9343bfa25f65.mov",width:"100%",height:"100%"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"other-notable-enhancements",children:"Other Notable Enhancements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The progress of loading an image into Kind is now visible as a task in the task manager. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/42176370/270154775-eb7007b4-fd0e-4287-be9e-40ffc412de35.png",alt:"kind-progress-task"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["It's now possible to start a new Podman machine right after creation, or you can create it and wait to start it later. It's up to you! ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4046",children:"#4046"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/269941187-f4768833-ecfc-4d0b-8acf-d4afedb428d9.png",alt:"podman-start-now-or-later"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The Podman machine and Kubernetes provider creation forms have an updated look & feel consisted with other forms in the user interface, along with minor bug fixes. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4317",children:"#4317"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/274694157-fe89f3bc-e5b8-4735-96e9-669fe52c7a41.png",alt:"Updated provider creation forms"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["The empty screen message shown when a search filter results in no matches now provides a message specific to filter matching, including the specific filter terms and an explicit button for clearing the filter. Previously, the screen displayed a generic message about how to create new objects of the type displayed on the screen, which led to some confusion about the status of the system. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3988",children:"#3988"})]}),"\n"]}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/19958075/269291090-13e724f7-252f-4915-bb04-00665001d21d.mov",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["New support for adding spin animations to icons is now available. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4188",children:"#4188"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["There is a new indeterminate progress bar type available for the task manager; this is meant for providing limited status for actions whose APIs do not provide detailed status information. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["For authenticating as admin to perform administrative tasks, \ud83e\uddad Podman Desktop now provides touchID support for macOS. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4050",children:"#4050"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/436777/248588015-f08115bd-d211-43ad-bddd-286d7b3a7056.png",alt:"touchID-support"})}),"\n",(0,t.jsx)(o.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/269859758-47581e2b-8469-4e9c-822c-f4fddf46684d.mp4",width:"100%",height:"100%"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Support for connecting to interactive terminals for containers via tty was added. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3900",children:"#3900"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["It's now more clear which container/pod providers will autostart when \ud83e\uddad Podman Desktop starts. Previously autostart had both a global and a per-provider setting. It has been simplified by removing the global setting. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3840",children:"#3840"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "Working with containers" section of the documentation has been reworked and improved. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3951",children:"#3951"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The disable registry command was not blocking subsequent pulls from disabled registries. This has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4183",children:"#4183"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Some users behind network proxies were unable to complete workflow involving the download of online resources. The mechanism for fetching these resources has been fixed to be proxy compatible to address this issue. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3994",children:"#3994"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["The status of pods running in Kubernetes that are undergoing the deletion process is now accurately reflected in the \ud83e\uddad Podman Desktop UI. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3877",children:"#3877"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The image details page always listed the image as being "not used" even when it was. This has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3985",children:"#3985"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Previously, deleting a specific image tag would cause all tags with the same Image ID to be deleted. This has been fixed so only the selected image tag will be deleted. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3837",children:"#3837"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Could not view the pod details for some remote Kubernetes cluster pods due to an encoding error. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4371",children:"#4371"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Error logs were being tracked separately from the actions they applied to. This has been addressed for kind cluster creation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4427",children:"#4427"})," and Compose installation failure ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4407",children:"#4407"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['For Linux users, \ud83e\uddad Podman Desktop previously did not appear under the "Development" menu when installed via Flatpak; it appeared under "Utilities." \ud83e\uddad Podman Desktop now appears under the "Development" menu. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3911",children:"#3911"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['Podman Machine names are no longer prefixed with the "Podman Machine" string. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3878",children:"#3878"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://user-images.githubusercontent.com/19958075/267378447-aafdfbd7-f005-4b94-8626-9e11eec61b95.png",alt:"touchID-support"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The initial action state of pods and containers was being displayed as "STARTING" regardless of actual state; this has been corrected. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3889",children:"#3889"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Resizing the application window no longer makes the last lines of a container's terminal invisible. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3993",children:"#3993"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An issue with incorrect terminal behavior in response to long lines in the terminal attached to a container has been resolved. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3955",children:"#3955"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["A spacing issue on the run image form has been corrected. [#4089]",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4089",children:"https://github.com/containers/podman-desktop/pull/4089"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:['The "podify" icon & button on the Containers list was unusually large in release 1.4. That regression has been corrected in this release. ',(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4122",children:"#4122"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["An error in the instructions for Windows users on migrating from Docker has been corrected. ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,t.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make \ud83e\uddad Podman Desktop even better. In this\nrelease we received pull requests from the following people:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/afbjorklund",children:"afbjorklund"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4373",children:"#4373 - docs: fix broken links and add lima onboarding"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4372",children:"#4372 - docs: clear up lima column on containers page"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4091",children:"#4091 - fix: avoid errors with unexpected JSON input"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4098",children:"#4098 - docs: Lima onboarding details"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3854",children:"#3854 - fix: check if machine init rootful flag supported"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/axel7083",children:"axel7083"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4061",children:"#4061 - feat: adding task progress for kind"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3970",children:"#3970 - feat: extension can register custom kube generator"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3959",children:"#3959 - feat: add when property to extensions menus"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4016",children:"#4016 - feat: indeterminate progress bar"}),", ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3963",children:"#3963 - fix: ContainerList propagating containers in ComposeActions and PodActions"}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3947",children:"#3947 - feat: extend menus capabilities"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/ayushrakesh",children:"ayushrakesh"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4415#",children:"#4415 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/eltociear",children:"eltociear"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4194",children:"#4194 - Update README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/foxydevloper",children:"foxydeveloper"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4157",children:"#4157 - docs: Correct windows instructions for migrating from docker"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/harsh-solanki21",children:"harsh-solanki21"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4162",children:"#4162 - fix: Removed fullstop from summary"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/rahul0x00",children:"rahul0x00"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4240",children:"#4240 - fix typos in README.md"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/shelar1423",children:"shelar1423"})," in ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/4221",children:"#4221 - chore: document property setting in EXTENSIONS.md"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"final-notes",children:"Final notes"}),"\n",(0,t.jsx)(n.h3,{id:"known-issues",children:"Known Issues"}),"\n",(0,t.jsx)(n.p,{children:"We have a discussion board topic where we have posted known issues with this release. If you run into problems, please check this list before filing a bug - if we already have an issue open for it, it saves you the time and trouble of filing, and there may be a workaround posted in the issue."}),"\n",(0,t.jsx)(n.h4,{id:"known-issues-podman-desktop-152",children:(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/discussions/4635",children:"Known Issues: Podman Desktop 1.5.2"})}),"\n",(0,t.jsx)(n.h3,{id:"fixed-issues",children:"Fixed Issues"}),"\n",(0,t.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.5.0",children:"here"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"where-to-download",children:"Where to Download"}),"\n",(0,t.jsxs)(n.p,{children:["Get the latest release from the ",(0,t.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,t.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function p(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},90973:(e,n,s)=>{s.d(n,{Z:()=>t});const t=s.p+"assets/images/onboarding-selkies-3ddb7cb6ee2cf9abed002b01f63b1822.png"}}]);
\ No newline at end of file
diff --git a/assets/js/f0e3a130.6dc4aaae.js b/assets/js/f0e3a130.6dc4aaae.js
deleted file mode 100644
index a1c1cf6d443..00000000000
--- a/assets/js/f0e3a130.6dc4aaae.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5776],{11316:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var o=s(24246),t=s(71670),i=s(92975);const a={title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},l=void 0,r={permalink:"/blog/podman-desktop-release-1.3",source:"@site/blog/2023-08-16-release-1.3.md",title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",date:"2023-08-16T00:00:00.000Z",formattedDate:"August 16, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:5.195,hasTruncateMarker:!1,authors:[{name:"Denis Golovin",title:"Principal Software Engineer",url:"https://github.com/cdrage",imageURL:"https://github.com/dgolovin.png",key:"dgolovin"}],frontMatter:{title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"},nextItem:{title:"Release Notes - Podman Desktop 1.2",permalink:"/blog/podman-desktop-release-1.2"}},d={authorsImageUrls:[void 0]},c=[{value:"Release Details",id:"release-details",level:2},{value:"Compose group Logs tab #3176",id:"compose-group-logs-tab-3176",level:3},{value:"Podman user-mode networking support to Windows/WSL #3251",id:"podman-user-mode-networking-support-to-windowswsl-3251",level:3},{value:"Compose group Summary tab #3317,",id:"compose-group-summary-tab-3317",level:3},{value:"Compose group Inspect tab #3316",id:"compose-group-inspect-tab-3316",level:3},{value:"Deploy to kubernetes in compose actions #3299",id:"deploy-to-kubernetes-in-compose-actions-3299",level:3},{value:"Generate Kube in Compose actions and Kube tab in compose details #3253",id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",level:3},{value:"Install multiple extensions using extension pack #3150",id:"install-multiple-extensions-using-extension-pack-3150",level:3},{value:"Customize icons from extension #3131",id:"customize-icons-from-extension-3131",level:3},{value:"Resource details page update #1923",id:"resource-details-page-update-1923",level:3},{value:"Node's container image field added to Create a Kind cluster form #3508",id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",level:3},{value:"Support Docker Desktop extensions using a backend #3435",id:"support-docker-desktop-extensions-using-a-backend-3435",level:3},{value:"Initial onboarding implementation for podman (experimental) #3308",id:"initial-onboarding-implementation-for-podman-experimental-3308",level:3},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:3},{value:"Community Thank You",id:"community-thank-you",level:3},{value:"Final Notes",id:"final-notes",level:3}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Podman Desktop 1.3 Release! \ud83c\udf89"}),"\n",(0,o.jsx)(n.p,{children:"This is essentially a bug-fix release to fix various issues in UI, extension engine and featured extensions, but as usual we also added a few new features."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman 4.6.1"}),": Podman 4.6.1 included in Windows and Mac installers"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman user-mode networking support to Windows/WSL"}),": A new switch `User mode networking' is available when creating Podman machine on Windows for Podman 4.6.0+ to configure podman to work in certain VPN setups and other specialized networking configurations"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Compose group new UI elements"}),": You can now see summary, inspect, deploy to kubernetes, generate kube yaml and view logs"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Extension packs and extension dependencies"}),": Install group of extensions in one click"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Resource details page update"}),": See summary and log for resource"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Create Kind cluster form update"}),": A new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Support Docker Desktop extensions using a backend"}),": When loading Docker Desktop extension the containers are created in the backend as described in the vm section of extension's descriptor"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman Initial Onboarding (preview)"}),": Install and configure podman using included installer"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Podman Desktop 1.3 is now available. ",(0,o.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Podman-desktop-1-3-bug-swatting",src:s(46714).Z+"",width:"1920",height:"1080"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-logs-tab-3176",children:["Compose group Logs tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3176",children:"#3176"})]}),"\n",(0,o.jsx)(n.p,{children:"When clicking on the group of containers, you can now view the logs of the entire group of compose containers and don't need to open\nlog for every component individually."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/6422176/743a4ffc-e291-4697-8ac5-8052cc921946",alt:"Screenshot 2023-07-11 at 12 48 47 PM"})}),"\n",(0,o.jsxs)(n.h3,{id:"podman-user-mode-networking-support-to-windowswsl-3251",children:["Podman user-mode networking support to Windows/WSL ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3251",children:"#3251"})]}),"\n",(0,o.jsx)(n.p,{children:"Certain VPN setups or other specialized networking configs will block traffic from the virtual WSL networking device, resulting in the podman WSL backend from being unable to contact systems on the VPN, and potentially losing internet access altogether. The new switch allows you to create a podman VM machine configured to work correctly in mentioned above networking environments."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/620330/2f521576-b6a6-42b5-b24d-08df5b432608",alt:"user"})}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-summary-tab-3317",children:["Compose group Summary tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3317",children:"#3317"}),","]}),"\n",(0,o.jsx)(n.p,{children:"Compose group Summary tab shows all containers in the group and let you navigate to Details page for specific container."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://github.com/containers/podman-desktop/assets/620330/6dd6dacd-a0d8-478d-b11e-2b414108bd20",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-inspect-tab-3316",children:["Compose group Inspect tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3316",children:"#3316"})]}),"\n",(0,o.jsx)(n.p,{children:'Compose group Inspect tab shows an array of "container inspect" from docker / podman.'}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/255658081-4a2ce4ce-bdc7-435d-9114-1071ab1ec3c5.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"deploy-to-kubernetes-in-compose-actions-3299",children:[(0,o.jsx)(n.code,{children:"Deploy to kubernetes"})," in compose actions ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3295",children:"#3299"})]}),"\n",(0,o.jsx)(n.p,{children:"A button to deploy to kubernetes added to Compose group."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254973806-1ce57225-3422-4d36-8d09-b70a2825869f.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",children:[(0,o.jsx)(n.code,{children:"Generate Kube"})," in Compose actions and ",(0,o.jsx)(n.code,{children:"Kube"})," tab in compose details ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3253",children:"#3253"})]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Generate Kube"}),' item added to Compose actions and "Kube" tab is now available in Compose details view.']}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254337805-98268722-4dde-4c0e-afdf-4873fa4f43fe.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"install-multiple-extensions-using-extension-pack-3150",children:["Install multiple extensions using extension pack ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3150",children:"#3150"})]}),"\n",(0,o.jsx)(n.p,{children:"An Extension pack introduced in Extension engine is a way to declare set of extensions to install them all at once."}),"\n",(0,o.jsx)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251741571-0cd4a199-06f4-4890-8414-4e93ca9178bc.mp4",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"customize-icons-from-extension-3131",children:["Customize icons from extension ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3131",children:"#3131"})]}),"\n",(0,o.jsxs)(n.p,{children:["Extensions now can customize icons for list elements using ",(0,o.jsx)(n.code,{children:"when"})," clause."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/49404737/7aae5347-4f07-4854-ba11-1f629b5ccf22",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"resource-details-page-update-1923",children:["Resource details page update ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1923",children:"#1923"})]}),"\n",(0,o.jsx)(n.p,{children:"If you click on the arrow icon next to a resource name it will open up a details page (similarly to how clicking on a container in the container list opens up a details page)."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229542404-bae44f89-5cd3-4baf-8b08-e934e4462697.gif",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",children:[(0,o.jsx)(n.code,{children:"Node's container image"})," field added to ",(0,o.jsx)(n.code,{children:"Create a Kind cluster"})," form ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3508",children:"#3508"})]}),"\n",(0,o.jsxs)(n.p,{children:["The new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/42176370/b2a63faf-629f-436d-8496-7c0cd8158679",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"support-docker-desktop-extensions-using-a-backend-3435",children:["Support Docker Desktop extensions using a backend ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3435",children:"#3435"})]}),"\n",(0,o.jsx)(n.p,{children:"Podman Desktop now loads the containers in the backend as described in the vm section of extension descriptor the same way as Docker Desktop does."}),"\n",(0,o.jsxs)(n.h3,{id:"initial-onboarding-implementation-for-podman-experimental-3308",children:["Initial onboarding implementation for podman (experimental) ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3308",children:"#3308"})]}),"\n",(0,o.jsx)(n.p,{children:"This is the initial implementation for the onboarding feature. It only covers a simple onboarding for podman. Check system requirements -> install podman -> yay! Done!"}),"\n",(0,o.jsx)(n.h3,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updating videos to be adaptive for mobile by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3229",children:"#3229"})]}),"\n",(0,o.jsxs)(n.li,{children:["Consistent max width and padding in settings by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3232",children:"#3232"})]}),"\n",(0,o.jsxs)(n.li,{children:["Settings navigation bar resizing by @deboer-tim in ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3231",children:"#3231"})]}),"\n",(0,o.jsxs)(n.li,{children:["Move new registry button to header by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3245",children:"#3245"})]}),"\n",(0,o.jsxs)(n.li,{children:["Bigger lima logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3248",children:"#3248"})]}),"\n",(0,o.jsxs)(n.li,{children:["Horizontal docker logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3236",children:"#3236"})]}),"\n",(0,o.jsxs)(n.li,{children:["Respect LIMA_HOME environment variable by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3254",children:"#3254"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add check before writing to terminal by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3263",children:"#3263"})]}),"\n",(0,o.jsxs)(n.li,{children:["Wait until remote side has fully initialized the extensions by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3257",children:"#3257"})]}),"\n",(0,o.jsxs)(n.li,{children:["Fix loader not centered horizontally by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3270",children:"#3270"})]}),"\n",(0,o.jsxs)(n.li,{children:["Troubleshooting still waiting after failure by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3354",children:"#3354"})]}),"\n",(0,o.jsxs)(n.li,{children:["Store error for build by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3365",children:"#3365"})]}),"\n",(0,o.jsxs)(n.li,{children:["Missing checkbox tooltips by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3380",children:"#3380"})]}),"\n",(0,o.jsxs)(n.li,{children:["Load compose logs async not await by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3377",children:"#3377"})]}),"\n",(0,o.jsxs)(n.li,{children:["Set rootful connection when starting rootful machine by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3364",children:"#3364"})]}),"\n",(0,o.jsxs)(n.li,{children:["Default last page by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3388",children:"#3388"})]}),"\n",(0,o.jsxs)(n.li,{children:["Avoid dashboard displaying providers starting while they don't by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3451",children:"#3451"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not use extensionInfo until it is defined by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3450",children:"#V"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow BASIC authentication (all caps) by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3471",children:"#3471"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow single domain registry such as localhost:5000 by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3468",children:"#3468"})]}),"\n",(0,o.jsxs)(n.li,{children:["Create /usr/local/bin directory if it does not exist on binary install by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3425",children:"#3425"})]}),"\n",(0,o.jsxs)(n.li,{children:["Only delete selected pods by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3378",children:"#"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add back 'Done' text on the button by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3487",children:"#3487"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not wait for more than 5s when checking for podman ping by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3497",children:"#3497"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add proxy support for extension using patching get and request approach by @dgolovin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2825",children:"#2825"})]}),"\n",(0,o.jsxs)(n.li,{children:["Refresh component when field is updated by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3525",children:"#3525"})]}),"\n",(0,o.jsxs)(n.li,{children:["Higher-res icons for featured extensions list by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3511",children:"#3511"})]}),"\n",(0,o.jsxs)(n.li,{children:["Main nav selection by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3510",children:"#3510"})]}),"\n",(0,o.jsxs)(n.li,{children:["kube event error when switching context by @jeffmaury ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3494",children:"#3494"})]}),"\n",(0,o.jsxs)(n.li,{children:["Reset error message each time we pull image by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3550",children:"#3550"})]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,o.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,o.jsxs)(n.p,{children:["A warm welcome to ",(0,o.jsx)(n.a,{href:"https://github.com/rostalan",children:"@rostalan"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/axel7083",children:"@axel7083"})," who made their first contribution to the project in this release."]}),"\n",(0,o.jsx)(n.h3,{id:"final-notes",children:"Final Notes"}),"\n",(0,o.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.3.0",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Get the latest release from the ",(0,o.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},46714:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/title-bug-swatting-8a5058958e05e545e61c1e5e689335d3.png"}}]);
\ No newline at end of file
diff --git a/assets/js/f0e3a130.98f8b21a.js b/assets/js/f0e3a130.98f8b21a.js
new file mode 100644
index 00000000000..cb9f26b136c
--- /dev/null
+++ b/assets/js/f0e3a130.98f8b21a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5776],{11316:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var o=s(24246),t=s(71670),i=s(92975),a=s.n(i);const l={title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},r=void 0,d={permalink:"/blog/podman-desktop-release-1.3",source:"@site/blog/2023-08-16-release-1.3.md",title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",date:"2023-08-16T00:00:00.000Z",formattedDate:"August 16, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"},{label:"openshift",permalink:"/blog/tags/openshift"}],readingTime:5.195,hasTruncateMarker:!1,authors:[{name:"Denis Golovin",title:"Principal Software Engineer",url:"https://github.com/cdrage",imageURL:"https://github.com/dgolovin.png",key:"dgolovin"}],frontMatter:{title:"Release Notes - Podman Desktop 1.3",description:"Podman Desktop 1.3 has been released!",slug:"podman-desktop-release-1.3",authors:["dgolovin"],tags:["podman-desktop","release","kubernetes","openshift"],hide_table_of_contents:!1,image:"/img/blog/podman-desktop-release-1.3.webp"},unlisted:!1,prevItem:{title:"Release Notes - Podman Desktop 1.4",permalink:"/blog/podman-desktop-release-1.4"},nextItem:{title:"Release Notes - Podman Desktop 1.2",permalink:"/blog/podman-desktop-release-1.2"}},c={authorsImageUrls:[void 0]},p=[{value:"Release Details",id:"release-details",level:2},{value:"Compose group Logs tab #3176",id:"compose-group-logs-tab-3176",level:3},{value:"Podman user-mode networking support to Windows/WSL #3251",id:"podman-user-mode-networking-support-to-windowswsl-3251",level:3},{value:"Compose group Summary tab #3317,",id:"compose-group-summary-tab-3317",level:3},{value:"Compose group Inspect tab #3316",id:"compose-group-inspect-tab-3316",level:3},{value:"Deploy to kubernetes in compose actions #3299",id:"deploy-to-kubernetes-in-compose-actions-3299",level:3},{value:"Generate Kube in Compose actions and Kube tab in compose details #3253",id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",level:3},{value:"Install multiple extensions using extension pack #3150",id:"install-multiple-extensions-using-extension-pack-3150",level:3},{value:"Customize icons from extension #3131",id:"customize-icons-from-extension-3131",level:3},{value:"Resource details page update #1923",id:"resource-details-page-update-1923",level:3},{value:"Node's container image field added to Create a Kind cluster form #3508",id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",level:3},{value:"Support Docker Desktop extensions using a backend #3435",id:"support-docker-desktop-extensions-using-a-backend-3435",level:3},{value:"Initial onboarding implementation for podman (experimental) #3308",id:"initial-onboarding-implementation-for-podman-experimental-3308",level:3},{value:"Notable Bug Fixes",id:"notable-bug-fixes",level:3},{value:"Community Thank You",id:"community-thank-you",level:3},{value:"Final Notes",id:"final-notes",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Podman Desktop 1.3 Release! \ud83c\udf89"}),"\n",(0,o.jsx)(n.p,{children:"This is essentially a bug-fix release to fix various issues in UI, extension engine and featured extensions, but as usual we also added a few new features."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman 4.6.1"}),": Podman 4.6.1 included in Windows and Mac installers"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman user-mode networking support to Windows/WSL"}),": A new switch `User mode networking' is available when creating Podman machine on Windows for Podman 4.6.0+ to configure podman to work in certain VPN setups and other specialized networking configurations"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Compose group new UI elements"}),": You can now see summary, inspect, deploy to kubernetes, generate kube yaml and view logs"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Extension packs and extension dependencies"}),": Install group of extensions in one click"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Resource details page update"}),": See summary and log for resource"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Create Kind cluster form update"}),": A new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Support Docker Desktop extensions using a backend"}),": When loading Docker Desktop extension the containers are created in the backend as described in the vm section of extension's descriptor"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Podman Initial Onboarding (preview)"}),": Install and configure podman using included installer"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Podman Desktop 1.3 is now available. ",(0,o.jsx)(n.a,{href:"/downloads",children:"Click here to download it"}),"!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Podman-desktop-1-3-bug-swatting",src:s(46714).Z+"",width:"1920",height:"1080"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"release-details",children:"Release Details"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-logs-tab-3176",children:["Compose group Logs tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3176",children:"#3176"})]}),"\n",(0,o.jsx)(n.p,{children:"When clicking on the group of containers, you can now view the logs of the entire group of compose containers and don't need to open\nlog for every component individually."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/6422176/743a4ffc-e291-4697-8ac5-8052cc921946",alt:"Screenshot 2023-07-11 at 12 48 47 PM"})}),"\n",(0,o.jsxs)(n.h3,{id:"podman-user-mode-networking-support-to-windowswsl-3251",children:["Podman user-mode networking support to Windows/WSL ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3251",children:"#3251"})]}),"\n",(0,o.jsx)(n.p,{children:"Certain VPN setups or other specialized networking configs will block traffic from the virtual WSL networking device, resulting in the podman WSL backend from being unable to contact systems on the VPN, and potentially losing internet access altogether. The new switch allows you to create a podman VM machine configured to work correctly in mentioned above networking environments."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/620330/2f521576-b6a6-42b5-b24d-08df5b432608",alt:"user"})}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-summary-tab-3317",children:["Compose group Summary tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3317",children:"#3317"}),","]}),"\n",(0,o.jsx)(n.p,{children:"Compose group Summary tab shows all containers in the group and let you navigate to Details page for specific container."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://github.com/containers/podman-desktop/assets/620330/6dd6dacd-a0d8-478d-b11e-2b414108bd20",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"compose-group-inspect-tab-3316",children:["Compose group Inspect tab ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3316",children:"#3316"})]}),"\n",(0,o.jsx)(n.p,{children:'Compose group Inspect tab shows an array of "container inspect" from docker / podman.'}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/255658081-4a2ce4ce-bdc7-435d-9114-1071ab1ec3c5.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"deploy-to-kubernetes-in-compose-actions-3299",children:[(0,o.jsx)(n.code,{children:"Deploy to kubernetes"})," in compose actions ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3295",children:"#3299"})]}),"\n",(0,o.jsx)(n.p,{children:"A button to deploy to kubernetes added to Compose group."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254973806-1ce57225-3422-4d36-8d09-b70a2825869f.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"generate-kube-in-compose-actions-and-kube-tab-in-compose-details-3253",children:[(0,o.jsx)(n.code,{children:"Generate Kube"})," in Compose actions and ",(0,o.jsx)(n.code,{children:"Kube"})," tab in compose details ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3253",children:"#3253"})]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Generate Kube"}),' item added to Compose actions and "Kube" tab is now available in Compose details view.']}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/254337805-98268722-4dde-4c0e-afdf-4873fa4f43fe.mov",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"install-multiple-extensions-using-extension-pack-3150",children:["Install multiple extensions using extension pack ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3150",children:"#3150"})]}),"\n",(0,o.jsx)(n.p,{children:"An Extension pack introduced in Extension engine is a way to declare set of extensions to install them all at once."}),"\n",(0,o.jsx)(a(),{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/251741571-0cd4a199-06f4-4890-8414-4e93ca9178bc.mp4",width:"100%",height:"100%"}),"\n",(0,o.jsxs)(n.h3,{id:"customize-icons-from-extension-3131",children:["Customize icons from extension ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3131",children:"#3131"})]}),"\n",(0,o.jsxs)(n.p,{children:["Extensions now can customize icons for list elements using ",(0,o.jsx)(n.code,{children:"when"})," clause."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/49404737/7aae5347-4f07-4854-ba11-1f629b5ccf22",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"resource-details-page-update-1923",children:["Resource details page update ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/1923",children:"#1923"})]}),"\n",(0,o.jsx)(n.p,{children:"If you click on the arrow icon next to a resource name it will open up a details page (similarly to how clicking on a container in the container list opens up a details page)."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://user-images.githubusercontent.com/49404737/229542404-bae44f89-5cd3-4baf-8b08-e934e4462697.gif",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"nodes-container-image-field-added-to-create-a-kind-cluster-form-3508",children:[(0,o.jsx)(n.code,{children:"Node's container image"})," field added to ",(0,o.jsx)(n.code,{children:"Create a Kind cluster"})," form ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3508",children:"#3508"})]}),"\n",(0,o.jsxs)(n.p,{children:["The new ",(0,o.jsx)(n.code,{children:"Node's container image"})," field can be used to specify the Kubernetes version used for the control-planed."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/containers/podman-desktop/assets/42176370/b2a63faf-629f-436d-8496-7c0cd8158679",alt:"image"})}),"\n",(0,o.jsxs)(n.h3,{id:"support-docker-desktop-extensions-using-a-backend-3435",children:["Support Docker Desktop extensions using a backend ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3435",children:"#3435"})]}),"\n",(0,o.jsx)(n.p,{children:"Podman Desktop now loads the containers in the backend as described in the vm section of extension descriptor the same way as Docker Desktop does."}),"\n",(0,o.jsxs)(n.h3,{id:"initial-onboarding-implementation-for-podman-experimental-3308",children:["Initial onboarding implementation for podman (experimental) ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3308",children:"#3308"})]}),"\n",(0,o.jsx)(n.p,{children:"This is the initial implementation for the onboarding feature. It only covers a simple onboarding for podman. Check system requirements -> install podman -> yay! Done!"}),"\n",(0,o.jsx)(n.h3,{id:"notable-bug-fixes",children:"Notable Bug Fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updating videos to be adaptive for mobile by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3229",children:"#3229"})]}),"\n",(0,o.jsxs)(n.li,{children:["Consistent max width and padding in settings by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3232",children:"#3232"})]}),"\n",(0,o.jsxs)(n.li,{children:["Settings navigation bar resizing by @deboer-tim in ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3231",children:"#3231"})]}),"\n",(0,o.jsxs)(n.li,{children:["Move new registry button to header by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3245",children:"#3245"})]}),"\n",(0,o.jsxs)(n.li,{children:["Bigger lima logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3248",children:"#3248"})]}),"\n",(0,o.jsxs)(n.li,{children:["Horizontal docker logo by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3236",children:"#3236"})]}),"\n",(0,o.jsxs)(n.li,{children:["Respect LIMA_HOME environment variable by @afbjorklund ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3254",children:"#3254"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add check before writing to terminal by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3263",children:"#3263"})]}),"\n",(0,o.jsxs)(n.li,{children:["Wait until remote side has fully initialized the extensions by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3257",children:"#3257"})]}),"\n",(0,o.jsxs)(n.li,{children:["Fix loader not centered horizontally by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3270",children:"#3270"})]}),"\n",(0,o.jsxs)(n.li,{children:["Troubleshooting still waiting after failure by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3354",children:"#3354"})]}),"\n",(0,o.jsxs)(n.li,{children:["Store error for build by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3365",children:"#3365"})]}),"\n",(0,o.jsxs)(n.li,{children:["Missing checkbox tooltips by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3380",children:"#3380"})]}),"\n",(0,o.jsxs)(n.li,{children:["Load compose logs async not await by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3377",children:"#3377"})]}),"\n",(0,o.jsxs)(n.li,{children:["Set rootful connection when starting rootful machine by @lstocchi ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3364",children:"#3364"})]}),"\n",(0,o.jsxs)(n.li,{children:["Default last page by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3388",children:"#3388"})]}),"\n",(0,o.jsxs)(n.li,{children:["Avoid dashboard displaying providers starting while they don't by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3451",children:"#3451"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not use extensionInfo until it is defined by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3450",children:"#V"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow BASIC authentication (all caps) by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3471",children:"#3471"})]}),"\n",(0,o.jsxs)(n.li,{children:["Allow single domain registry such as localhost:5000 by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3468",children:"#3468"})]}),"\n",(0,o.jsxs)(n.li,{children:["Create /usr/local/bin directory if it does not exist on binary install by @cdrage ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3425",children:"#3425"})]}),"\n",(0,o.jsxs)(n.li,{children:["Only delete selected pods by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3378",children:"#"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add back 'Done' text on the button by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3487",children:"#3487"})]}),"\n",(0,o.jsxs)(n.li,{children:["Do not wait for more than 5s when checking for podman ping by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3497",children:"#3497"})]}),"\n",(0,o.jsxs)(n.li,{children:["Add proxy support for extension using patching get and request approach by @dgolovin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/2825",children:"#2825"})]}),"\n",(0,o.jsxs)(n.li,{children:["Refresh component when field is updated by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3525",children:"#3525"})]}),"\n",(0,o.jsxs)(n.li,{children:["Higher-res icons for featured extensions list by @mairin ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3511",children:"#3511"})]}),"\n",(0,o.jsxs)(n.li,{children:["Main nav selection by @deboer-tim ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3510",children:"#3510"})]}),"\n",(0,o.jsxs)(n.li,{children:["kube event error when switching context by @jeffmaury ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3494",children:"#3494"})]}),"\n",(0,o.jsxs)(n.li,{children:["Reset error message each time we pull image by @benoitf ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/pull/3550",children:"#3550"})]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"community-thank-you",children:"Community Thank You"}),"\n",(0,o.jsx)(n.p,{children:"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop even better."}),"\n",(0,o.jsxs)(n.p,{children:["A warm welcome to ",(0,o.jsx)(n.a,{href:"https://github.com/rostalan",children:"@rostalan"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/axel7083",children:"@axel7083"})," who made their first contribution to the project in this release."]}),"\n",(0,o.jsx)(n.h3,{id:"final-notes",children:"Final Notes"}),"\n",(0,o.jsxs)(n.p,{children:["The complete list of issues fixed in this release is available ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A1.3.0",children:"here"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Get the latest release from the ",(0,o.jsx)(n.a,{href:"/downloads",children:"Downloads"})," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.jsx)(n.a,{href:"https://github.com/containers/podman-desktop",children:"GitHub repository"})," and see how you can help us make Podman Desktop better."]})]})}function m(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},46714:(e,n,s)=>{s.d(n,{Z:()=>o});const o=s.p+"assets/images/title-bug-swatting-8a5058958e05e545e61c1e5e689335d3.png"}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerDailyMotion.3ed40b36.js b/assets/js/reactPlayerDailyMotion.3ed40b36.js
new file mode 100644
index 00000000000..c641aa40263
--- /dev/null
+++ b/assets/js/reactPlayerDailyMotion.3ed40b36.js
@@ -0,0 +1,155 @@
+exports.id = 596;
+exports.ids = [596];
+exports.modules = {
+
+/***/ 4922:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var DailyMotion_exports = {};
+__export(DailyMotion_exports, {
+ default: () => DailyMotion
+});
+module.exports = __toCommonJS(DailyMotion_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://api.dmcdn.net/all.js";
+const SDK_GLOBAL = "DM";
+const SDK_GLOBAL_READY = "dmAsyncInit";
+class DailyMotion extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "onDurationChange", () => {
+ const duration = this.getDuration();
+ this.props.onDuration(duration);
+ });
+ __publicField(this, "mute", () => {
+ this.callPlayer("setMuted", true);
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("setMuted", false);
+ });
+ __publicField(this, "ref", (container) => {
+ this.container = container;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ const { controls, config, onError, playing } = this.props;
+ const [, id] = url.match(import_patterns.MATCH_URL_DAILYMOTION);
+ if (this.player) {
+ this.player.load(id, {
+ start: (0, import_utils.parseStartTime)(url),
+ autoplay: playing
+ });
+ return;
+ }
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, (DM) => DM.player).then((DM) => {
+ if (!this.container)
+ return;
+ const Player = DM.player;
+ this.player = new Player(this.container, {
+ width: "100%",
+ height: "100%",
+ video: id,
+ params: {
+ controls,
+ autoplay: this.props.playing,
+ mute: this.props.muted,
+ start: (0, import_utils.parseStartTime)(url),
+ origin: window.location.origin,
+ ...config.params
+ },
+ events: {
+ apiready: this.props.onReady,
+ seeked: () => this.props.onSeek(this.player.currentTime),
+ video_end: this.props.onEnded,
+ durationchange: this.onDurationChange,
+ pause: this.props.onPause,
+ playing: this.props.onPlay,
+ waiting: this.props.onBuffer,
+ error: (event) => onError(event)
+ }
+ });
+ }, onError);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("seek", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ getDuration() {
+ return this.player.duration || null;
+ }
+ getCurrentTime() {
+ return this.player.currentTime;
+ }
+ getSecondsLoaded() {
+ return this.player.bufferedTime;
+ }
+ render() {
+ const { display } = this.props;
+ const style = {
+ width: "100%",
+ height: "100%",
+ display
+ };
+ return /* @__PURE__ */ import_react.default.createElement("div", { style }, /* @__PURE__ */ import_react.default.createElement("div", { ref: this.ref }));
+ }
+}
+__publicField(DailyMotion, "displayName", "DailyMotion");
+__publicField(DailyMotion, "canPlay", import_patterns.canPlay.dailymotion);
+__publicField(DailyMotion, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerDailyMotion.f8009a5e.js b/assets/js/reactPlayerDailyMotion.f8009a5e.js
new file mode 100644
index 00000000000..8f75d400d83
--- /dev/null
+++ b/assets/js/reactPlayerDailyMotion.f8009a5e.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7596],{4922:(e,t,r)=>{var a,s=Object.create,o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,u=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))p.call(e,s)||s===r||o(e,s,{get:()=>t[s],enumerable:!(a=n(t,s))||a.enumerable});return e},h=(e,t,r)=>(((e,t,r)=>{t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),c={};((e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})})(c,{default:()=>f}),e.exports=(a=c,u(o({},"__esModule",{value:!0}),a));var y=((e,t,r)=>(r=null!=e?s(l(e)):{},u(!t&&e&&e.__esModule?r:o(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),d=r(43887),m=r(62773);class f extends y.Component{constructor(){super(...arguments),h(this,"callPlayer",d.callPlayer),h(this,"onDurationChange",(()=>{const e=this.getDuration();this.props.onDuration(e)})),h(this,"mute",(()=>{this.callPlayer("setMuted",!0)})),h(this,"unmute",(()=>{this.callPlayer("setMuted",!1)})),h(this,"ref",(e=>{this.container=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){const{controls:t,config:r,onError:a,playing:s}=this.props,[,o]=e.match(m.MATCH_URL_DAILYMOTION);this.player?this.player.load(o,{start:(0,d.parseStartTime)(e),autoplay:s}):(0,d.getSDK)("https://api.dmcdn.net/all.js","DM","dmAsyncInit",(e=>e.player)).then((s=>{if(!this.container)return;const n=s.player;this.player=new n(this.container,{width:"100%",height:"100%",video:o,params:{controls:t,autoplay:this.props.playing,mute:this.props.muted,start:(0,d.parseStartTime)(e),origin:window.location.origin,...r.params},events:{apiready:this.props.onReady,seeked:()=>this.props.onSeek(this.player.currentTime),video_end:this.props.onEnded,durationchange:this.onDurationChange,pause:this.props.onPause,playing:this.props.onPlay,waiting:this.props.onBuffer,error:e=>a(e)}})}),a)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("seek",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}getDuration(){return this.player.duration||null}getCurrentTime(){return this.player.currentTime}getSecondsLoaded(){return this.player.bufferedTime}render(){const{display:e}=this.props,t={width:"100%",height:"100%",display:e};return y.default.createElement("div",{style:t},y.default.createElement("div",{ref:this.ref}))}}h(f,"displayName","DailyMotion"),h(f,"canPlay",m.canPlay.dailymotion),h(f,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerFacebook.1d5631d2.js b/assets/js/reactPlayerFacebook.1d5631d2.js
new file mode 100644
index 00000000000..4aa80cb666b
--- /dev/null
+++ b/assets/js/reactPlayerFacebook.1d5631d2.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2121],{76765:(e,t,s)=>{var r,a=Object.create,l=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,n=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,u=(e,t,s,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of i(t))p.call(e,a)||a===s||l(e,a,{get:()=>t[a],enumerable:!(r=o(t,a))||r.enumerable});return e},c=(e,t,s)=>(((e,t,s)=>{t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s})(e,"symbol"!=typeof t?t+"":t,s),s),h={};((e,t)=>{for(var s in t)l(e,s,{get:t[s],enumerable:!0})})(h,{default:()=>g}),e.exports=(r=h,u(l({},"__esModule",{value:!0}),r));var y=((e,t,s)=>(s=null!=e?a(n(e)):{},u(!t&&e&&e.__esModule?s:l(s,"default",{value:e,enumerable:!0}),e)))(s(27378)),d=s(43887),b=s(62773);const f="https://connect.facebook.net/en_US/sdk.js",m="fbAsyncInit";class g extends y.Component{constructor(){super(...arguments),c(this,"callPlayer",d.callPlayer),c(this,"playerID",this.props.config.playerId||`facebook-player-${(0,d.randomString)()}`),c(this,"mute",(()=>{this.callPlayer("mute")})),c(this,"unmute",(()=>{this.callPlayer("unmute")}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e,t){t?(0,d.getSDK)(f,"FB",m).then((e=>e.XFBML.parse())):(0,d.getSDK)(f,"FB",m).then((e=>{e.init({appId:this.props.config.appId,xfbml:!0,version:this.props.config.version}),e.Event.subscribe("xfbml.render",(e=>{this.props.onLoaded()})),e.Event.subscribe("xfbml.ready",(e=>{"video"===e.type&&e.id===this.playerID&&(this.player=e.instance,this.player.subscribe("startedPlaying",this.props.onPlay),this.player.subscribe("paused",this.props.onPause),this.player.subscribe("finishedPlaying",this.props.onEnded),this.player.subscribe("startedBuffering",this.props.onBuffer),this.player.subscribe("finishedBuffering",this.props.onBufferEnd),this.player.subscribe("error",this.props.onError),this.props.muted?this.callPlayer("mute"):this.callPlayer("unmute"),this.props.onReady(),document.getElementById(this.playerID).querySelector("iframe").style.visibility="visible")}))}))}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("seek",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}getDuration(){return this.callPlayer("getDuration")}getCurrentTime(){return this.callPlayer("getCurrentPosition")}getSecondsLoaded(){return null}render(){const{attributes:e}=this.props.config;return y.default.createElement("div",{style:{width:"100%",height:"100%"},id:this.playerID,className:"fb-video","data-href":this.props.url,"data-autoplay":this.props.playing?"true":"false","data-allowfullscreen":"true","data-controls":this.props.controls?"true":"false",...e})}}c(g,"displayName","Facebook"),c(g,"canPlay",b.canPlay.facebook),c(g,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerFacebook.2652c8c4.js b/assets/js/reactPlayerFacebook.2652c8c4.js
new file mode 100644
index 00000000000..1de176a3938
--- /dev/null
+++ b/assets/js/reactPlayerFacebook.2652c8c4.js
@@ -0,0 +1,156 @@
+exports.id = 121;
+exports.ids = [121];
+exports.modules = {
+
+/***/ 76765:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Facebook_exports = {};
+__export(Facebook_exports, {
+ default: () => Facebook
+});
+module.exports = __toCommonJS(Facebook_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://connect.facebook.net/en_US/sdk.js";
+const SDK_GLOBAL = "FB";
+const SDK_GLOBAL_READY = "fbAsyncInit";
+const PLAYER_ID_PREFIX = "facebook-player-";
+class Facebook extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "playerID", this.props.config.playerId || `${PLAYER_ID_PREFIX}${(0, import_utils.randomString)()}`);
+ __publicField(this, "mute", () => {
+ this.callPlayer("mute");
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("unmute");
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url, isReady) {
+ if (isReady) {
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then((FB) => FB.XFBML.parse());
+ return;
+ }
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then((FB) => {
+ FB.init({
+ appId: this.props.config.appId,
+ xfbml: true,
+ version: this.props.config.version
+ });
+ FB.Event.subscribe("xfbml.render", (msg) => {
+ this.props.onLoaded();
+ });
+ FB.Event.subscribe("xfbml.ready", (msg) => {
+ if (msg.type === "video" && msg.id === this.playerID) {
+ this.player = msg.instance;
+ this.player.subscribe("startedPlaying", this.props.onPlay);
+ this.player.subscribe("paused", this.props.onPause);
+ this.player.subscribe("finishedPlaying", this.props.onEnded);
+ this.player.subscribe("startedBuffering", this.props.onBuffer);
+ this.player.subscribe("finishedBuffering", this.props.onBufferEnd);
+ this.player.subscribe("error", this.props.onError);
+ if (this.props.muted) {
+ this.callPlayer("mute");
+ } else {
+ this.callPlayer("unmute");
+ }
+ this.props.onReady();
+ document.getElementById(this.playerID).querySelector("iframe").style.visibility = "visible";
+ }
+ });
+ });
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("seek", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ getDuration() {
+ return this.callPlayer("getDuration");
+ }
+ getCurrentTime() {
+ return this.callPlayer("getCurrentPosition");
+ }
+ getSecondsLoaded() {
+ return null;
+ }
+ render() {
+ const { attributes } = this.props.config;
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ "div",
+ {
+ style,
+ id: this.playerID,
+ className: "fb-video",
+ "data-href": this.props.url,
+ "data-autoplay": this.props.playing ? "true" : "false",
+ "data-allowfullscreen": "true",
+ "data-controls": this.props.controls ? "true" : "false",
+ ...attributes
+ }
+ );
+ }
+}
+__publicField(Facebook, "displayName", "Facebook");
+__publicField(Facebook, "canPlay", import_patterns.canPlay.facebook);
+__publicField(Facebook, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerFilePlayer.b143422e.js b/assets/js/reactPlayerFilePlayer.b143422e.js
new file mode 100644
index 00000000000..9ce3749033c
--- /dev/null
+++ b/assets/js/reactPlayerFilePlayer.b143422e.js
@@ -0,0 +1,385 @@
+exports.id = 11;
+exports.ids = [11];
+exports.modules = {
+
+/***/ 98450:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var FilePlayer_exports = {};
+__export(FilePlayer_exports, {
+ default: () => FilePlayer
+});
+module.exports = __toCommonJS(FilePlayer_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const HAS_NAVIGATOR = typeof navigator !== "undefined";
+const IS_IPAD_PRO = HAS_NAVIGATOR && navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
+const IS_IOS = HAS_NAVIGATOR && (/iPad|iPhone|iPod/.test(navigator.userAgent) || IS_IPAD_PRO) && !window.MSStream;
+const IS_SAFARI = HAS_NAVIGATOR && /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;
+const HLS_SDK_URL = "https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js";
+const HLS_GLOBAL = "Hls";
+const DASH_SDK_URL = "https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js";
+const DASH_GLOBAL = "dashjs";
+const FLV_SDK_URL = "https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js";
+const FLV_GLOBAL = "flvjs";
+const MATCH_DROPBOX_URL = /www\.dropbox\.com\/.+/;
+const MATCH_CLOUDFLARE_STREAM = /https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/;
+const REPLACE_CLOUDFLARE_STREAM = "https://videodelivery.net/{id}/manifest/video.m3u8";
+class FilePlayer extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ // Proxy methods to prevent listener leaks
+ __publicField(this, "onReady", (...args) => this.props.onReady(...args));
+ __publicField(this, "onPlay", (...args) => this.props.onPlay(...args));
+ __publicField(this, "onBuffer", (...args) => this.props.onBuffer(...args));
+ __publicField(this, "onBufferEnd", (...args) => this.props.onBufferEnd(...args));
+ __publicField(this, "onPause", (...args) => this.props.onPause(...args));
+ __publicField(this, "onEnded", (...args) => this.props.onEnded(...args));
+ __publicField(this, "onError", (...args) => this.props.onError(...args));
+ __publicField(this, "onPlayBackRateChange", (event) => this.props.onPlaybackRateChange(event.target.playbackRate));
+ __publicField(this, "onEnablePIP", (...args) => this.props.onEnablePIP(...args));
+ __publicField(this, "onDisablePIP", (e) => {
+ const { onDisablePIP, playing } = this.props;
+ onDisablePIP(e);
+ if (playing) {
+ this.play();
+ }
+ });
+ __publicField(this, "onPresentationModeChange", (e) => {
+ if (this.player && (0, import_utils.supportsWebKitPresentationMode)(this.player)) {
+ const { webkitPresentationMode } = this.player;
+ if (webkitPresentationMode === "picture-in-picture") {
+ this.onEnablePIP(e);
+ } else if (webkitPresentationMode === "inline") {
+ this.onDisablePIP(e);
+ }
+ }
+ });
+ __publicField(this, "onSeek", (e) => {
+ this.props.onSeek(e.target.currentTime);
+ });
+ __publicField(this, "mute", () => {
+ this.player.muted = true;
+ });
+ __publicField(this, "unmute", () => {
+ this.player.muted = false;
+ });
+ __publicField(this, "renderSourceElement", (source, index) => {
+ if (typeof source === "string") {
+ return /* @__PURE__ */ import_react.default.createElement("source", { key: index, src: source });
+ }
+ return /* @__PURE__ */ import_react.default.createElement("source", { key: index, ...source });
+ });
+ __publicField(this, "renderTrack", (track, index) => {
+ return /* @__PURE__ */ import_react.default.createElement("track", { key: index, ...track });
+ });
+ __publicField(this, "ref", (player) => {
+ if (this.player) {
+ this.prevPlayer = this.player;
+ }
+ this.player = player;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ this.addListeners(this.player);
+ const src = this.getSource(this.props.url);
+ if (src) {
+ this.player.src = src;
+ }
+ if (IS_IOS || this.props.config.forceDisableHls) {
+ this.player.load();
+ }
+ }
+ componentDidUpdate(prevProps) {
+ if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {
+ this.removeListeners(this.prevPlayer, prevProps.url);
+ this.addListeners(this.player);
+ }
+ if (this.props.url !== prevProps.url && !(0, import_utils.isMediaStream)(this.props.url) && !(this.props.url instanceof Array)) {
+ this.player.srcObject = null;
+ }
+ }
+ componentWillUnmount() {
+ this.player.removeAttribute("src");
+ this.removeListeners(this.player);
+ if (this.hls) {
+ this.hls.destroy();
+ }
+ }
+ addListeners(player) {
+ const { url, playsinline } = this.props;
+ player.addEventListener("play", this.onPlay);
+ player.addEventListener("waiting", this.onBuffer);
+ player.addEventListener("playing", this.onBufferEnd);
+ player.addEventListener("pause", this.onPause);
+ player.addEventListener("seeked", this.onSeek);
+ player.addEventListener("ended", this.onEnded);
+ player.addEventListener("error", this.onError);
+ player.addEventListener("ratechange", this.onPlayBackRateChange);
+ player.addEventListener("enterpictureinpicture", this.onEnablePIP);
+ player.addEventListener("leavepictureinpicture", this.onDisablePIP);
+ player.addEventListener("webkitpresentationmodechanged", this.onPresentationModeChange);
+ if (!this.shouldUseHLS(url)) {
+ player.addEventListener("canplay", this.onReady);
+ }
+ if (playsinline) {
+ player.setAttribute("playsinline", "");
+ player.setAttribute("webkit-playsinline", "");
+ player.setAttribute("x5-playsinline", "");
+ }
+ }
+ removeListeners(player, url) {
+ player.removeEventListener("canplay", this.onReady);
+ player.removeEventListener("play", this.onPlay);
+ player.removeEventListener("waiting", this.onBuffer);
+ player.removeEventListener("playing", this.onBufferEnd);
+ player.removeEventListener("pause", this.onPause);
+ player.removeEventListener("seeked", this.onSeek);
+ player.removeEventListener("ended", this.onEnded);
+ player.removeEventListener("error", this.onError);
+ player.removeEventListener("ratechange", this.onPlayBackRateChange);
+ player.removeEventListener("enterpictureinpicture", this.onEnablePIP);
+ player.removeEventListener("leavepictureinpicture", this.onDisablePIP);
+ player.removeEventListener("webkitpresentationmodechanged", this.onPresentationModeChange);
+ if (!this.shouldUseHLS(url)) {
+ player.removeEventListener("canplay", this.onReady);
+ }
+ }
+ shouldUseAudio(props) {
+ if (props.config.forceVideo) {
+ return false;
+ }
+ if (props.config.attributes.poster) {
+ return false;
+ }
+ return import_patterns.AUDIO_EXTENSIONS.test(props.url) || props.config.forceAudio;
+ }
+ shouldUseHLS(url) {
+ if (IS_SAFARI && this.props.config.forceSafariHLS || this.props.config.forceHLS) {
+ return true;
+ }
+ if (IS_IOS || this.props.config.forceDisableHls) {
+ return false;
+ }
+ return import_patterns.HLS_EXTENSIONS.test(url) || MATCH_CLOUDFLARE_STREAM.test(url);
+ }
+ shouldUseDASH(url) {
+ return import_patterns.DASH_EXTENSIONS.test(url) || this.props.config.forceDASH;
+ }
+ shouldUseFLV(url) {
+ return import_patterns.FLV_EXTENSIONS.test(url) || this.props.config.forceFLV;
+ }
+ load(url) {
+ const { hlsVersion, hlsOptions, dashVersion, flvVersion } = this.props.config;
+ if (this.hls) {
+ this.hls.destroy();
+ }
+ if (this.dash) {
+ this.dash.reset();
+ }
+ if (this.shouldUseHLS(url)) {
+ (0, import_utils.getSDK)(HLS_SDK_URL.replace("VERSION", hlsVersion), HLS_GLOBAL).then((Hls) => {
+ this.hls = new Hls(hlsOptions);
+ this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
+ this.props.onReady();
+ });
+ this.hls.on(Hls.Events.ERROR, (e, data) => {
+ this.props.onError(e, data, this.hls, Hls);
+ });
+ if (MATCH_CLOUDFLARE_STREAM.test(url)) {
+ const id = url.match(MATCH_CLOUDFLARE_STREAM)[1];
+ this.hls.loadSource(REPLACE_CLOUDFLARE_STREAM.replace("{id}", id));
+ } else {
+ this.hls.loadSource(url);
+ }
+ this.hls.attachMedia(this.player);
+ this.props.onLoaded();
+ });
+ }
+ if (this.shouldUseDASH(url)) {
+ (0, import_utils.getSDK)(DASH_SDK_URL.replace("VERSION", dashVersion), DASH_GLOBAL).then((dashjs) => {
+ this.dash = dashjs.MediaPlayer().create();
+ this.dash.initialize(this.player, url, this.props.playing);
+ this.dash.on("error", this.props.onError);
+ if (parseInt(dashVersion) < 3) {
+ this.dash.getDebug().setLogToBrowserConsole(false);
+ } else {
+ this.dash.updateSettings({ debug: { logLevel: dashjs.Debug.LOG_LEVEL_NONE } });
+ }
+ this.props.onLoaded();
+ });
+ }
+ if (this.shouldUseFLV(url)) {
+ (0, import_utils.getSDK)(FLV_SDK_URL.replace("VERSION", flvVersion), FLV_GLOBAL).then((flvjs) => {
+ this.flv = flvjs.createPlayer({ type: "flv", url });
+ this.flv.attachMediaElement(this.player);
+ this.flv.on(flvjs.Events.ERROR, (e, data) => {
+ this.props.onError(e, data, this.flv, flvjs);
+ });
+ this.flv.load();
+ this.props.onLoaded();
+ });
+ }
+ if (url instanceof Array) {
+ this.player.load();
+ } else if ((0, import_utils.isMediaStream)(url)) {
+ try {
+ this.player.srcObject = url;
+ } catch (e) {
+ this.player.src = window.URL.createObjectURL(url);
+ }
+ }
+ }
+ play() {
+ const promise = this.player.play();
+ if (promise) {
+ promise.catch(this.props.onError);
+ }
+ }
+ pause() {
+ this.player.pause();
+ }
+ stop() {
+ this.player.removeAttribute("src");
+ if (this.dash) {
+ this.dash.reset();
+ }
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.player.currentTime = seconds;
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.player.volume = fraction;
+ }
+ enablePIP() {
+ if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {
+ this.player.requestPictureInPicture();
+ } else if ((0, import_utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== "picture-in-picture") {
+ this.player.webkitSetPresentationMode("picture-in-picture");
+ }
+ }
+ disablePIP() {
+ if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {
+ document.exitPictureInPicture();
+ } else if ((0, import_utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== "inline") {
+ this.player.webkitSetPresentationMode("inline");
+ }
+ }
+ setPlaybackRate(rate) {
+ try {
+ this.player.playbackRate = rate;
+ } catch (error) {
+ this.props.onError(error);
+ }
+ }
+ getDuration() {
+ if (!this.player)
+ return null;
+ const { duration, seekable } = this.player;
+ if (duration === Infinity && seekable.length > 0) {
+ return seekable.end(seekable.length - 1);
+ }
+ return duration;
+ }
+ getCurrentTime() {
+ if (!this.player)
+ return null;
+ return this.player.currentTime;
+ }
+ getSecondsLoaded() {
+ if (!this.player)
+ return null;
+ const { buffered } = this.player;
+ if (buffered.length === 0) {
+ return 0;
+ }
+ const end = buffered.end(buffered.length - 1);
+ const duration = this.getDuration();
+ if (end > duration) {
+ return duration;
+ }
+ return end;
+ }
+ getSource(url) {
+ const useHLS = this.shouldUseHLS(url);
+ const useDASH = this.shouldUseDASH(url);
+ const useFLV = this.shouldUseFLV(url);
+ if (url instanceof Array || (0, import_utils.isMediaStream)(url) || useHLS || useDASH || useFLV) {
+ return void 0;
+ }
+ if (MATCH_DROPBOX_URL.test(url)) {
+ return url.replace("www.dropbox.com", "dl.dropboxusercontent.com");
+ }
+ return url;
+ }
+ render() {
+ const { url, playing, loop, controls, muted, config, width, height } = this.props;
+ const useAudio = this.shouldUseAudio(this.props);
+ const Element = useAudio ? "audio" : "video";
+ const style = {
+ width: width === "auto" ? width : "100%",
+ height: height === "auto" ? height : "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ Element,
+ {
+ ref: this.ref,
+ src: this.getSource(url),
+ style,
+ preload: "auto",
+ autoPlay: playing || void 0,
+ controls,
+ muted,
+ loop,
+ ...config.attributes
+ },
+ url instanceof Array && url.map(this.renderSourceElement),
+ config.tracks.map(this.renderTrack)
+ );
+ }
+}
+__publicField(FilePlayer, "displayName", "FilePlayer");
+__publicField(FilePlayer, "canPlay", import_patterns.canPlay.file);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerFilePlayer.cac6ee27.js b/assets/js/reactPlayerFilePlayer.cac6ee27.js
new file mode 100644
index 00000000000..9c49051eb3e
--- /dev/null
+++ b/assets/js/reactPlayerFilePlayer.cac6ee27.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6011],{98450:(e,t,s)=>{var r,i=Object.create,n=Object.defineProperty,o=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,h=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,p=(e,t,s,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of a(t))l.call(e,i)||i===s||n(e,i,{get:()=>t[i],enumerable:!(r=o(t,i))||r.enumerable});return e},d=(e,t,s)=>(((e,t,s)=>{t in e?n(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s})(e,"symbol"!=typeof t?t+"":t,s),s),u={};((e,t)=>{for(var s in t)n(e,s,{get:t[s],enumerable:!0})})(u,{default:()=>L}),e.exports=(r=u,p(n({},"__esModule",{value:!0}),r));var c=((e,t,s)=>(s=null!=e?i(h(e)):{},p(!t&&e&&e.__esModule?s:n(s,"default",{value:e,enumerable:!0}),e)))(s(27378)),y=s(43887),f=s(62773);const m="undefined"!=typeof navigator,v=m&&"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,E=m&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||v)&&!window.MSStream,P=m&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!window.MSStream,g=/www\.dropbox\.com\/.+/,b=/https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/;class L extends c.Component{constructor(){super(...arguments),d(this,"onReady",((...e)=>this.props.onReady(...e))),d(this,"onPlay",((...e)=>this.props.onPlay(...e))),d(this,"onBuffer",((...e)=>this.props.onBuffer(...e))),d(this,"onBufferEnd",((...e)=>this.props.onBufferEnd(...e))),d(this,"onPause",((...e)=>this.props.onPause(...e))),d(this,"onEnded",((...e)=>this.props.onEnded(...e))),d(this,"onError",((...e)=>this.props.onError(...e))),d(this,"onPlayBackRateChange",(e=>this.props.onPlaybackRateChange(e.target.playbackRate))),d(this,"onEnablePIP",((...e)=>this.props.onEnablePIP(...e))),d(this,"onDisablePIP",(e=>{const{onDisablePIP:t,playing:s}=this.props;t(e),s&&this.play()})),d(this,"onPresentationModeChange",(e=>{if(this.player&&(0,y.supportsWebKitPresentationMode)(this.player)){const{webkitPresentationMode:t}=this.player;"picture-in-picture"===t?this.onEnablePIP(e):"inline"===t&&this.onDisablePIP(e)}})),d(this,"onSeek",(e=>{this.props.onSeek(e.target.currentTime)})),d(this,"mute",(()=>{this.player.muted=!0})),d(this,"unmute",(()=>{this.player.muted=!1})),d(this,"renderSourceElement",((e,t)=>"string"==typeof e?c.default.createElement("source",{key:t,src:e}):c.default.createElement("source",{key:t,...e}))),d(this,"renderTrack",((e,t)=>c.default.createElement("track",{key:t,...e}))),d(this,"ref",(e=>{this.player&&(this.prevPlayer=this.player),this.player=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this),this.addListeners(this.player);const e=this.getSource(this.props.url);e&&(this.player.src=e),(E||this.props.config.forceDisableHls)&&this.player.load()}componentDidUpdate(e){this.shouldUseAudio(this.props)!==this.shouldUseAudio(e)&&(this.removeListeners(this.prevPlayer,e.url),this.addListeners(this.player)),this.props.url===e.url||(0,y.isMediaStream)(this.props.url)||this.props.url instanceof Array||(this.player.srcObject=null)}componentWillUnmount(){this.player.removeAttribute("src"),this.removeListeners(this.player),this.hls&&this.hls.destroy()}addListeners(e){const{url:t,playsinline:s}=this.props;e.addEventListener("play",this.onPlay),e.addEventListener("waiting",this.onBuffer),e.addEventListener("playing",this.onBufferEnd),e.addEventListener("pause",this.onPause),e.addEventListener("seeked",this.onSeek),e.addEventListener("ended",this.onEnded),e.addEventListener("error",this.onError),e.addEventListener("ratechange",this.onPlayBackRateChange),e.addEventListener("enterpictureinpicture",this.onEnablePIP),e.addEventListener("leavepictureinpicture",this.onDisablePIP),e.addEventListener("webkitpresentationmodechanged",this.onPresentationModeChange),this.shouldUseHLS(t)||e.addEventListener("canplay",this.onReady),s&&(e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("x5-playsinline",""))}removeListeners(e,t){e.removeEventListener("canplay",this.onReady),e.removeEventListener("play",this.onPlay),e.removeEventListener("waiting",this.onBuffer),e.removeEventListener("playing",this.onBufferEnd),e.removeEventListener("pause",this.onPause),e.removeEventListener("seeked",this.onSeek),e.removeEventListener("ended",this.onEnded),e.removeEventListener("error",this.onError),e.removeEventListener("ratechange",this.onPlayBackRateChange),e.removeEventListener("enterpictureinpicture",this.onEnablePIP),e.removeEventListener("leavepictureinpicture",this.onDisablePIP),e.removeEventListener("webkitpresentationmodechanged",this.onPresentationModeChange),this.shouldUseHLS(t)||e.removeEventListener("canplay",this.onReady)}shouldUseAudio(e){return!e.config.forceVideo&&(!e.config.attributes.poster&&(f.AUDIO_EXTENSIONS.test(e.url)||e.config.forceAudio))}shouldUseHLS(e){return!!(P&&this.props.config.forceSafariHLS||this.props.config.forceHLS)||!E&&!this.props.config.forceDisableHls&&(f.HLS_EXTENSIONS.test(e)||b.test(e))}shouldUseDASH(e){return f.DASH_EXTENSIONS.test(e)||this.props.config.forceDASH}shouldUseFLV(e){return f.FLV_EXTENSIONS.test(e)||this.props.config.forceFLV}load(e){const{hlsVersion:t,hlsOptions:s,dashVersion:r,flvVersion:i}=this.props.config;if(this.hls&&this.hls.destroy(),this.dash&&this.dash.reset(),this.shouldUseHLS(e)&&(0,y.getSDK)("https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js".replace("VERSION",t),"Hls").then((t=>{if(this.hls=new t(s),this.hls.on(t.Events.MANIFEST_PARSED,(()=>{this.props.onReady()})),this.hls.on(t.Events.ERROR,((e,s)=>{this.props.onError(e,s,this.hls,t)})),b.test(e)){const t=e.match(b)[1];this.hls.loadSource("https://videodelivery.net/{id}/manifest/video.m3u8".replace("{id}",t))}else this.hls.loadSource(e);this.hls.attachMedia(this.player),this.props.onLoaded()})),this.shouldUseDASH(e)&&(0,y.getSDK)("https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js".replace("VERSION",r),"dashjs").then((t=>{this.dash=t.MediaPlayer().create(),this.dash.initialize(this.player,e,this.props.playing),this.dash.on("error",this.props.onError),parseInt(r)<3?this.dash.getDebug().setLogToBrowserConsole(!1):this.dash.updateSettings({debug:{logLevel:t.Debug.LOG_LEVEL_NONE}}),this.props.onLoaded()})),this.shouldUseFLV(e)&&(0,y.getSDK)("https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js".replace("VERSION",i),"flvjs").then((t=>{this.flv=t.createPlayer({type:"flv",url:e}),this.flv.attachMediaElement(this.player),this.flv.on(t.Events.ERROR,((e,s)=>{this.props.onError(e,s,this.flv,t)})),this.flv.load(),this.props.onLoaded()})),e instanceof Array)this.player.load();else if((0,y.isMediaStream)(e))try{this.player.srcObject=e}catch(n){this.player.src=window.URL.createObjectURL(e)}}play(){const e=this.player.play();e&&e.catch(this.props.onError)}pause(){this.player.pause()}stop(){this.player.removeAttribute("src"),this.dash&&this.dash.reset()}seekTo(e,t=!0){this.player.currentTime=e,t||this.pause()}setVolume(e){this.player.volume=e}enablePIP(){this.player.requestPictureInPicture&&document.pictureInPictureElement!==this.player?this.player.requestPictureInPicture():(0,y.supportsWebKitPresentationMode)(this.player)&&"picture-in-picture"!==this.player.webkitPresentationMode&&this.player.webkitSetPresentationMode("picture-in-picture")}disablePIP(){document.exitPictureInPicture&&document.pictureInPictureElement===this.player?document.exitPictureInPicture():(0,y.supportsWebKitPresentationMode)(this.player)&&"inline"!==this.player.webkitPresentationMode&&this.player.webkitSetPresentationMode("inline")}setPlaybackRate(e){try{this.player.playbackRate=e}catch(t){this.props.onError(t)}}getDuration(){if(!this.player)return null;const{duration:e,seekable:t}=this.player;return e===1/0&&t.length>0?t.end(t.length-1):e}getCurrentTime(){return this.player?this.player.currentTime:null}getSecondsLoaded(){if(!this.player)return null;const{buffered:e}=this.player;if(0===e.length)return 0;const t=e.end(e.length-1),s=this.getDuration();return t>s?s:t}getSource(e){const t=this.shouldUseHLS(e),s=this.shouldUseDASH(e),r=this.shouldUseFLV(e);if(!(e instanceof Array||(0,y.isMediaStream)(e)||t||s||r))return g.test(e)?e.replace("www.dropbox.com","dl.dropboxusercontent.com"):e}render(){const{url:e,playing:t,loop:s,controls:r,muted:i,config:n,width:o,height:a}=this.props,h=this.shouldUseAudio(this.props)?"audio":"video",l={width:"auto"===o?o:"100%",height:"auto"===a?a:"100%"};return c.default.createElement(h,{ref:this.ref,src:this.getSource(e),style:l,preload:"auto",autoPlay:t||void 0,controls:r,muted:i,loop:s,...n.attributes},e instanceof Array&&e.map(this.renderSourceElement),n.tracks.map(this.renderTrack))}}d(L,"displayName","FilePlayer"),d(L,"canPlay",f.canPlay.file)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerKaltura.45130f3f.js b/assets/js/reactPlayerKaltura.45130f3f.js
new file mode 100644
index 00000000000..c1cea75d65c
--- /dev/null
+++ b/assets/js/reactPlayerKaltura.45130f3f.js
@@ -0,0 +1,153 @@
+exports.id = 261;
+exports.ids = [261];
+exports.modules = {
+
+/***/ 7248:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Kaltura_exports = {};
+__export(Kaltura_exports, {
+ default: () => Kaltura
+});
+module.exports = __toCommonJS(Kaltura_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://cdn.embed.ly/player-0.1.0.min.js";
+const SDK_GLOBAL = "playerjs";
+class Kaltura extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "duration", null);
+ __publicField(this, "currentTime", null);
+ __publicField(this, "secondsLoaded", null);
+ __publicField(this, "mute", () => {
+ this.callPlayer("mute");
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("unmute");
+ });
+ __publicField(this, "ref", (iframe) => {
+ this.iframe = iframe;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((playerjs) => {
+ if (!this.iframe)
+ return;
+ this.player = new playerjs.Player(this.iframe);
+ this.player.on("ready", () => {
+ setTimeout(() => {
+ this.player.isReady = true;
+ this.player.setLoop(this.props.loop);
+ if (this.props.muted) {
+ this.player.mute();
+ }
+ this.addListeners(this.player, this.props);
+ this.props.onReady();
+ }, 500);
+ });
+ }, this.props.onError);
+ }
+ addListeners(player, props) {
+ player.on("play", props.onPlay);
+ player.on("pause", props.onPause);
+ player.on("ended", props.onEnded);
+ player.on("error", props.onError);
+ player.on("timeupdate", ({ duration, seconds }) => {
+ this.duration = duration;
+ this.currentTime = seconds;
+ });
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("setCurrentTime", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ setLoop(loop) {
+ this.callPlayer("setLoop", loop);
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.currentTime;
+ }
+ getSecondsLoaded() {
+ return this.secondsLoaded;
+ }
+ render() {
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ "iframe",
+ {
+ ref: this.ref,
+ src: this.props.url,
+ frameBorder: "0",
+ scrolling: "no",
+ style,
+ allow: "encrypted-media; autoplay; fullscreen;",
+ referrerPolicy: "no-referrer-when-downgrade"
+ }
+ );
+ }
+}
+__publicField(Kaltura, "displayName", "Kaltura");
+__publicField(Kaltura, "canPlay", import_patterns.canPlay.kaltura);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerKaltura.59b3b0c6.js b/assets/js/reactPlayerKaltura.59b3b0c6.js
new file mode 100644
index 00000000000..5868cb5bf2c
--- /dev/null
+++ b/assets/js/reactPlayerKaltura.59b3b0c6.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[261],{7248:(e,t,r)=>{var s,a=Object.create,o=Object.defineProperty,l=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,p=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of n(t))u.call(e,a)||a===r||o(e,a,{get:()=>t[a],enumerable:!(s=l(t,a))||s.enumerable});return e},h=(e,t,r)=>(((e,t,r)=>{t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),d={};((e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})})(d,{default:()=>f}),e.exports=(s=d,p(o({},"__esModule",{value:!0}),s));var c=((e,t,r)=>(r=null!=e?a(i(e)):{},p(!t&&e&&e.__esModule?r:o(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),y=r(43887),m=r(62773);class f extends c.Component{constructor(){super(...arguments),h(this,"callPlayer",y.callPlayer),h(this,"duration",null),h(this,"currentTime",null),h(this,"secondsLoaded",null),h(this,"mute",(()=>{this.callPlayer("mute")})),h(this,"unmute",(()=>{this.callPlayer("unmute")})),h(this,"ref",(e=>{this.iframe=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){(0,y.getSDK)("https://cdn.embed.ly/player-0.1.0.min.js","playerjs").then((e=>{this.iframe&&(this.player=new e.Player(this.iframe),this.player.on("ready",(()=>{setTimeout((()=>{this.player.isReady=!0,this.player.setLoop(this.props.loop),this.props.muted&&this.player.mute(),this.addListeners(this.player,this.props),this.props.onReady()}),500)})))}),this.props.onError)}addListeners(e,t){e.on("play",t.onPlay),e.on("pause",t.onPause),e.on("ended",t.onEnded),e.on("error",t.onError),e.on("timeupdate",(({duration:e,seconds:t})=>{this.duration=e,this.currentTime=t}))}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("setCurrentTime",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}setLoop(e){this.callPlayer("setLoop",e)}getDuration(){return this.duration}getCurrentTime(){return this.currentTime}getSecondsLoaded(){return this.secondsLoaded}render(){return c.default.createElement("iframe",{ref:this.ref,src:this.props.url,frameBorder:"0",scrolling:"no",style:{width:"100%",height:"100%"},allow:"encrypted-media; autoplay; fullscreen;",referrerPolicy:"no-referrer-when-downgrade"})}}h(f,"displayName","Kaltura"),h(f,"canPlay",m.canPlay.kaltura)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerMixcloud.643d0896.js b/assets/js/reactPlayerMixcloud.643d0896.js
new file mode 100644
index 00000000000..8aec5e0f78f
--- /dev/null
+++ b/assets/js/reactPlayerMixcloud.643d0896.js
@@ -0,0 +1,141 @@
+exports.id = 667;
+exports.ids = [667];
+exports.modules = {
+
+/***/ 31241:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Mixcloud_exports = {};
+__export(Mixcloud_exports, {
+ default: () => Mixcloud
+});
+module.exports = __toCommonJS(Mixcloud_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://widget.mixcloud.com/media/js/widgetApi.js";
+const SDK_GLOBAL = "Mixcloud";
+class Mixcloud extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "duration", null);
+ __publicField(this, "currentTime", null);
+ __publicField(this, "secondsLoaded", null);
+ __publicField(this, "mute", () => {
+ });
+ __publicField(this, "unmute", () => {
+ });
+ __publicField(this, "ref", (iframe) => {
+ this.iframe = iframe;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((Mixcloud2) => {
+ this.player = Mixcloud2.PlayerWidget(this.iframe);
+ this.player.ready.then(() => {
+ this.player.events.play.on(this.props.onPlay);
+ this.player.events.pause.on(this.props.onPause);
+ this.player.events.ended.on(this.props.onEnded);
+ this.player.events.error.on(this.props.error);
+ this.player.events.progress.on((seconds, duration) => {
+ this.currentTime = seconds;
+ this.duration = duration;
+ });
+ this.props.onReady();
+ });
+ }, this.props.onError);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("seek", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.currentTime;
+ }
+ getSecondsLoaded() {
+ return null;
+ }
+ render() {
+ const { url, config } = this.props;
+ const id = url.match(import_patterns.MATCH_URL_MIXCLOUD)[1];
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ const query = (0, import_utils.queryString)({
+ ...config.options,
+ feed: `/${id}/`
+ });
+ return /* @__PURE__ */ import_react.default.createElement(
+ "iframe",
+ {
+ key: id,
+ ref: this.ref,
+ style,
+ src: `https://www.mixcloud.com/widget/iframe/?${query}`,
+ frameBorder: "0",
+ allow: "autoplay"
+ }
+ );
+ }
+}
+__publicField(Mixcloud, "displayName", "Mixcloud");
+__publicField(Mixcloud, "canPlay", import_patterns.canPlay.mixcloud);
+__publicField(Mixcloud, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerMixcloud.79c9fa66.js b/assets/js/reactPlayerMixcloud.79c9fa66.js
new file mode 100644
index 00000000000..fc2cd70cc42
--- /dev/null
+++ b/assets/js/reactPlayerMixcloud.79c9fa66.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4667],{31241:(e,t,r)=>{var s,o=Object.create,n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,i=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,u=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of l(t))p.call(e,o)||o===r||n(e,o,{get:()=>t[o],enumerable:!(s=a(t,o))||s.enumerable});return e},h=(e,t,r)=>(((e,t,r)=>{t in e?n(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),c={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(c,{default:()=>f}),e.exports=(s=c,u(n({},"__esModule",{value:!0}),s));var d=((e,t,r)=>(r=null!=e?o(i(e)):{},u(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),y=r(43887),m=r(62773);class f extends d.Component{constructor(){super(...arguments),h(this,"callPlayer",y.callPlayer),h(this,"duration",null),h(this,"currentTime",null),h(this,"secondsLoaded",null),h(this,"mute",(()=>{})),h(this,"unmute",(()=>{})),h(this,"ref",(e=>{this.iframe=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){(0,y.getSDK)("https://widget.mixcloud.com/media/js/widgetApi.js","Mixcloud").then((e=>{this.player=e.PlayerWidget(this.iframe),this.player.ready.then((()=>{this.player.events.play.on(this.props.onPlay),this.player.events.pause.on(this.props.onPause),this.player.events.ended.on(this.props.onEnded),this.player.events.error.on(this.props.error),this.player.events.progress.on(((e,t)=>{this.currentTime=e,this.duration=t})),this.props.onReady()}))}),this.props.onError)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("seek",e),t||this.pause()}setVolume(e){}getDuration(){return this.duration}getCurrentTime(){return this.currentTime}getSecondsLoaded(){return null}render(){const{url:e,config:t}=this.props,r=e.match(m.MATCH_URL_MIXCLOUD)[1],s=(0,y.queryString)({...t.options,feed:`/${r}/`});return d.default.createElement("iframe",{key:r,ref:this.ref,style:{width:"100%",height:"100%"},src:`https://www.mixcloud.com/widget/iframe/?${s}`,frameBorder:"0",allow:"autoplay"})}}h(f,"displayName","Mixcloud"),h(f,"canPlay",m.canPlay.mixcloud),h(f,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerPreview.2267cb44.js b/assets/js/reactPlayerPreview.2267cb44.js
new file mode 100644
index 00000000000..8a546d7b5a2
--- /dev/null
+++ b/assets/js/reactPlayerPreview.2267cb44.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7664],{76148:(e,t,r)=>{var a,n=Object.create,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,p=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of o(t))c.call(e,n)||n===r||i(e,n,{get:()=>t[n],enumerable:!(a=l(t,n))||a.enumerable});return e},d=(e,t,r)=>(((e,t,r)=>{t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),u={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(u,{default:()=>b}),e.exports=(a=u,p(i({},"__esModule",{value:!0}),a));var h=((e,t,r)=>(r=null!=e?n(s(e)):{},p(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(27378));const m="64px",g={};class b extends h.Component{constructor(){super(...arguments),d(this,"mounted",!1),d(this,"state",{image:null}),d(this,"handleKeyPress",(e=>{"Enter"!==e.key&&" "!==e.key||this.props.onClick()}))}componentDidMount(){this.mounted=!0,this.fetchImage(this.props)}componentDidUpdate(e){const{url:t,light:r}=this.props;e.url===t&&e.light===r||this.fetchImage(this.props)}componentWillUnmount(){this.mounted=!1}fetchImage({url:e,light:t,oEmbedUrl:r}){if(!h.default.isValidElement(t))if("string"!=typeof t){if(!g[e])return this.setState({image:null}),window.fetch(r.replace("{url}",e)).then((e=>e.json())).then((t=>{if(t.thumbnail_url&&this.mounted){const r=t.thumbnail_url.replace("height=100","height=480").replace("-d_295x166","-d_640");this.setState({image:r}),g[e]=r}}));this.setState({image:g[e]})}else this.setState({image:t})}render(){const{light:e,onClick:t,playIcon:r,previewTabIndex:a}=this.props,{image:n}=this.state,i=h.default.isValidElement(e),l={display:"flex",alignItems:"center",justifyContent:"center"},o={preview:{width:"100%",height:"100%",backgroundImage:n&&!i?`url(${n})`:void 0,backgroundSize:"cover",backgroundPosition:"center",cursor:"pointer",...l},shadow:{background:"radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)",borderRadius:m,width:m,height:m,position:i?"absolute":void 0,...l},playIcon:{borderStyle:"solid",borderWidth:"16px 0 16px 26px",borderColor:"transparent transparent transparent white",marginLeft:"7px"}},s=h.default.createElement("div",{style:o.shadow,className:"react-player__shadow"},h.default.createElement("div",{style:o.playIcon,className:"react-player__play-icon"}));return h.default.createElement("div",{style:o.preview,className:"react-player__preview",onClick:t,tabIndex:a,onKeyPress:this.handleKeyPress},i?e:null,r||s)}}}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerPreview.bb38780d.js b/assets/js/reactPlayerPreview.bb38780d.js
new file mode 100644
index 00000000000..c21b499db87
--- /dev/null
+++ b/assets/js/reactPlayerPreview.bb38780d.js
@@ -0,0 +1,149 @@
+exports.id = 664;
+exports.ids = [664];
+exports.modules = {
+
+/***/ 76148:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Preview_exports = {};
+__export(Preview_exports, {
+ default: () => Preview
+});
+module.exports = __toCommonJS(Preview_exports);
+var import_react = __toESM(__webpack_require__(27378));
+const ICON_SIZE = "64px";
+const cache = {};
+class Preview extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "mounted", false);
+ __publicField(this, "state", {
+ image: null
+ });
+ __publicField(this, "handleKeyPress", (e) => {
+ if (e.key === "Enter" || e.key === " ") {
+ this.props.onClick();
+ }
+ });
+ }
+ componentDidMount() {
+ this.mounted = true;
+ this.fetchImage(this.props);
+ }
+ componentDidUpdate(prevProps) {
+ const { url, light } = this.props;
+ if (prevProps.url !== url || prevProps.light !== light) {
+ this.fetchImage(this.props);
+ }
+ }
+ componentWillUnmount() {
+ this.mounted = false;
+ }
+ fetchImage({ url, light, oEmbedUrl }) {
+ if (import_react.default.isValidElement(light)) {
+ return;
+ }
+ if (typeof light === "string") {
+ this.setState({ image: light });
+ return;
+ }
+ if (cache[url]) {
+ this.setState({ image: cache[url] });
+ return;
+ }
+ this.setState({ image: null });
+ return window.fetch(oEmbedUrl.replace("{url}", url)).then((response) => response.json()).then((data) => {
+ if (data.thumbnail_url && this.mounted) {
+ const image = data.thumbnail_url.replace("height=100", "height=480").replace("-d_295x166", "-d_640");
+ this.setState({ image });
+ cache[url] = image;
+ }
+ });
+ }
+ render() {
+ const { light, onClick, playIcon, previewTabIndex } = this.props;
+ const { image } = this.state;
+ const isElement = import_react.default.isValidElement(light);
+ const flexCenter = {
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center"
+ };
+ const styles = {
+ preview: {
+ width: "100%",
+ height: "100%",
+ backgroundImage: image && !isElement ? `url(${image})` : void 0,
+ backgroundSize: "cover",
+ backgroundPosition: "center",
+ cursor: "pointer",
+ ...flexCenter
+ },
+ shadow: {
+ background: "radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)",
+ borderRadius: ICON_SIZE,
+ width: ICON_SIZE,
+ height: ICON_SIZE,
+ position: isElement ? "absolute" : void 0,
+ ...flexCenter
+ },
+ playIcon: {
+ borderStyle: "solid",
+ borderWidth: "16px 0 16px 26px",
+ borderColor: "transparent transparent transparent white",
+ marginLeft: "7px"
+ }
+ };
+ const defaultPlayIcon = /* @__PURE__ */ import_react.default.createElement("div", { style: styles.shadow, className: "react-player__shadow" }, /* @__PURE__ */ import_react.default.createElement("div", { style: styles.playIcon, className: "react-player__play-icon" }));
+ return /* @__PURE__ */ import_react.default.createElement(
+ "div",
+ {
+ style: styles.preview,
+ className: "react-player__preview",
+ onClick,
+ tabIndex: previewTabIndex,
+ onKeyPress: this.handleKeyPress
+ },
+ isElement ? light : null,
+ playIcon || defaultPlayIcon
+ );
+ }
+}
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerSoundCloud.b843d475.js b/assets/js/reactPlayerSoundCloud.b843d475.js
new file mode 100644
index 00000000000..6040862fd8d
--- /dev/null
+++ b/assets/js/reactPlayerSoundCloud.b843d475.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6125],{54992:(e,t,r)=>{var s,o=Object.create,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,n=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,p=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of a(t))u.call(e,o)||o===r||i(e,o,{get:()=>t[o],enumerable:!(s=l(t,o))||s.enumerable});return e},h=(e,t,r)=>(((e,t,r)=>{t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),d={};((e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})})(d,{default:()=>f}),e.exports=(s=d,p(i({},"__esModule",{value:!0}),s));var c=((e,t,r)=>(r=null!=e?o(n(e)):{},p(!t&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),y=r(43887),m=r(62773);class f extends c.Component{constructor(){super(...arguments),h(this,"callPlayer",y.callPlayer),h(this,"duration",null),h(this,"currentTime",null),h(this,"fractionLoaded",null),h(this,"mute",(()=>{this.setVolume(0)})),h(this,"unmute",(()=>{null!==this.props.volume&&this.setVolume(this.props.volume)})),h(this,"ref",(e=>{this.iframe=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e,t){(0,y.getSDK)("https://w.soundcloud.com/player/api.js","SC").then((r=>{if(!this.iframe)return;const{PLAY:s,PLAY_PROGRESS:o,PAUSE:i,FINISH:l,ERROR:a}=r.Widget.Events;t||(this.player=r.Widget(this.iframe),this.player.bind(s,this.props.onPlay),this.player.bind(i,(()=>{this.duration-this.currentTime<.05||this.props.onPause()})),this.player.bind(o,(e=>{this.currentTime=e.currentPosition/1e3,this.fractionLoaded=e.loadedProgress})),this.player.bind(l,(()=>this.props.onEnded())),this.player.bind(a,(e=>this.props.onError(e)))),this.player.load(e,{...this.props.config.options,callback:()=>{this.player.getDuration((e=>{this.duration=e/1e3,this.props.onReady()}))}})}))}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("seekTo",1e3*e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",100*e)}getDuration(){return this.duration}getCurrentTime(){return this.currentTime}getSecondsLoaded(){return this.fractionLoaded*this.duration}render(){const{display:e}=this.props,t={width:"100%",height:"100%",display:e};return c.default.createElement("iframe",{ref:this.ref,src:`https://w.soundcloud.com/player/?url=${encodeURIComponent(this.props.url)}`,style:t,frameBorder:0,allow:"autoplay"})}}h(f,"displayName","SoundCloud"),h(f,"canPlay",m.canPlay.soundcloud),h(f,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerSoundCloud.f5722153.js b/assets/js/reactPlayerSoundCloud.f5722153.js
new file mode 100644
index 00000000000..e0e0ea5cff8
--- /dev/null
+++ b/assets/js/reactPlayerSoundCloud.f5722153.js
@@ -0,0 +1,158 @@
+exports.id = 125;
+exports.ids = [125];
+exports.modules = {
+
+/***/ 54992:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var SoundCloud_exports = {};
+__export(SoundCloud_exports, {
+ default: () => SoundCloud
+});
+module.exports = __toCommonJS(SoundCloud_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://w.soundcloud.com/player/api.js";
+const SDK_GLOBAL = "SC";
+class SoundCloud extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "duration", null);
+ __publicField(this, "currentTime", null);
+ __publicField(this, "fractionLoaded", null);
+ __publicField(this, "mute", () => {
+ this.setVolume(0);
+ });
+ __publicField(this, "unmute", () => {
+ if (this.props.volume !== null) {
+ this.setVolume(this.props.volume);
+ }
+ });
+ __publicField(this, "ref", (iframe) => {
+ this.iframe = iframe;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url, isReady) {
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((SC) => {
+ if (!this.iframe)
+ return;
+ const { PLAY, PLAY_PROGRESS, PAUSE, FINISH, ERROR } = SC.Widget.Events;
+ if (!isReady) {
+ this.player = SC.Widget(this.iframe);
+ this.player.bind(PLAY, this.props.onPlay);
+ this.player.bind(PAUSE, () => {
+ const remaining = this.duration - this.currentTime;
+ if (remaining < 0.05) {
+ return;
+ }
+ this.props.onPause();
+ });
+ this.player.bind(PLAY_PROGRESS, (e) => {
+ this.currentTime = e.currentPosition / 1e3;
+ this.fractionLoaded = e.loadedProgress;
+ });
+ this.player.bind(FINISH, () => this.props.onEnded());
+ this.player.bind(ERROR, (e) => this.props.onError(e));
+ }
+ this.player.load(url, {
+ ...this.props.config.options,
+ callback: () => {
+ this.player.getDuration((duration) => {
+ this.duration = duration / 1e3;
+ this.props.onReady();
+ });
+ }
+ });
+ });
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("seekTo", seconds * 1e3);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction * 100);
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.currentTime;
+ }
+ getSecondsLoaded() {
+ return this.fractionLoaded * this.duration;
+ }
+ render() {
+ const { display } = this.props;
+ const style = {
+ width: "100%",
+ height: "100%",
+ display
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ "iframe",
+ {
+ ref: this.ref,
+ src: `https://w.soundcloud.com/player/?url=${encodeURIComponent(this.props.url)}`,
+ style,
+ frameBorder: 0,
+ allow: "autoplay"
+ }
+ );
+ }
+}
+__publicField(SoundCloud, "displayName", "SoundCloud");
+__publicField(SoundCloud, "canPlay", import_patterns.canPlay.soundcloud);
+__publicField(SoundCloud, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerStreamable.353efec6.js b/assets/js/reactPlayerStreamable.353efec6.js
new file mode 100644
index 00000000000..ccf88e11a16
--- /dev/null
+++ b/assets/js/reactPlayerStreamable.353efec6.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2546],{5876:(e,t,r)=>{var s,a=Object.create,o=Object.defineProperty,l=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,u=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of n(t))p.call(e,a)||a===r||o(e,a,{get:()=>t[a],enumerable:!(s=l(t,a))||s.enumerable});return e},h=(e,t,r)=>(((e,t,r)=>{t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),c={};((e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})})(c,{default:()=>f}),e.exports=(s=c,u(o({},"__esModule",{value:!0}),s));var d=((e,t,r)=>(r=null!=e?a(i(e)):{},u(!t&&e&&e.__esModule?r:o(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),y=r(43887),m=r(62773);class f extends d.Component{constructor(){super(...arguments),h(this,"callPlayer",y.callPlayer),h(this,"duration",null),h(this,"currentTime",null),h(this,"secondsLoaded",null),h(this,"mute",(()=>{this.callPlayer("mute")})),h(this,"unmute",(()=>{this.callPlayer("unmute")})),h(this,"ref",(e=>{this.iframe=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){(0,y.getSDK)("https://cdn.embed.ly/player-0.1.0.min.js","playerjs").then((e=>{this.iframe&&(this.player=new e.Player(this.iframe),this.player.setLoop(this.props.loop),this.player.on("ready",this.props.onReady),this.player.on("play",this.props.onPlay),this.player.on("pause",this.props.onPause),this.player.on("seeked",this.props.onSeek),this.player.on("ended",this.props.onEnded),this.player.on("error",this.props.onError),this.player.on("timeupdate",(({duration:e,seconds:t})=>{this.duration=e,this.currentTime=t})),this.player.on("buffered",(({percent:e})=>{this.duration&&(this.secondsLoaded=this.duration*e)})),this.props.muted&&this.player.mute())}),this.props.onError)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){}seekTo(e,t=!0){this.callPlayer("setCurrentTime",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",100*e)}setLoop(e){this.callPlayer("setLoop",e)}getDuration(){return this.duration}getCurrentTime(){return this.currentTime}getSecondsLoaded(){return this.secondsLoaded}render(){const e=this.props.url.match(m.MATCH_URL_STREAMABLE)[1];return d.default.createElement("iframe",{ref:this.ref,src:`https://streamable.com/o/${e}`,frameBorder:"0",scrolling:"no",style:{width:"100%",height:"100%"},allow:"encrypted-media; autoplay; fullscreen;"})}}h(f,"displayName","Streamable"),h(f,"canPlay",m.canPlay.streamable)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerStreamable.8d57960a.js b/assets/js/reactPlayerStreamable.8d57960a.js
new file mode 100644
index 00000000000..7e555b815ec
--- /dev/null
+++ b/assets/js/reactPlayerStreamable.8d57960a.js
@@ -0,0 +1,151 @@
+exports.id = 546;
+exports.ids = [546];
+exports.modules = {
+
+/***/ 5876:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Streamable_exports = {};
+__export(Streamable_exports, {
+ default: () => Streamable
+});
+module.exports = __toCommonJS(Streamable_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://cdn.embed.ly/player-0.1.0.min.js";
+const SDK_GLOBAL = "playerjs";
+class Streamable extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "duration", null);
+ __publicField(this, "currentTime", null);
+ __publicField(this, "secondsLoaded", null);
+ __publicField(this, "mute", () => {
+ this.callPlayer("mute");
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("unmute");
+ });
+ __publicField(this, "ref", (iframe) => {
+ this.iframe = iframe;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((playerjs) => {
+ if (!this.iframe)
+ return;
+ this.player = new playerjs.Player(this.iframe);
+ this.player.setLoop(this.props.loop);
+ this.player.on("ready", this.props.onReady);
+ this.player.on("play", this.props.onPlay);
+ this.player.on("pause", this.props.onPause);
+ this.player.on("seeked", this.props.onSeek);
+ this.player.on("ended", this.props.onEnded);
+ this.player.on("error", this.props.onError);
+ this.player.on("timeupdate", ({ duration, seconds }) => {
+ this.duration = duration;
+ this.currentTime = seconds;
+ });
+ this.player.on("buffered", ({ percent }) => {
+ if (this.duration) {
+ this.secondsLoaded = this.duration * percent;
+ }
+ });
+ if (this.props.muted) {
+ this.player.mute();
+ }
+ }, this.props.onError);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("setCurrentTime", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction * 100);
+ }
+ setLoop(loop) {
+ this.callPlayer("setLoop", loop);
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.currentTime;
+ }
+ getSecondsLoaded() {
+ return this.secondsLoaded;
+ }
+ render() {
+ const id = this.props.url.match(import_patterns.MATCH_URL_STREAMABLE)[1];
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ "iframe",
+ {
+ ref: this.ref,
+ src: `https://streamable.com/o/${id}`,
+ frameBorder: "0",
+ scrolling: "no",
+ style,
+ allow: "encrypted-media; autoplay; fullscreen;"
+ }
+ );
+ }
+}
+__publicField(Streamable, "displayName", "Streamable");
+__publicField(Streamable, "canPlay", import_patterns.canPlay.streamable);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerTwitch.32269018.js b/assets/js/reactPlayerTwitch.32269018.js
new file mode 100644
index 00000000000..cffbf8fcd59
--- /dev/null
+++ b/assets/js/reactPlayerTwitch.32269018.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6216],{67964:(e,t,r)=>{var s,a=Object.create,l=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,h=(e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of i(t))p.call(e,a)||a===r||l(e,a,{get:()=>t[a],enumerable:!(s=n(t,a))||s.enumerable});return e},d=(e,t,r)=>(((e,t,r)=>{t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r),y={};((e,t)=>{for(var r in t)l(e,r,{get:t[r],enumerable:!0})})(y,{default:()=>P}),e.exports=(s=y,h(l({},"__esModule",{value:!0}),s));var c=((e,t,r)=>(r=null!=e?a(o(e)):{},h(!t&&e&&e.__esModule?r:l(r,"default",{value:e,enumerable:!0}),e)))(r(27378)),u=r(43887),m=r(62773);class P extends c.Component{constructor(){super(...arguments),d(this,"callPlayer",u.callPlayer),d(this,"playerID",this.props.config.playerId||`twitch-player-${(0,u.randomString)()}`),d(this,"mute",(()=>{this.callPlayer("setMuted",!0)})),d(this,"unmute",(()=>{this.callPlayer("setMuted",!1)}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e,t){const{playsinline:r,onError:s,config:a,controls:l}=this.props,n=m.MATCH_URL_TWITCH_CHANNEL.test(e),i=n?e.match(m.MATCH_URL_TWITCH_CHANNEL)[1]:e.match(m.MATCH_URL_TWITCH_VIDEO)[1];t?n?this.player.setChannel(i):this.player.setVideo("v"+i):(0,u.getSDK)("https://player.twitch.tv/js/embed/v1.js","Twitch").then((t=>{this.player=new t.Player(this.playerID,{video:n?"":i,channel:n?i:"",height:"100%",width:"100%",playsinline:r,autoplay:this.props.playing,muted:this.props.muted,controls:!!n||l,time:(0,u.parseStartTime)(e),...a.options});const{READY:s,PLAYING:o,PAUSE:p,ENDED:h,ONLINE:d,OFFLINE:y,SEEK:c}=t.Player;this.player.addEventListener(s,this.props.onReady),this.player.addEventListener(o,this.props.onPlay),this.player.addEventListener(p,this.props.onPause),this.player.addEventListener(h,this.props.onEnded),this.player.addEventListener(c,this.props.onSeek),this.player.addEventListener(d,this.props.onLoaded),this.player.addEventListener(y,this.props.onLoaded)}),s)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){this.callPlayer("pause")}seekTo(e,t=!0){this.callPlayer("seek",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}getDuration(){return this.callPlayer("getDuration")}getCurrentTime(){return this.callPlayer("getCurrentTime")}getSecondsLoaded(){return null}render(){return c.default.createElement("div",{style:{width:"100%",height:"100%"},id:this.playerID})}}d(P,"displayName","Twitch"),d(P,"canPlay",m.canPlay.twitch),d(P,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerTwitch.b5a39db7.js b/assets/js/reactPlayerTwitch.b5a39db7.js
new file mode 100644
index 00000000000..c03ae264aaa
--- /dev/null
+++ b/assets/js/reactPlayerTwitch.b5a39db7.js
@@ -0,0 +1,145 @@
+exports.id = 216;
+exports.ids = [216];
+exports.modules = {
+
+/***/ 67964:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Twitch_exports = {};
+__export(Twitch_exports, {
+ default: () => Twitch
+});
+module.exports = __toCommonJS(Twitch_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://player.twitch.tv/js/embed/v1.js";
+const SDK_GLOBAL = "Twitch";
+const PLAYER_ID_PREFIX = "twitch-player-";
+class Twitch extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "playerID", this.props.config.playerId || `${PLAYER_ID_PREFIX}${(0, import_utils.randomString)()}`);
+ __publicField(this, "mute", () => {
+ this.callPlayer("setMuted", true);
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("setMuted", false);
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url, isReady) {
+ const { playsinline, onError, config, controls } = this.props;
+ const isChannel = import_patterns.MATCH_URL_TWITCH_CHANNEL.test(url);
+ const id = isChannel ? url.match(import_patterns.MATCH_URL_TWITCH_CHANNEL)[1] : url.match(import_patterns.MATCH_URL_TWITCH_VIDEO)[1];
+ if (isReady) {
+ if (isChannel) {
+ this.player.setChannel(id);
+ } else {
+ this.player.setVideo("v" + id);
+ }
+ return;
+ }
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((Twitch2) => {
+ this.player = new Twitch2.Player(this.playerID, {
+ video: isChannel ? "" : id,
+ channel: isChannel ? id : "",
+ height: "100%",
+ width: "100%",
+ playsinline,
+ autoplay: this.props.playing,
+ muted: this.props.muted,
+ // https://github.com/CookPete/react-player/issues/733#issuecomment-549085859
+ controls: isChannel ? true : controls,
+ time: (0, import_utils.parseStartTime)(url),
+ ...config.options
+ });
+ const { READY, PLAYING, PAUSE, ENDED, ONLINE, OFFLINE, SEEK } = Twitch2.Player;
+ this.player.addEventListener(READY, this.props.onReady);
+ this.player.addEventListener(PLAYING, this.props.onPlay);
+ this.player.addEventListener(PAUSE, this.props.onPause);
+ this.player.addEventListener(ENDED, this.props.onEnded);
+ this.player.addEventListener(SEEK, this.props.onSeek);
+ this.player.addEventListener(ONLINE, this.props.onLoaded);
+ this.player.addEventListener(OFFLINE, this.props.onLoaded);
+ }, onError);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ this.callPlayer("pause");
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("seek", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ getDuration() {
+ return this.callPlayer("getDuration");
+ }
+ getCurrentTime() {
+ return this.callPlayer("getCurrentTime");
+ }
+ getSecondsLoaded() {
+ return null;
+ }
+ render() {
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement("div", { style, id: this.playerID });
+ }
+}
+__publicField(Twitch, "displayName", "Twitch");
+__publicField(Twitch, "canPlay", import_patterns.canPlay.twitch);
+__publicField(Twitch, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerVidyard.9886dd59.js b/assets/js/reactPlayerVidyard.9886dd59.js
new file mode 100644
index 00000000000..103b1ac0249
--- /dev/null
+++ b/assets/js/reactPlayerVidyard.9886dd59.js
@@ -0,0 +1,149 @@
+exports.id = 888;
+exports.ids = [888];
+exports.modules = {
+
+/***/ 57473:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Vidyard_exports = {};
+__export(Vidyard_exports, {
+ default: () => Vidyard
+});
+module.exports = __toCommonJS(Vidyard_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://play.vidyard.com/embed/v4.js";
+const SDK_GLOBAL = "VidyardV4";
+const SDK_GLOBAL_READY = "onVidyardAPI";
+class Vidyard extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "mute", () => {
+ this.setVolume(0);
+ });
+ __publicField(this, "unmute", () => {
+ if (this.props.volume !== null) {
+ this.setVolume(this.props.volume);
+ }
+ });
+ __publicField(this, "ref", (container) => {
+ this.container = container;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ const { playing, config, onError, onDuration } = this.props;
+ const id = url && url.match(import_patterns.MATCH_URL_VIDYARD)[1];
+ if (this.player) {
+ this.stop();
+ }
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then((Vidyard2) => {
+ if (!this.container)
+ return;
+ Vidyard2.api.addReadyListener((data, player) => {
+ if (this.player) {
+ return;
+ }
+ this.player = player;
+ this.player.on("ready", this.props.onReady);
+ this.player.on("play", this.props.onPlay);
+ this.player.on("pause", this.props.onPause);
+ this.player.on("seek", this.props.onSeek);
+ this.player.on("playerComplete", this.props.onEnded);
+ }, id);
+ Vidyard2.api.renderPlayer({
+ uuid: id,
+ container: this.container,
+ autoplay: playing ? 1 : 0,
+ ...config.options
+ });
+ Vidyard2.api.getPlayerMetadata(id).then((meta) => {
+ this.duration = meta.length_in_seconds;
+ onDuration(meta.length_in_seconds);
+ });
+ }, onError);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ window.VidyardV4.api.destroyPlayer(this.player);
+ }
+ seekTo(amount, keepPlaying = true) {
+ this.callPlayer("seek", amount);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ setPlaybackRate(rate) {
+ this.callPlayer("setPlaybackSpeed", rate);
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.callPlayer("currentTime");
+ }
+ getSecondsLoaded() {
+ return null;
+ }
+ render() {
+ const { display } = this.props;
+ const style = {
+ width: "100%",
+ height: "100%",
+ display
+ };
+ return /* @__PURE__ */ import_react.default.createElement("div", { style }, /* @__PURE__ */ import_react.default.createElement("div", { ref: this.ref }));
+ }
+}
+__publicField(Vidyard, "displayName", "Vidyard");
+__publicField(Vidyard, "canPlay", import_patterns.canPlay.vidyard);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerVidyard.aa75b509.js b/assets/js/reactPlayerVidyard.aa75b509.js
new file mode 100644
index 00000000000..10de204742d
--- /dev/null
+++ b/assets/js/reactPlayerVidyard.aa75b509.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8888],{57473:(e,t,a)=>{var r,s=Object.create,l=Object.defineProperty,o=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,y=(e,t,a,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of n(t))p.call(e,s)||s===a||l(e,s,{get:()=>t[s],enumerable:!(r=o(t,s))||r.enumerable});return e},u=(e,t,a)=>(((e,t,a)=>{t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a})(e,"symbol"!=typeof t?t+"":t,a),a),h={};((e,t)=>{for(var a in t)l(e,a,{get:t[a],enumerable:!0})})(h,{default:()=>P}),e.exports=(r=h,y(l({},"__esModule",{value:!0}),r));var d=((e,t,a)=>(a=null!=e?s(i(e)):{},y(!t&&e&&e.__esModule?a:l(a,"default",{value:e,enumerable:!0}),e)))(a(27378)),c=a(43887),m=a(62773);class P extends d.Component{constructor(){super(...arguments),u(this,"callPlayer",c.callPlayer),u(this,"mute",(()=>{this.setVolume(0)})),u(this,"unmute",(()=>{null!==this.props.volume&&this.setVolume(this.props.volume)})),u(this,"ref",(e=>{this.container=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){const{playing:t,config:a,onError:r,onDuration:s}=this.props,l=e&&e.match(m.MATCH_URL_VIDYARD)[1];this.player&&this.stop(),(0,c.getSDK)("https://play.vidyard.com/embed/v4.js","VidyardV4","onVidyardAPI").then((e=>{this.container&&(e.api.addReadyListener(((e,t)=>{this.player||(this.player=t,this.player.on("ready",this.props.onReady),this.player.on("play",this.props.onPlay),this.player.on("pause",this.props.onPause),this.player.on("seek",this.props.onSeek),this.player.on("playerComplete",this.props.onEnded))}),l),e.api.renderPlayer({uuid:l,container:this.container,autoplay:t?1:0,...a.options}),e.api.getPlayerMetadata(l).then((e=>{this.duration=e.length_in_seconds,s(e.length_in_seconds)})))}),r)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){window.VidyardV4.api.destroyPlayer(this.player)}seekTo(e,t=!0){this.callPlayer("seek",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}setPlaybackRate(e){this.callPlayer("setPlaybackSpeed",e)}getDuration(){return this.duration}getCurrentTime(){return this.callPlayer("currentTime")}getSecondsLoaded(){return null}render(){const{display:e}=this.props,t={width:"100%",height:"100%",display:e};return d.default.createElement("div",{style:t},d.default.createElement("div",{ref:this.ref}))}}u(P,"displayName","Vidyard"),u(P,"canPlay",m.canPlay.vidyard)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerVimeo.43335252.js b/assets/js/reactPlayerVimeo.43335252.js
new file mode 100644
index 00000000000..7e36aa3ed43
--- /dev/null
+++ b/assets/js/reactPlayerVimeo.43335252.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3743],{81251:(e,t,s)=>{var r,o=Object.create,a=Object.defineProperty,i=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,h=(e,t,s,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of n(t))p.call(e,o)||o===s||a(e,o,{get:()=>t[o],enumerable:!(r=i(t,o))||r.enumerable});return e},u=(e,t,s)=>(((e,t,s)=>{t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s})(e,"symbol"!=typeof t?t+"":t,s),s),c={};((e,t)=>{for(var s in t)a(e,s,{get:t[s],enumerable:!0})})(c,{default:()=>b}),e.exports=(r=c,h(a({},"__esModule",{value:!0}),r));var y=((e,t,s)=>(s=null!=e?o(l(e)):{},h(!t&&e&&e.__esModule?s:a(s,"default",{value:e,enumerable:!0}),e)))(s(27378)),d=s(43887),f=s(62773);const m=e=>e.replace("/manage/videos","");class b extends y.Component{constructor(){super(...arguments),u(this,"callPlayer",d.callPlayer),u(this,"duration",null),u(this,"currentTime",null),u(this,"secondsLoaded",null),u(this,"mute",(()=>{this.setMuted(!0)})),u(this,"unmute",(()=>{this.setMuted(!1)})),u(this,"ref",(e=>{this.container=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){this.duration=null,(0,d.getSDK)("https://player.vimeo.com/api/player.js","Vimeo").then((t=>{if(!this.container)return;const{playerOptions:s,title:r}=this.props.config;this.player=new t.Player(this.container,{url:m(e),autoplay:this.props.playing,muted:this.props.muted,loop:this.props.loop,playsinline:this.props.playsinline,controls:this.props.controls,...s}),this.player.ready().then((()=>{const e=this.container.querySelector("iframe");e.style.width="100%",e.style.height="100%",r&&(e.title=r)})).catch(this.props.onError),this.player.on("loaded",(()=>{this.props.onReady(),this.refreshDuration()})),this.player.on("play",(()=>{this.props.onPlay(),this.refreshDuration()})),this.player.on("pause",this.props.onPause),this.player.on("seeked",(e=>this.props.onSeek(e.seconds))),this.player.on("ended",this.props.onEnded),this.player.on("error",this.props.onError),this.player.on("timeupdate",(({seconds:e})=>{this.currentTime=e})),this.player.on("progress",(({seconds:e})=>{this.secondsLoaded=e})),this.player.on("bufferstart",this.props.onBuffer),this.player.on("bufferend",this.props.onBufferEnd),this.player.on("playbackratechange",(e=>this.props.onPlaybackRateChange(e.playbackRate)))}),this.props.onError)}refreshDuration(){this.player.getDuration().then((e=>{this.duration=e}))}play(){const e=this.callPlayer("play");e&&e.catch(this.props.onError)}pause(){this.callPlayer("pause")}stop(){this.callPlayer("unload")}seekTo(e,t=!0){this.callPlayer("setCurrentTime",e),t||this.pause()}setVolume(e){this.callPlayer("setVolume",e)}setMuted(e){this.callPlayer("setMuted",e)}setLoop(e){this.callPlayer("setLoop",e)}setPlaybackRate(e){this.callPlayer("setPlaybackRate",e)}getDuration(){return this.duration}getCurrentTime(){return this.currentTime}getSecondsLoaded(){return this.secondsLoaded}render(){const{display:e}=this.props,t={width:"100%",height:"100%",overflow:"hidden",display:e};return y.default.createElement("div",{key:this.props.url,ref:this.ref,style:t})}}u(b,"displayName","Vimeo"),u(b,"canPlay",f.canPlay.vimeo),u(b,"forceLoad",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerVimeo.afd0735a.js b/assets/js/reactPlayerVimeo.afd0735a.js
new file mode 100644
index 00000000000..ea9948bae58
--- /dev/null
+++ b/assets/js/reactPlayerVimeo.afd0735a.js
@@ -0,0 +1,190 @@
+exports.id = 743;
+exports.ids = [743];
+exports.modules = {
+
+/***/ 81251:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Vimeo_exports = {};
+__export(Vimeo_exports, {
+ default: () => Vimeo
+});
+module.exports = __toCommonJS(Vimeo_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://player.vimeo.com/api/player.js";
+const SDK_GLOBAL = "Vimeo";
+const cleanUrl = (url) => {
+ return url.replace("/manage/videos", "");
+};
+class Vimeo extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ // Prevent checking isLoading when URL changes
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "duration", null);
+ __publicField(this, "currentTime", null);
+ __publicField(this, "secondsLoaded", null);
+ __publicField(this, "mute", () => {
+ this.setMuted(true);
+ });
+ __publicField(this, "unmute", () => {
+ this.setMuted(false);
+ });
+ __publicField(this, "ref", (container) => {
+ this.container = container;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ this.duration = null;
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((Vimeo2) => {
+ if (!this.container)
+ return;
+ const { playerOptions, title } = this.props.config;
+ this.player = new Vimeo2.Player(this.container, {
+ url: cleanUrl(url),
+ autoplay: this.props.playing,
+ muted: this.props.muted,
+ loop: this.props.loop,
+ playsinline: this.props.playsinline,
+ controls: this.props.controls,
+ ...playerOptions
+ });
+ this.player.ready().then(() => {
+ const iframe = this.container.querySelector("iframe");
+ iframe.style.width = "100%";
+ iframe.style.height = "100%";
+ if (title) {
+ iframe.title = title;
+ }
+ }).catch(this.props.onError);
+ this.player.on("loaded", () => {
+ this.props.onReady();
+ this.refreshDuration();
+ });
+ this.player.on("play", () => {
+ this.props.onPlay();
+ this.refreshDuration();
+ });
+ this.player.on("pause", this.props.onPause);
+ this.player.on("seeked", (e) => this.props.onSeek(e.seconds));
+ this.player.on("ended", this.props.onEnded);
+ this.player.on("error", this.props.onError);
+ this.player.on("timeupdate", ({ seconds }) => {
+ this.currentTime = seconds;
+ });
+ this.player.on("progress", ({ seconds }) => {
+ this.secondsLoaded = seconds;
+ });
+ this.player.on("bufferstart", this.props.onBuffer);
+ this.player.on("bufferend", this.props.onBufferEnd);
+ this.player.on("playbackratechange", (e) => this.props.onPlaybackRateChange(e.playbackRate));
+ }, this.props.onError);
+ }
+ refreshDuration() {
+ this.player.getDuration().then((duration) => {
+ this.duration = duration;
+ });
+ }
+ play() {
+ const promise = this.callPlayer("play");
+ if (promise) {
+ promise.catch(this.props.onError);
+ }
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ this.callPlayer("unload");
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("setCurrentTime", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction);
+ }
+ setMuted(muted) {
+ this.callPlayer("setMuted", muted);
+ }
+ setLoop(loop) {
+ this.callPlayer("setLoop", loop);
+ }
+ setPlaybackRate(rate) {
+ this.callPlayer("setPlaybackRate", rate);
+ }
+ getDuration() {
+ return this.duration;
+ }
+ getCurrentTime() {
+ return this.currentTime;
+ }
+ getSecondsLoaded() {
+ return this.secondsLoaded;
+ }
+ render() {
+ const { display } = this.props;
+ const style = {
+ width: "100%",
+ height: "100%",
+ overflow: "hidden",
+ display
+ };
+ return /* @__PURE__ */ import_react.default.createElement(
+ "div",
+ {
+ key: this.props.url,
+ ref: this.ref,
+ style
+ }
+ );
+ }
+}
+__publicField(Vimeo, "displayName", "Vimeo");
+__publicField(Vimeo, "canPlay", import_patterns.canPlay.vimeo);
+__publicField(Vimeo, "forceLoad", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerWistia.7ac13b2f.js b/assets/js/reactPlayerWistia.7ac13b2f.js
new file mode 100644
index 00000000000..1e06580c6d8
--- /dev/null
+++ b/assets/js/reactPlayerWistia.7ac13b2f.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8055],{2521:(e,t,a)=>{var s,n=Object.create,l=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,h=(e,t,a,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of i(t))p.call(e,n)||n===a||l(e,n,{get:()=>t[n],enumerable:!(s=o(t,n))||s.enumerable});return e},u=(e,t,a)=>(((e,t,a)=>{t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a})(e,"symbol"!=typeof t?t+"":t,a),a),y={};((e,t)=>{for(var a in t)l(e,a,{get:t[a],enumerable:!0})})(y,{default:()=>P}),e.exports=(s=y,h(l({},"__esModule",{value:!0}),s));var c=((e,t,a)=>(a=null!=e?n(r(e)):{},h(!t&&e&&e.__esModule?a:l(a,"default",{value:e,enumerable:!0}),e)))(a(27378)),d=a(43887),b=a(62773);class P extends c.Component{constructor(){super(...arguments),u(this,"callPlayer",d.callPlayer),u(this,"playerID",this.props.config.playerId||`wistia-player-${(0,d.randomString)()}`),u(this,"onPlay",((...e)=>this.props.onPlay(...e))),u(this,"onPause",((...e)=>this.props.onPause(...e))),u(this,"onSeek",((...e)=>this.props.onSeek(...e))),u(this,"onEnded",((...e)=>this.props.onEnded(...e))),u(this,"onPlaybackRateChange",((...e)=>this.props.onPlaybackRateChange(...e))),u(this,"mute",(()=>{this.callPlayer("mute")})),u(this,"unmute",(()=>{this.callPlayer("unmute")}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}load(e){const{playing:t,muted:a,controls:s,onReady:n,config:l,onError:o}=this.props;(0,d.getSDK)("https://fast.wistia.com/assets/external/E-v1.js","Wistia").then((e=>{l.customControls&&l.customControls.forEach((t=>e.defineControl(t))),window._wq=window._wq||[],window._wq.push({id:this.playerID,options:{autoPlay:t,silentAutoPlay:"allow",muted:a,controlsVisibleOnLoad:s,fullscreenButton:s,playbar:s,playbackRateControl:s,qualityControl:s,volumeControl:s,settingsControl:s,smallPlayButton:s,...l.options},onReady:e=>{this.player=e,this.unbind(),this.player.bind("play",this.onPlay),this.player.bind("pause",this.onPause),this.player.bind("seek",this.onSeek),this.player.bind("end",this.onEnded),this.player.bind("playbackratechange",this.onPlaybackRateChange),n()}})}),o)}unbind(){this.player.unbind("play",this.onPlay),this.player.unbind("pause",this.onPause),this.player.unbind("seek",this.onSeek),this.player.unbind("end",this.onEnded),this.player.unbind("playbackratechange",this.onPlaybackRateChange)}play(){this.callPlayer("play")}pause(){this.callPlayer("pause")}stop(){this.unbind(),this.callPlayer("remove")}seekTo(e,t=!0){this.callPlayer("time",e),t||this.pause()}setVolume(e){this.callPlayer("volume",e)}setPlaybackRate(e){this.callPlayer("playbackRate",e)}getDuration(){return this.callPlayer("duration")}getCurrentTime(){return this.callPlayer("time")}getSecondsLoaded(){return null}render(){const{url:e}=this.props,t=e&&e.match(b.MATCH_URL_WISTIA)[1],a=`wistia_embed wistia_async_${t}`;return c.default.createElement("div",{id:this.playerID,key:t,className:a,style:{width:"100%",height:"100%"}})}}u(P,"displayName","Wistia"),u(P,"canPlay",b.canPlay.wistia),u(P,"loopOnEnded",!0)}}]);
\ No newline at end of file
diff --git a/assets/js/reactPlayerWistia.a6be884e.js b/assets/js/reactPlayerWistia.a6be884e.js
new file mode 100644
index 00000000000..6d46d4c9d16
--- /dev/null
+++ b/assets/js/reactPlayerWistia.a6be884e.js
@@ -0,0 +1,165 @@
+exports.id = 55;
+exports.ids = [55];
+exports.modules = {
+
+/***/ 2521:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var Wistia_exports = {};
+__export(Wistia_exports, {
+ default: () => Wistia
+});
+module.exports = __toCommonJS(Wistia_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://fast.wistia.com/assets/external/E-v1.js";
+const SDK_GLOBAL = "Wistia";
+const PLAYER_ID_PREFIX = "wistia-player-";
+class Wistia extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "playerID", this.props.config.playerId || `${PLAYER_ID_PREFIX}${(0, import_utils.randomString)()}`);
+ // Proxy methods to prevent listener leaks
+ __publicField(this, "onPlay", (...args) => this.props.onPlay(...args));
+ __publicField(this, "onPause", (...args) => this.props.onPause(...args));
+ __publicField(this, "onSeek", (...args) => this.props.onSeek(...args));
+ __publicField(this, "onEnded", (...args) => this.props.onEnded(...args));
+ __publicField(this, "onPlaybackRateChange", (...args) => this.props.onPlaybackRateChange(...args));
+ __publicField(this, "mute", () => {
+ this.callPlayer("mute");
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("unmute");
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ load(url) {
+ const { playing, muted, controls, onReady, config, onError } = this.props;
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL).then((Wistia2) => {
+ if (config.customControls) {
+ config.customControls.forEach((control) => Wistia2.defineControl(control));
+ }
+ window._wq = window._wq || [];
+ window._wq.push({
+ id: this.playerID,
+ options: {
+ autoPlay: playing,
+ silentAutoPlay: "allow",
+ muted,
+ controlsVisibleOnLoad: controls,
+ fullscreenButton: controls,
+ playbar: controls,
+ playbackRateControl: controls,
+ qualityControl: controls,
+ volumeControl: controls,
+ settingsControl: controls,
+ smallPlayButton: controls,
+ ...config.options
+ },
+ onReady: (player) => {
+ this.player = player;
+ this.unbind();
+ this.player.bind("play", this.onPlay);
+ this.player.bind("pause", this.onPause);
+ this.player.bind("seek", this.onSeek);
+ this.player.bind("end", this.onEnded);
+ this.player.bind("playbackratechange", this.onPlaybackRateChange);
+ onReady();
+ }
+ });
+ }, onError);
+ }
+ unbind() {
+ this.player.unbind("play", this.onPlay);
+ this.player.unbind("pause", this.onPause);
+ this.player.unbind("seek", this.onSeek);
+ this.player.unbind("end", this.onEnded);
+ this.player.unbind("playbackratechange", this.onPlaybackRateChange);
+ }
+ play() {
+ this.callPlayer("play");
+ }
+ pause() {
+ this.callPlayer("pause");
+ }
+ stop() {
+ this.unbind();
+ this.callPlayer("remove");
+ }
+ seekTo(seconds, keepPlaying = true) {
+ this.callPlayer("time", seconds);
+ if (!keepPlaying) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("volume", fraction);
+ }
+ setPlaybackRate(rate) {
+ this.callPlayer("playbackRate", rate);
+ }
+ getDuration() {
+ return this.callPlayer("duration");
+ }
+ getCurrentTime() {
+ return this.callPlayer("time");
+ }
+ getSecondsLoaded() {
+ return null;
+ }
+ render() {
+ const { url } = this.props;
+ const videoID = url && url.match(import_patterns.MATCH_URL_WISTIA)[1];
+ const className = `wistia_embed wistia_async_${videoID}`;
+ const style = {
+ width: "100%",
+ height: "100%"
+ };
+ return /* @__PURE__ */ import_react.default.createElement("div", { id: this.playerID, key: videoID, className, style });
+ }
+}
+__publicField(Wistia, "displayName", "Wistia");
+__publicField(Wistia, "canPlay", import_patterns.canPlay.wistia);
+__publicField(Wistia, "loopOnEnded", true);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerYouTube.0e0bb5ba.js b/assets/js/reactPlayerYouTube.0e0bb5ba.js
new file mode 100644
index 00000000000..69af00c253d
--- /dev/null
+++ b/assets/js/reactPlayerYouTube.0e0bb5ba.js
@@ -0,0 +1,235 @@
+exports.id = 439;
+exports.ids = [439];
+exports.modules = {
+
+/***/ 38144:
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var YouTube_exports = {};
+__export(YouTube_exports, {
+ default: () => YouTube
+});
+module.exports = __toCommonJS(YouTube_exports);
+var import_react = __toESM(__webpack_require__(27378));
+var import_utils = __webpack_require__(43887);
+var import_patterns = __webpack_require__(62773);
+const SDK_URL = "https://www.youtube.com/iframe_api";
+const SDK_GLOBAL = "YT";
+const SDK_GLOBAL_READY = "onYouTubeIframeAPIReady";
+const MATCH_PLAYLIST = /[?&](?:list|channel)=([a-zA-Z0-9_-]+)/;
+const MATCH_USER_UPLOADS = /user\/([a-zA-Z0-9_-]+)\/?/;
+const MATCH_NOCOOKIE = /youtube-nocookie\.com/;
+const NOCOOKIE_HOST = "https://www.youtube-nocookie.com";
+class YouTube extends import_react.Component {
+ constructor() {
+ super(...arguments);
+ __publicField(this, "callPlayer", import_utils.callPlayer);
+ __publicField(this, "parsePlaylist", (url) => {
+ if (url instanceof Array) {
+ return {
+ listType: "playlist",
+ playlist: url.map(this.getID).join(",")
+ };
+ }
+ if (MATCH_PLAYLIST.test(url)) {
+ const [, playlistId] = url.match(MATCH_PLAYLIST);
+ return {
+ listType: "playlist",
+ list: playlistId.replace(/^UC/, "UU")
+ };
+ }
+ if (MATCH_USER_UPLOADS.test(url)) {
+ const [, username] = url.match(MATCH_USER_UPLOADS);
+ return {
+ listType: "user_uploads",
+ list: username
+ };
+ }
+ return {};
+ });
+ __publicField(this, "onStateChange", (event) => {
+ const { data } = event;
+ const { onPlay, onPause, onBuffer, onBufferEnd, onEnded, onReady, loop, config: { playerVars, onUnstarted } } = this.props;
+ const { UNSTARTED, PLAYING, PAUSED, BUFFERING, ENDED, CUED } = window[SDK_GLOBAL].PlayerState;
+ if (data === UNSTARTED)
+ onUnstarted();
+ if (data === PLAYING) {
+ onPlay();
+ onBufferEnd();
+ }
+ if (data === PAUSED)
+ onPause();
+ if (data === BUFFERING)
+ onBuffer();
+ if (data === ENDED) {
+ const isPlaylist = !!this.callPlayer("getPlaylist");
+ if (loop && !isPlaylist) {
+ if (playerVars.start) {
+ this.seekTo(playerVars.start);
+ } else {
+ this.play();
+ }
+ }
+ onEnded();
+ }
+ if (data === CUED)
+ onReady();
+ });
+ __publicField(this, "mute", () => {
+ this.callPlayer("mute");
+ });
+ __publicField(this, "unmute", () => {
+ this.callPlayer("unMute");
+ });
+ __publicField(this, "ref", (container) => {
+ this.container = container;
+ });
+ }
+ componentDidMount() {
+ this.props.onMount && this.props.onMount(this);
+ }
+ getID(url) {
+ if (!url || url instanceof Array || MATCH_PLAYLIST.test(url)) {
+ return null;
+ }
+ return url.match(import_patterns.MATCH_URL_YOUTUBE)[1];
+ }
+ load(url, isReady) {
+ const { playing, muted, playsinline, controls, loop, config, onError } = this.props;
+ const { playerVars, embedOptions } = config;
+ const id = this.getID(url);
+ if (isReady) {
+ if (MATCH_PLAYLIST.test(url) || MATCH_USER_UPLOADS.test(url) || url instanceof Array) {
+ this.player.loadPlaylist(this.parsePlaylist(url));
+ return;
+ }
+ this.player.cueVideoById({
+ videoId: id,
+ startSeconds: (0, import_utils.parseStartTime)(url) || playerVars.start,
+ endSeconds: (0, import_utils.parseEndTime)(url) || playerVars.end
+ });
+ return;
+ }
+ (0, import_utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, (YT) => YT.loaded).then((YT) => {
+ if (!this.container)
+ return;
+ this.player = new YT.Player(this.container, {
+ width: "100%",
+ height: "100%",
+ videoId: id,
+ playerVars: {
+ autoplay: playing ? 1 : 0,
+ mute: muted ? 1 : 0,
+ controls: controls ? 1 : 0,
+ start: (0, import_utils.parseStartTime)(url),
+ end: (0, import_utils.parseEndTime)(url),
+ origin: window.location.origin,
+ playsinline: playsinline ? 1 : 0,
+ ...this.parsePlaylist(url),
+ ...playerVars
+ },
+ events: {
+ onReady: () => {
+ if (loop) {
+ this.player.setLoop(true);
+ }
+ this.props.onReady();
+ },
+ onPlaybackRateChange: (event) => this.props.onPlaybackRateChange(event.data),
+ onPlaybackQualityChange: (event) => this.props.onPlaybackQualityChange(event),
+ onStateChange: this.onStateChange,
+ onError: (event) => onError(event.data)
+ },
+ host: MATCH_NOCOOKIE.test(url) ? NOCOOKIE_HOST : void 0,
+ ...embedOptions
+ });
+ }, onError);
+ if (embedOptions.events) {
+ console.warn("Using `embedOptions.events` will likely break things. Use ReactPlayer\u2019s callback props instead, eg onReady, onPlay, onPause");
+ }
+ }
+ play() {
+ this.callPlayer("playVideo");
+ }
+ pause() {
+ this.callPlayer("pauseVideo");
+ }
+ stop() {
+ if (!document.body.contains(this.callPlayer("getIframe")))
+ return;
+ this.callPlayer("stopVideo");
+ }
+ seekTo(amount, keepPlaying = false) {
+ this.callPlayer("seekTo", amount);
+ if (!keepPlaying && !this.props.playing) {
+ this.pause();
+ }
+ }
+ setVolume(fraction) {
+ this.callPlayer("setVolume", fraction * 100);
+ }
+ setPlaybackRate(rate) {
+ this.callPlayer("setPlaybackRate", rate);
+ }
+ setLoop(loop) {
+ this.callPlayer("setLoop", loop);
+ }
+ getDuration() {
+ return this.callPlayer("getDuration");
+ }
+ getCurrentTime() {
+ return this.callPlayer("getCurrentTime");
+ }
+ getSecondsLoaded() {
+ return this.callPlayer("getVideoLoadedFraction") * this.getDuration();
+ }
+ render() {
+ const { display } = this.props;
+ const style = {
+ width: "100%",
+ height: "100%",
+ display
+ };
+ return /* @__PURE__ */ import_react.default.createElement("div", { style }, /* @__PURE__ */ import_react.default.createElement("div", { ref: this.ref }));
+ }
+}
+__publicField(YouTube, "displayName", "YouTube");
+__publicField(YouTube, "canPlay", import_patterns.canPlay.youtube);
+
+
+/***/ })
+
+};
+;
\ No newline at end of file
diff --git a/assets/js/reactPlayerYouTube.7c09aa1f.js b/assets/js/reactPlayerYouTube.7c09aa1f.js
new file mode 100644
index 00000000000..38dabcc7447
--- /dev/null
+++ b/assets/js/reactPlayerYouTube.7c09aa1f.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4439],{38144:(e,t,a)=>{var s,o=Object.create,l=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,y=(e,t,a,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of n(t))p.call(e,o)||o===a||l(e,o,{get:()=>t[o],enumerable:!(s=r(t,o))||s.enumerable});return e},c=(e,t,a)=>(((e,t,a)=>{t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a})(e,"symbol"!=typeof t?t+"":t,a),a),u={};((e,t)=>{for(var a in t)l(e,a,{get:t[a],enumerable:!0})})(u,{default:()=>b}),e.exports=(s=u,y(l({},"__esModule",{value:!0}),s));var h=((e,t,a)=>(a=null!=e?o(i(e)):{},y(!t&&e&&e.__esModule?a:l(a,"default",{value:e,enumerable:!0}),e)))(a(27378)),d=a(43887),P=a(62773);const m=/[?&](?:list|channel)=([a-zA-Z0-9_-]+)/,f=/user\/([a-zA-Z0-9_-]+)\/?/,g=/youtube-nocookie\.com/;class b extends h.Component{constructor(){super(...arguments),c(this,"callPlayer",d.callPlayer),c(this,"parsePlaylist",(e=>{if(e instanceof Array)return{listType:"playlist",playlist:e.map(this.getID).join(",")};if(m.test(e)){const[,t]=e.match(m);return{listType:"playlist",list:t.replace(/^UC/,"UU")}}if(f.test(e)){const[,t]=e.match(f);return{listType:"user_uploads",list:t}}return{}})),c(this,"onStateChange",(e=>{const{data:t}=e,{onPlay:a,onPause:s,onBuffer:o,onBufferEnd:l,onEnded:r,onReady:n,loop:i,config:{playerVars:p,onUnstarted:y}}=this.props,{UNSTARTED:c,PLAYING:u,PAUSED:h,BUFFERING:d,ENDED:P,CUED:m}=window.YT.PlayerState;if(t===c&&y(),t===u&&(a(),l()),t===h&&s(),t===d&&o(),t===P){const e=!!this.callPlayer("getPlaylist");i&&!e&&(p.start?this.seekTo(p.start):this.play()),r()}t===m&&n()})),c(this,"mute",(()=>{this.callPlayer("mute")})),c(this,"unmute",(()=>{this.callPlayer("unMute")})),c(this,"ref",(e=>{this.container=e}))}componentDidMount(){this.props.onMount&&this.props.onMount(this)}getID(e){return!e||e instanceof Array||m.test(e)?null:e.match(P.MATCH_URL_YOUTUBE)[1]}load(e,t){const{playing:a,muted:s,playsinline:o,controls:l,loop:r,config:n,onError:i}=this.props,{playerVars:p,embedOptions:y}=n,c=this.getID(e);if(t)return m.test(e)||f.test(e)||e instanceof Array?void this.player.loadPlaylist(this.parsePlaylist(e)):void this.player.cueVideoById({videoId:c,startSeconds:(0,d.parseStartTime)(e)||p.start,endSeconds:(0,d.parseEndTime)(e)||p.end});(0,d.getSDK)("https://www.youtube.com/iframe_api","YT","onYouTubeIframeAPIReady",(e=>e.loaded)).then((t=>{this.container&&(this.player=new t.Player(this.container,{width:"100%",height:"100%",videoId:c,playerVars:{autoplay:a?1:0,mute:s?1:0,controls:l?1:0,start:(0,d.parseStartTime)(e),end:(0,d.parseEndTime)(e),origin:window.location.origin,playsinline:o?1:0,...this.parsePlaylist(e),...p},events:{onReady:()=>{r&&this.player.setLoop(!0),this.props.onReady()},onPlaybackRateChange:e=>this.props.onPlaybackRateChange(e.data),onPlaybackQualityChange:e=>this.props.onPlaybackQualityChange(e),onStateChange:this.onStateChange,onError:e=>i(e.data)},host:g.test(e)?"https://www.youtube-nocookie.com":void 0,...y}))}),i),y.events&&console.warn("Using `embedOptions.events` will likely break things. Use ReactPlayer\u2019s callback props instead, eg onReady, onPlay, onPause")}play(){this.callPlayer("playVideo")}pause(){this.callPlayer("pauseVideo")}stop(){document.body.contains(this.callPlayer("getIframe"))&&this.callPlayer("stopVideo")}seekTo(e,t=!1){this.callPlayer("seekTo",e),t||this.props.playing||this.pause()}setVolume(e){this.callPlayer("setVolume",100*e)}setPlaybackRate(e){this.callPlayer("setPlaybackRate",e)}setLoop(e){this.callPlayer("setLoop",e)}getDuration(){return this.callPlayer("getDuration")}getCurrentTime(){return this.callPlayer("getCurrentTime")}getSecondsLoaded(){return this.callPlayer("getVideoLoadedFraction")*this.getDuration()}render(){const{display:e}=this.props,t={width:"100%",height:"100%",display:e};return h.default.createElement("div",{style:t},h.default.createElement("div",{ref:this.ref}))}}c(b,"displayName","YouTube"),c(b,"canPlay",P.canPlay.youtube)}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.702e5015.js b/assets/js/runtime~main.702e5015.js
deleted file mode 100644
index 4a509ac5334..00000000000
--- a/assets/js/runtime~main.702e5015.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i