Compare commits

...

1092 commits

Author SHA1 Message Date
Florent Benoit
37290bca7d fix: resolve CVE-2026-33750 in brace-expansion
Some checks are pending
Argos CI Screenshots / take screenshots (push) Waiting to run
Publish codecov report from main branch / Run tests and push coverage result (push) Waiting to run
e2e-kubernetes-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / macos-15-intel update e2e tests (push) Waiting to run
e2e-tests-main / macos-26 update e2e tests (push) Waiting to run
e2e-tests-main / Run E2E tests - flatpak-build (push) Waiting to run
e2e-tests-main / Run E2E tests - source-build (push) Waiting to run
Managed configuration tests / Managed configuration tests - macos-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - ubuntu-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - windows-2025 (push) Waiting to run
next build / Tagging (push) Waiting to run
next build / Build / macos-15 (push) Blocked by required conditions
next build / Build / ubuntu-24.04 (push) Blocked by required conditions
next build / Build / windows-2025 (push) Blocked by required conditions
next build / Release (push) Blocked by required conditions
Publish NPM packages to npmjs.com using OIDC / Prepare version info (push) Waiting to run
Publish NPM packages to npmjs.com using OIDC / Publish to npm (push) Blocked by required conditions
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Publish Website / Build and deploy website (push) Waiting to run
Upgrade brace-expansion to satisfy >=1.1.13
Advisory: https://github.com/advisories/GHSA-f886-m6hf-6m8v

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-21 19:15:07 +02:00
Václav Vančura
ed851e9be1
refactor(renderer): add title support and verb-derived buttons to withConfirmation utility (#17178)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-21 16:06:10 +00:00
Václav Vančura
db70016815
refactor(main): use consistent titles and buttons for auth and navigation dialogs (#17188)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-21 16:01:49 +00:00
axel7083
c705d458ef
chore(eslint): enable vitest/prefer-import-in-mock (#16879)
* chore(eslint): enable `vitest/prefer-import-in-mock`

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: rebase

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-21 17:28:06 +02:00
Václav Vančura
7b54b87662
fix(ui): replace raw tailwind color with design token in ListOrganizer (#17152) 2026-04-21 15:03:46 +00:00
Václav Vančura
0430335b02
refactor(ui): replace hardcoded tailwind colors in ProviderInfoCircle with color-registry tokens (#17153)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:02:43 +00:00
Václav Vančura
084a9c81fd
refactor(ui): use color-registry token in SearchInput search icon (#17151) 2026-04-21 15:01:18 +00:00
Jiri Dostal
d332326fcf fix(spinner): fix spinner style scoping
Assisted-by: Claude Code

Signed-off-by: Jiri Dostal <jdostal@redhat.com>
2026-04-21 16:38:19 +02:00
Evžen Gasta
2bc23a12ac
feat: added support for error property in connections (#17117)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 14:56:16 +02:00
Vaclav Vancura
fab0045295 refactor(onboarding): replace bg-black with color-registry variable
Use `--pd-modal-fade` CSS variable for the cancel setup overlay
background instead of the hard-coded `bg-black` Tailwind color, so
the overlay respects the active theme (dark/light).

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-21 14:43:19 +02:00
Václav Vančura
8fab680fbd
refactor(renderer): replace raw Tailwind colors with color-registry values in auth providers (#17138) 2026-04-21 12:14:19 +00:00
Václav Vančura
9c5dd461ab
refactor(preferences): add color-registry token to PreferencesKubernetesContextsRendering (#17137)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-21 12:13:50 +00:00
Václav Vančura
379a3be9c7
refactor(extensions): replace divide-gray-900 with color-registry token in InstalledExtensionCard (#17136)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:13:27 +00:00
Václav Vančura
84fe71f4ed
refactor(color-registry): replace hover:text-white with color-registry token in WindowsControlButton (#17135)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:12:49 +00:00
Václav Vančura
62d69b85bd
fix(ui): increase spinner segment opacity for better contrast (#17145) 2026-04-21 12:12:41 +00:00
Václav Vančura
2cf9337b7f
refactor(network): replace raw Tailwind colors with color-registry tokens in CreateNetwork (#17155) 2026-04-21 11:47:16 +00:00
SoniaSandler
e0c6784076 chore: bump version to 1.28.0
Signed-off-by: SoniaSandler <fbenoit@redhat.com>
2026-04-21 12:35:23 +02:00
Evžen Gasta
677f704339
refactor: extracted duplicit code to function (#17154)
Some checks are pending
Argos CI Screenshots / take screenshots (push) Waiting to run
Publish codecov report from main branch / Run tests and push coverage result (push) Waiting to run
e2e-kubernetes-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / Run E2E tests - flatpak-build (push) Waiting to run
e2e-tests-main / Run E2E tests - source-build (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / macos-15-intel update e2e tests (push) Waiting to run
e2e-tests-main / macos-26 update e2e tests (push) Waiting to run
Managed configuration tests / Managed configuration tests - macos-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - ubuntu-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - windows-2025 (push) Waiting to run
next build / Tagging (push) Waiting to run
next build / Build / macos-15 (push) Blocked by required conditions
next build / Build / ubuntu-24.04 (push) Blocked by required conditions
next build / Build / windows-2025 (push) Blocked by required conditions
next build / Release (push) Blocked by required conditions
Publish NPM packages to npmjs.com using OIDC / Prepare version info (push) Waiting to run
Publish NPM packages to npmjs.com using OIDC / Publish to npm (push) Blocked by required conditions
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Publish Website / Build and deploy website (push) Waiting to run
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-21 10:19:55 +02:00
Vladimir Lazar
76b1a0b24e
chore(fix): fixing compose e2e tests to handle new flow (#17165)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-04-21 10:53:02 +03:00
dependabot[bot]
7e0b9fbb85 chore(deps): bump @fortawesome/react-fontawesome
Bumps the fortawesome group with 1 update: [@fortawesome/react-fontawesome](https://github.com/FortAwesome/react-fontawesome).


Updates `@fortawesome/react-fontawesome` from 3.3.0 to 3.3.1
- [Release notes](https://github.com/FortAwesome/react-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/react-fontawesome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/react-fontawesome/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/react-fontawesome"
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-21 09:44:56 +02:00
dependabot[bot]
c250891a69 chore(deps-dev): bump the tailwindcss group with 3 updates
Bumps the tailwindcss group with 3 updates: [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite), [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss).


Updates `@tailwindcss/vite` from 4.2.2 to 4.2.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.3/packages/@tailwindcss-vite)

Updates `tailwindcss` from 4.2.2 to 4.2.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.3/packages/tailwindcss)

Updates `@tailwindcss/postcss` from 4.2.2 to 4.2.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.3/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: tailwindcss
  dependency-version: 4.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-21 09:42:53 +02:00
axel7083
22edd8a72c
chore(main): prefer-import-in-mock (#17133)
* chore(main): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: type issue

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-21 09:24:57 +02:00
dependabot[bot]
a94fd69497 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.58.2 to 8.59.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.58.2 to 8.59.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.0/packages/parser)

Updates `typescript-eslint` from 8.58.2 to 8.59.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.59.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.59.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.59.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-21 09:08:21 +02:00
Václav Vančura
ed2d1396df
fix(troubleshooting): remove malformed leading ellipsis from waiting-for-response strings (#17141) 2026-04-21 05:08:29 +00:00
Florent Benoit
610b704bf0 fix: resolve GHSA-39q2-94rc-95cp in dompurify
Some checks are pending
Argos CI Screenshots / take screenshots (push) Waiting to run
Publish codecov report from main branch / Run tests and push coverage result (push) Waiting to run
e2e-kubernetes-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / Run E2E tests - flatpak-build (push) Waiting to run
e2e-tests-main / Run E2E tests - source-build (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / macos-15-intel update e2e tests (push) Waiting to run
e2e-tests-main / macos-26 update e2e tests (push) Waiting to run
Managed configuration tests / Managed configuration tests - macos-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - ubuntu-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - windows-2025 (push) Waiting to run
next build / Tagging (push) Waiting to run
next build / Build / macos-15 (push) Blocked by required conditions
next build / Build / ubuntu-24.04 (push) Blocked by required conditions
next build / Build / windows-2025 (push) Blocked by required conditions
next build / Release (push) Blocked by required conditions
Publish NPM packages to npmjs.com using OIDC / Prepare version info (push) Waiting to run
Publish NPM packages to npmjs.com using OIDC / Publish to npm (push) Blocked by required conditions
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Publish Website / Build and deploy website (push) Waiting to run
Upgrade dompurify to satisfy >=3.4.0
Advisory: https://github.com/advisories/GHSA-39q2-94rc-95cp

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 20:16:20 +02:00
axel7083
67d62bcc36
chore(registry-setup): writing auth.json should have proper permissions (#17103)
refactor(registry-setup): specify file mode

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-20 17:33:05 +00:00
Florent Benoit
57c18d1cfd fix: resolve GHSA-r4q5-vmmm-2653 in follow-redirects
Upgrade follow-redirects to satisfy >=1.16.0
Advisory: https://github.com/advisories/GHSA-r4q5-vmmm-2653

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 19:24:09 +02:00
Florent Benoit
2852e4572a fix: resolve CVE-2026-34043 in serialize-javascript
Some checks are pending
Argos CI Screenshots / take screenshots (push) Waiting to run
Publish codecov report from main branch / Run tests and push coverage result (push) Waiting to run
e2e-kubernetes-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / Run E2E tests - flatpak-build (push) Waiting to run
e2e-tests-main / Run E2E tests - source-build (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / macos-15-intel update e2e tests (push) Waiting to run
e2e-tests-main / macos-26 update e2e tests (push) Waiting to run
Managed configuration tests / Managed configuration tests - macos-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - ubuntu-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - windows-2025 (push) Waiting to run
next build / Tagging (push) Waiting to run
next build / Build / macos-15 (push) Blocked by required conditions
next build / Build / ubuntu-24.04 (push) Blocked by required conditions
next build / Build / windows-2025 (push) Blocked by required conditions
next build / Release (push) Blocked by required conditions
Publish NPM packages to npmjs.com using OIDC / Prepare version info (push) Waiting to run
Publish NPM packages to npmjs.com using OIDC / Publish to npm (push) Blocked by required conditions
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Publish Website / Build and deploy website (push) Waiting to run
Upgrade serialize-javascript to satisfy >=7.0.5
Advisory: https://github.com/advisories/GHSA-qj8w-gfj5-8c6v

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 18:05:38 +02:00
Florent Benoit
cbe635999f fix: resolve advisory-1115393 in smol-toml
Upgrade smol-toml to satisfy >=1.6.1
Advisory: https://github.com/advisories/GHSA-v3rj-xjv7-4jmq

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 16:52:33 +02:00
ScrewTSW
0974507339
feat(ci): add E2E workflow for testing flatpak bundles (#16838)
* feat(ci): add E2E workflow for testing flatpak bundles
* feat(ci): integrate flatpak E2E tests into e2e-main workflow via matrix strategy

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 14:46:41 +00:00
Václav Vančura
691ae51e5d
fix(ui): remove space before ellipsis in loading and action button labels (#17142) 2026-04-20 13:54:51 +00:00
dependabot[bot]
b1a7696fac
chore(deps-dev): bump jsdom from 28.0.0 to 29.0.2 (#16979)
* chore(deps-dev): bump jsdom from 28.0.0 to 29.0.2

Bumps [jsdom](https://github.com/jsdom/jsdom) from 28.0.0 to 29.0.2.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v28.0.0...v29.0.2)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 29.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 13:24:06 +00:00
axel7083
933d0b9e3d
refactor(registry-setup): modernise node:fs usage (#17101)
* refactor(registry-setup): modernise node:fs usage

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: linter

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-20 12:50:58 +00:00
dependabot[bot]
8e74ede344 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.1.4 to 4.2.0
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.2.0/packages/core)

Updates `@argos-ci/playwright` from 6.6.1 to 6.6.2
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.6.2/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.6.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 14:46:36 +02:00
axel7083
ba239b6e76
chore(preload*): prefer-import-in-mock (#17128)
* chore(preload): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* chore(preload-webview): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-20 12:43:16 +00:00
axel7083
f23545d832
chore(renderer): prefer-import-in-mock (#17132)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-20 12:42:49 +00:00
Florent Benoit
c086bc7f5a chore(deps): update stream-json to v2.1.0
fixes https://github.com/podman-desktop/podman-desktop/issues/16899

side-notes:
- remove the @types package as now it's exporting types
- replace import in tests as it was a re-export
https://github.com/uhop/stream-json/blob/1.9.1/Assembler.js#L3

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 14:37:08 +02:00
Florent Benoit
e245f3cfe7 fix: resolve CVE-2026-34601 in @xmldom/xmldom
related to https://github.com/advisories/GHSA-wh4c-j3r5-mjhp

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 14:36:25 +02:00
Florent Benoit
c221c3d1f0 chore: resolve CVE-2026-4800 in lodash
update to v4.18.1 to fix https://github.com/advisories/GHSA-r5fr-rjxr-66jc

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 14:36:10 +02:00
Florent Benoit
d75a66690e fix: resolve CVE-2026-41242 in protobufjs
Upgrade protobufjs to satisfy >=7.5.5
Advisory: https://github.com/advisories/GHSA-xq3m-2v4x-88gg

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-20 14:35:52 +02:00
Zheyon
3e6854888b
fix(ui): stop carousel wheel swipes from navigating history (#17116)
* fix(ui): stop carousel wheel swipes from navigating history

Prevent horizontal wheel events handled by the carousel from bubbling.

Add UI and renderer regression tests for the propagation boundary.

Fixes #16531

AI-assisted: GitHub Copilot
Signed-off-by: Zhey-on <anpropagate@aol.com>

* test(renderer): harden nested wheel navigation regression

Add a positive control to prove the global wheel handler is active before\nasserting nested stopped wheel events do not trigger history navigation.\nReset cooldown and mocks between phases to avoid false positives.

AI-assisted: GitHub Copilot
Signed-off-by: Zhey-on <anpropagate@aol.com>

---------

Signed-off-by: Zhey-on <anpropagate@aol.com>
2026-04-20 12:38:23 +02:00
ScrewTSW
c46ea2ccb1
test(e2e): add managed-configuration tests for extensions catalog and local extensions (#17090)
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 12:34:34 +02:00
axel7083
c9c493eca2
refactor(website): vi.mock imports (#16885)
Some checks are pending
Argos CI Screenshots / take screenshots (push) Waiting to run
Publish codecov report from main branch / Run tests and push coverage result (push) Waiting to run
e2e-kubernetes-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / Run All E2E tests (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - custom-extensions (push) Waiting to run
e2e-tests-main / windows-11-arm update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / windows-2025 update e2e tests - vanilla (push) Waiting to run
e2e-tests-main / macos-15-intel update e2e tests (push) Waiting to run
e2e-tests-main / macos-26 update e2e tests (push) Waiting to run
Managed configuration tests / Managed configuration tests - macos-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - ubuntu-latest (push) Waiting to run
Managed configuration tests / Managed configuration tests - windows-2025 (push) Waiting to run
next build / Build / windows-2025 (push) Blocked by required conditions
next build / Release (push) Blocked by required conditions
next build / Tagging (push) Waiting to run
next build / Build / macos-15 (push) Blocked by required conditions
next build / Build / ubuntu-24.04 (push) Blocked by required conditions
Publish NPM packages to npmjs.com using OIDC / Prepare version info (push) Waiting to run
Publish NPM packages to npmjs.com using OIDC / Publish to npm (push) Blocked by required conditions
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Publish Website / Build and deploy website (push) Waiting to run
chore(website): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-20 08:43:58 +00:00
dependabot[bot]
5c232ebeba chore(deps): bump eslint from 10.2.0 to 10.2.1 in the eslint group
Bumps the eslint group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.2.0 to 10.2.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.2.0...v10.2.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 09:37:58 +02:00
dependabot[bot]
3f0776fb6b chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](53b83947a5...48b55a011b)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 09:08:09 +02:00
dependabot[bot]
7e56420be6 chore(deps-dev): bump filesize from 11.0.15 to 11.0.16
Bumps [filesize](https://github.com/avoidwork/filesize.js) from 11.0.15 to 11.0.16.
- [Changelog](https://github.com/avoidwork/filesize.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/avoidwork/filesize.js/compare/11.0.15...11.0.16)

---
updated-dependencies:
- dependency-name: filesize
  dependency-version: 11.0.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 05:45:07 +02:00
Sonia Sandler
8227f59c2a
chore: hide GitHub feedback forms if there are no GitHub feedback links (#17062)
* chore: hide GitHub feedback forms if there are no GitHub feedback links
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: check for GitHub bug or feature links
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix AI suggestions and add test
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add feedbackLinks in product.json
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply reviews
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply reviews
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply comments
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-19 23:05:34 -04:00
Evžen Gasta
0a6b176787
feat(extension-api): added optional error property (#17115)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-17 18:51:06 +02:00
Brian M
d12da0bb82
fix(installer): hyperv only podman install now passes (#17028)
the function would wrongfully return false if there was no podman
binary which caused a premature error for onboarding when hyperv
was the only provider

Signed-off-by: Brian <bmahabir@bu.edu>
2026-04-17 15:54:51 +00:00
Simon Rey
1db1a1212d fix(kind): sync provider version on CLI tool install/uninstall
Signed-off-by: Simon Rey <srey@redhat.com>
Co-authored-by: Simon Rey (via Cursor AI) <srey@redhat.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-17 17:40:23 +02:00
Simon Rey
51d59579df fix(kubectl-cli): sync provider version on CLI tool install/uninstall
Signed-off-by: Simon Rey <srey@redhat.com>
Co-authored-by: Simon Rey (via Cursor AI) <srey@redhat.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-17 17:39:35 +02:00
Sonia Sandler
19d3dbb6fe
chore: use product.json command palette search entries (#16708)
* chore: use product.json command palette search entries
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add safegaurd for searchOptionsWithShortcuts
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add test
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update e2e tests

Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply comments
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

---------

Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-17 10:28:35 -04:00
Simon Rey
72cf8f2e95 fix(compose): remove hardcoded product name from error message
Address review feedback: drop "Podman Desktop" from the version check
failure message and remove duplicated predicate in downloadCommand
when-clause.

Signed-off-by: Simon Rey <simon.rey@outlook.com>
Co-authored-by: Claude <claude@anthropic.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-17 16:07:40 +02:00
Simon Rey
08be405a60 fix(compose): show error step when CLI version fetch fails during onboarding
When the GitHub API rate limit is hit (or any network error occurs),
checkDownloadedCommand now catches the failure, sets a
composeVersionCheckFailed context value, and the onboarding flow
displays a dedicated error step instead of proceeding with broken
placeholder text.

Fixes #13868

Signed-off-by: Simon Rey <simon.rey@outlook.com>
Co-authored-by: Claude <claude@anthropic.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-04-17 16:07:40 +02:00
Václav Vančura
7259f66339
feat(storybook): auto-regenerate themes.css on color-registry changes (#16919)
* feat(storybook): auto-regenerate themes.css on color-registry changes

Add a Vite plugin that watches `color-registry.ts` and
`tailwind-color-palette.json`, then re-runs `storybook:css` and
triggers a full reload.

Also pass explicit svelte config path and watch UI package dist for
changes.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(storybook): queue file changes during in-flight theme regeneration

Previously, saves that arrived while storybook:css was already
running were silently dropped. Now a queued flag is set and a
second regeneration runs after the first completes, so
back-to-back edits are never lost.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(storybook): use node: prefix for Node.js built-in imports

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-17 14:27:59 +02:00
Evžen Gasta
f7f993085f
refactor: moved connection resource usage to separate file (#16908)
* refactor: moved connection resource usage to sepparate file

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: renamed file

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* test: extended code coverage

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 12:35:00 +02:00
Evžen Gasta
e33772fdbd
chore: added lifecycle booleans to provider/connection info types (#17020)
* refactor(Preferences): extracted checks of lifecycle methods to sepparate file

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* test: fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed optional

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: updated related files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 09:47:53 +00:00
Vladimir Lazar
8d2d0da829
chore(fix): ensure reconnection to terminal after container restart (#17076)
chore(fix): fix terminal freeze due to race conditions
2026-04-17 12:38:35 +03:00
dependabot[bot]
743567c5f0 chore(deps-dev): bump msw from 2.13.3 to 2.13.4
Bumps [msw](https://github.com/mswjs/msw) from 2.13.3 to 2.13.4.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.13.3...v2.13.4)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.13.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 10:59:43 +02:00
Simon Rey
854739d581 fix(compose): sync provider version on CLI tool install/uninstall
Signed-off-by: Simon Rey <srey@redhat.com>
Co-authored-by: Simon Rey (via Cursor AI) <srey@redhat.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-17 10:31:41 +02:00
Simon Rey
040aa7f179 feat(agents): add AI skill for scaffolding new Podman Desktop extensions
Add a comprehensive skill at .agents/skills/new-extension/SKILL.md that
guides agents through creating standalone external extensions with:

- Multi-package layout (backend + Svelte frontend + optional shared)
- TypeScript Vite configs (vite.config.ts) with defineConfig
- Svelte 5 with runes syntax and svelte.config.js for preprocessing
- Backend/frontend tsconfig.json with correct targets (Node vs DOM)
- Backend-to-frontend messaging via postMessage
- Containerfile for OCI image packaging
- Build, test, and publish workflows
- Quick reference table for common API patterns

🤖 Generated with AI assistance

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-04-17 10:04:30 +02:00
dependabot[bot]
8eef3cfdbd chore(deps-dev): bump eslint-plugin-sonarjs from 4.0.2 to 4.0.3
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 4.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 09:40:19 +02:00
Sonia Sandler
e860fcfbaa
chore: update electron app name to be from product.json and use correct logs files paths (#17107)
* chore: update electron app name to be from product.json and use correct logs files paths
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update copyrights years
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-16 20:03:27 -04:00
dependabot[bot]
5590f265a2
chore(deps): bump got from 14.4.6 to 15.0.2 (#17049)
* chore(deps): bump got from 14.4.6 to 15.0.2

Bumps [got](https://github.com/sindresorhus/got) from 14.4.6 to 15.0.2.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v14.4.6...v15.0.2)

---
updated-dependencies:
- dependency-name: got
  dependency-version: 15.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fixed typecheck @JustMell0

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-16 22:19:39 +02:00
benoitf
1e08f51b82 chore: Update Podman version to v5.8.2
Signed-off-by: benoitf <benoitf@users.noreply.github.com>
2026-04-16 22:16:17 +02:00
dependabot[bot]
0bea026e78 chore(deps): bump github/codeql-action from 4.35.1 to 4.35.2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c10b8064de...95e58e9a2c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 21:03:02 +02:00
Charlie Drage
5b9d0324cf
chore(dependencies): updates node-forge to 1.4.0 (#17100)
#### What does this PR do?

Updates the node-forge package overide to 1.4.0 (new release:
https://www.npmjs.com/package/node-forge)

Affected function: retrieveWindowsCertificates()

#### Screenshot / video of UI

N/A

#### What issues does this PR fix or reference?

CVE fixes / security alerts.

#### How to test this PR?

Verify that certificate handling with Windows machines works as normal when pulling /
pushing an image behind CA on your host.
Verify "refreshing catalog" works fine / can download extensions
Verify PD on Windows starts up / no errors in console regarding certificate issues.

Signed-off-by: Charlie Drage charlie@charliedrage.com

Signed-off-by: Charlie Drage charlie@charliedrage.com
Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-04-16 11:24:20 -04:00
Evžen Gasta
5161f2f866
refactor(Onboarding): migrated Onboarding component to svelte5 (#17036)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-16 13:14:43 +00:00
Dias Tursynbayev
4344b7bdf9 feat(renderer): add support of danger message box to utilities
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-04-16 12:48:54 +02:00
Dias Tursynbayev
eae172c9a3 feat(extension-api): add showDangerMessage function to extension API
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-04-16 12:48:54 +02:00
Simon Rey
39cf0e88c1 fix(renderer): hide update button when provider has no installed version
When a provider (e.g. Kind) reports updateInfo but the CLI is not
actually installed, the Resources page would show an Update button that
hangs indefinitely when clicked.

Root cause: the Kind extension registers a provider update even when
kindPath is undefined (CLI not installed). Additionally, the renderer
only compared versions without checking that the provider has a version
at all.

Fixes:
- Kind extension: skip provider.registerUpdate when kindPath is not set
- Renderer: require provider.version to exist before showing the button
- ProviderUpdateButton: add the same guard as defense-in-depth

Closes #13639

Signed-off-by: Simon Rey <music.music.music@hotmail.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-16 09:44:16 +02:00
dependabot[bot]
e2bb459bf7 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.15 to 1.6.16
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.15...v1.6.16)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 06:40:11 +02:00
dependabot[bot]
8473f891a1 chore(deps-dev): bump postcss from 8.5.9 to 8.5.10
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.9 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.9...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 06:28:49 +02:00
dependabot[bot]
2c52abd7d0 chore(deps): bump electron from 41.2.0 to 41.2.1
Bumps [electron](https://github.com/electron/electron) from 41.2.0 to 41.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.2.0...v41.2.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 05:54:57 +02:00
dependabot[bot]
dcedd69a5e chore(deps): bump undici from 7.24.7 to 7.25.0
Bumps [undici](https://github.com/nodejs/undici) from 7.24.7 to 7.25.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.7...v7.25.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 05:43:39 +02:00
Sonia Sandler
89c3aebdaa
chore: use product name for title bar text (#16644)
* chore: use product name for TitleBar text
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: adjust product.json property name
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: undo commandPalette change
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply reviews
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-15 11:51:38 -04:00
Simon Rey
0486bdb10c fix(main): add explicit type validation for --output flag in generate-extension-schema script
Co-authored-by: Claude <claude@anthropic.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-15 09:31:37 +02:00
Simon Rey
1908f72bc3 fix(main): let biome format generated schemas normally
Revert the biome ignore for schemas/ and instead run biome format
as the final step of generate:schemas so the committed output
matches what CI produces.

Signed-off-by: Simon Rey <simon@podman-desktop.io>
AI-assisted: yes
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-15 09:31:37 +02:00
Simon Rey
9096743588 fix(main): exclude schemas/ from biome formatting
Generated JSON schemas use JSON.stringify output and should not
be reformatted by biome, avoiding CI drift between generation
and formatting passes.

Signed-off-by: Simon Rey <simon@podman-desktop.io>
AI-assisted: yes
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-15 09:31:37 +02:00
Simon Rey
8dbe31ffd8 feat(main): add schema generation script and CI sync for extension JSON schema
Signed-off-by: Simon Rey <simon@podman-desktop.io>
AI-assisted: yes
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-15 09:31:37 +02:00
dependabot[bot]
78f16add48 chore(deps-dev): bump prettier from 3.8.2 to 3.8.3
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.2 to 3.8.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.2...3.8.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 09:27:18 +02:00
dependabot[bot]
9f18f2e817 chore(deps): bump get-tsconfig from 4.13.7 to 4.14.0
Bumps [get-tsconfig](https://github.com/privatenumber/get-tsconfig) from 4.13.7 to 4.14.0.
- [Release notes](https://github.com/privatenumber/get-tsconfig/releases)
- [Commits](https://github.com/privatenumber/get-tsconfig/compare/v4.13.7...v4.14.0)

---
updated-dependencies:
- dependency-name: get-tsconfig
  dependency-version: 4.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 09:25:55 +02:00
Simon Rey
782d559d78 feat(renderer): use SearchTermParser in extension catalog
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-15 08:53:40 +02:00
dependabot[bot]
4326315cfe chore(deps-dev): bump @biomejs/biome from 2.4.11 to 2.4.12
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.11 to 2.4.12.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.12/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 06:13:28 +02:00
dependabot[bot]
3eccd8215f chore(deps-dev): bump autoprefixer from 10.4.27 to 10.5.0
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.27 to 10.5.0.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.27...10.5.0)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-version: 10.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 18:07:34 +02:00
Simon Rey
4171d71505 fix(renderer): preserve original casing of terms in SearchTermParser
Terms in SearchTermParser were unconditionally lowercased, which caused
the search term to lose its casing when changeScreen stripped filter
tokens and reassigned it — making FilteredEmptyScreen display
"No extensions matching 'a' found" instead of "'A'".

Parser responsibilities separated: terms now retain their original
casing; filter values are still lowercased at parse time since they are
only used for case-insensitive comparison. filterCatalogExtensions is
updated to lowercase terms at comparison time.

AI-assisted

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-14 16:32:16 +02:00
Dias Tursynbayev
b71288e234 refactor(api): unify DialogType definition in @podman-desktop/core-api
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-04-14 16:30:14 +02:00
sheikhlimon
488946ffc0 fix(main): clear timeout handle in withTimeout utility
Co-authored-by: Claude (glm-5.1)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-04-14 14:40:53 +02:00
sheikhlimon
eea5f0e5a2 refactor(main): extract global timeout utility
Extract timeout logic into a shared withTimeout utility

Closes #16701

Co-Authored-By: Claude (glm-5.1)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-04-14 14:40:53 +02:00
Vladimir Lazar
0eaf131dd6
chore(test): refactoring of runner factory class (#17045)
* chore(test): refactoring of runner factory class
2026-04-14 14:31:41 +03:00
dependabot[bot]
a0191823a1 chore(deps-dev): bump msw from 2.13.2 to 2.13.3
Bumps [msw](https://github.com/mswjs/msw) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.13.2...v2.13.3)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.13.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 06:04:52 +02:00
dependabot[bot]
927ff83098 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.58.1 to 8.58.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.2/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.58.1 to 8.58.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.2/packages/parser)

Updates `typescript-eslint` from 8.58.1 to 8.58.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.2/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.58.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.58.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.58.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 05:42:17 +02:00
Evžen Gasta
834f3d322f
fix(Roseta): fixed roseta enablement on macOS Tahoe with Podman 5.6+ (#16924)
* fix(Roseta): fixed roseta enablement on macOS Tahoe with Podman 5.6+

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* refactor: migrated to inversify pattern

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed default podman machine name

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 18:40:45 +00:00
Vladimir Lazar
fdcb323588
chore(test): fixing flaky unit test failing on windows runner (#17042)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-04-13 17:44:31 +03:00
Simon Rey
97610bfb6e feat(renderer): add SearchTermParser for filtered search inputs
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-13 16:16:53 +02:00
Vladimir Lazar
421107891a
chore(test): ensure app process is terminated after closing (#17037)
* chore(test): ensure app process is terminated after closing
2026-04-13 16:22:38 +03:00
Dias Tursynbayev
a5bebccca2 fix(main): remove Manage Docker feature card when Docker Compatibility disabled
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-04-13 11:13:30 +02:00
dependabot[bot]
24f6a825dd chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v7...v7.0.1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 08:56:13 +02:00
dependabot[bot]
3edfcabeec chore(deps-dev): bump typedoc in the typedoc group
Bumps the typedoc group with 1 update: [typedoc](https://github.com/TypeStrong/TypeDoc).


Updates `typedoc` from 0.28.18 to 0.28.19
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.28.18...v0.28.19)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-version: 0.28.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 05:55:06 +02:00
dependabot[bot]
1e25c05d2e chore(deps-dev): bump globals from 17.4.0 to 17.5.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.4.0 to 17.5.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.4.0...v17.5.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 05:43:56 +02:00
Denis Golovin
f4f7b19422
fix: load protocol name from product.json urlProtocol attribute (#16964)
This fix resolves conflict between podman-desktop protocol handlers registered by upstream and downstream projects when installed together for the same user. Each downstream project should maintain unique protocol name across all downstream projects.

Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-04-10 12:06:31 -07:00
Vladyslav Zhukovskyi
083ec72d35 fix(kind): use shared temp directory for image push in Flatpak
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-04-10 20:47:29 +03:00
dependabot[bot]
76b4345b4f
chore(deps-dev): bump eslint-plugin-simple-import-sort from 12.1.1 to 13.0.0 (#16957)
* chore(deps-dev): bump eslint-plugin-simple-import-sort

Bumps [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) from 12.1.1 to 13.0.0.
- [Changelog](https://github.com/lydell/eslint-plugin-simple-import-sort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lydell/eslint-plugin-simple-import-sort/compare/v12.1.1...v13.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-simple-import-sort
  dependency-version: 13.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: apply updated import sorting rules

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-04-10 13:02:34 -04:00
Simon Rey
3b0b8117cd chore(renderer): add search-string package
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-10 18:31:12 +02:00
Sonia Sandler
fd4ed91184
fix: show default app version in statusbar for any auto updater error (#16953)
* fix: show default app version in statusbar for any auto-updater error

Signed-off-by: Sonia Sandler <ssandler@redhat.com>
Co-Authored-By: Charlie Drage <charlie@charliedrage.com>

* chore: apply reviews
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

---------

Signed-off-by: Sonia Sandler <ssandler@redhat.com>
Co-authored-by: Charlie Drage <charlie@charliedrage.com>
2026-04-10 11:26:12 -04:00
Anton Misskii
4c15649334
chore(test): replace testing farm npm targets dropdown (#16969)
Signed-off-by: Anton Misskii <amisskii@redhat.com>
2026-04-10 14:13:32 +00:00
Václav Vančura
6cf8e23672
fix(renderer): deduplicate aria-labels in troubleshooting components (#17023)
* fix(renderer): deduplicate aria-labels in troubleshooting components

Three troubleshooting components had the same aria-label value on two
sibling DOM elements that co-exist simultaneously, making them
indistinguishable for screen readers.

- TroubleshootingRepair: remove redundant aria-label from inner heading
  div; the outer role="region" already carries the "Repair" label and
  the visible text is self-labeling
- TroubleshootingContainerEngines: rename role="status" label from
  "Container Connections" to "Container connections count" to
  distinguish it from the enclosing region
- TroubleshootingPageStores: rename role="list" label from "stores" to
  "stores list" to distinguish it from the role="status" heading

Spec files updated to match the new labels.

Fixes #17021

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* test(renderer): fix aria-label selector in troubleshooting tests

Update getByRole queries to use 'Container connections count'
instead of 'Container Connections', matching the aria-label
added to the role="status" element in TroubleshootingContainerEngines.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:26:23 +02:00
Vladimir Lazar
5d53259db6
chore(test): remove duplicate aria labels (#17022)
chore(test): remove duplicate aria labels
2026-04-10 10:25:16 +00:00
dependabot[bot]
a100507832 chore(deps): bump actions/github-script from 8.0.0 to 9.0.0
Bumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](ed597411d8...3a2844b7e9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 11:51:27 +02:00
Evžen Gasta
07d1cc4861
feat: added navigation entries (#17006)
* feat: added naviagtion entries

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* test(navigation): added tests to check the navigationHandles

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-10 10:43:23 +02:00
dependabot[bot]
7ea054df93 chore(deps-dev): bump the vitest group with 2 updates
Bumps the vitest group with 2 updates: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@vitest/coverage-v8` from 4.1.3 to 4.1.4
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.4/packages/coverage-v8)

Updates `vitest` from 4.1.3 to 4.1.4
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.4/packages/vitest)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 10:09:22 +02:00
Václav Vančura
b70bbeb7ec
feat(ui): redesign button component with semantic color tokens and improved accessibility (#16966)
* refactor(ui): redesign button component with shared color tokens

Rework Button.svelte to use semantic color tokens (primary-border,
secondary-bg, secondary-border, disabled-bg, focus-ring, link-bg, etc.)
instead of hardcoded palette references. Add prerequisite color
dependency validation in initButton, deprecate legacy color aliases
(button-secondary, button-disabled, button-danger-hover-text), and
improve accessibility with aria-disabled, aria-busy, and
focus-visible outlines.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-10 09:51:30 +02:00
dependabot[bot]
b590ec0a81 chore(deps-dev): bump prettier from 3.8.1 to 3.8.2
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.1 to 3.8.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.1...3.8.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 09:23:50 +02:00
dependabot[bot]
9820928c75 chore(deps-dev): bump @biomejs/biome from 2.4.10 to 2.4.11
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.10 to 2.4.11.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.11/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 05:40:32 +02:00
Denis Golovin
5a33ac7c62
fix: change order of 'Allow' and 'Deny' button in confirmation dialog (#16961)
Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-04-09 12:49:08 -07:00
Denis Golovin
5b50f245a2 feat: expose urlProtocol from product.json through extension-api/env module
Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-04-09 15:47:46 -04:00
Sonia Sandler
a7f05e926a
chore: update documentation links to be used from product.json (#16912)
* chore: update documentation links to be used from product.json
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: adjust types in product.json
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-09 15:01:42 -04:00
Vaclav Vancura
1095fded1c refactor(ui): use Tailwind v4 CSS variable shorthand in LinearProgress
Replace `text-[var(--pd-progressBar-text)]` with the Tailwind v4
parenthesis shorthand `text-(--pd-progressBar-text)` in both the
component and its test assertion.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-09 19:02:24 +02:00
Vaclav Vancura
3d66e47df8 fix(renderer): add aria-label to icon-only buttons in task manager and build image
Add missing aria-label to the bulk delete button in
`TaskManagerBulkDeleteButton` (reusing the title prop) and to the
`add-build-argument` button in `BuildImageFromContainerfile`.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-09 19:02:24 +02:00
Vaclav Vancura
368d1f2c63 refactor(ui): replace text-purple-500 with color-registry token in LinearProgress
Replace hardcoded Tailwind `text-purple-500` with
`text-[var(--pd-progressBar-text)]` to use the color-registry CSS
variable.

Add test coverage for the component's class names and color token usage.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-09 19:02:24 +02:00
Vaclav Vancura
5e97daf58f fix(renderer): add aria-label to icon-only buttons in RunImage
Add aria-label attributes to the five pairs of add/delete link
buttons (volume mounts, env variables, security options, DNS
servers, extra hosts) to satisfy the icon-only button requirement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-04-09 19:02:24 +02:00
Dias Tursynbayev
38132cd65b chore(website): remove 3M downloads celebration banner
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-04-09 18:01:20 +02:00
dependabot[bot]
519cf9a03d chore(deps-dev): bump msw from 2.12.14 to 2.13.2
Bumps [msw](https://github.com/mswjs/msw) from 2.12.14 to 2.13.2.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.14...v2.13.2)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.13.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 16:41:51 +02:00
Simon Rey
ebc15c74cf test(kubectl-cli): cover provider registerUpdate for Resources page
Add unit tests for provider.registerUpdate registration, no-op when
already on latest, and provider update callback wiring. Mock CliTool
version from createCliTool options so update availability matches runtime.

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-09 16:37:45 +02:00
Simon Rey
347ea62853 fix(kubectl-cli): show kubectl updates on Resources page
Register provider.update when a CLI update is available so the
Resources page matches CLI Tools (same pattern as Kind).

Related to #13640

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-09 16:37:45 +02:00
Simon Rey
069703fabc test(compose): cover provider registerUpdate for Resources page
Add unit tests for provider.registerUpdate registration, no-op when
already on latest, and provider update callback wiring. Mock CliTool
version from createCliTool options so update availability matches runtime.

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-09 16:37:34 +02:00
Simon Rey
2733ade6bb fix(compose): show compose updates on Resources page
Register provider.update when a CLI update is available so the
Resources page matches CLI Tools (same pattern as Kind).

Create the provider before onboarding commands so onboarding can pass
provider into registerCLITool.

Related to #13640

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-09 16:37:34 +02:00
Anton Misskii
5461d43251
chore(e2e): remove unreliable xterm log validation/modify test skip condition (#16890)
* refactor(e2e): remove flaky build log validation and simplify WSL skip

Drop validateBuildLogs from buildImage — xterm scrollback limits made the
assertion unreliable on CI. Skip the entire Complex Containerfile describe
block upfront on WSL instead of catching failures mid-run with skipTests flag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anton Misskii <amisskii@redhat.com>

* refactor(e2e): restore terminal visibility assertion after build log removal

Re-add a minimal toBeVisible() check on the xterm terminal after the
Done button becomes enabled. This confirms the terminal rendered during
the build without the fragile content inspection that was removed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anton Misskii <amisskii@redhat.com>

* chore(e2e): clarify WSL skip reason for complex manifest build

Explain why the complex Containerfile fails on WSL (RUN steps require
foreign-arch binary execution without QEMU) while the simple one
succeeds (only CMD metadata, no execution during build).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anton Misskii <amisskii@redhat.com>

* fix(e2e): wrap test.skip condition in arrow function to defer evaluation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anton Misskii <amisskii@redhat.com>

---------

Signed-off-by: Anton Misskii <amisskii@redhat.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 16:31:52 +02:00
Simon Rey
d65fbcaa23 fix(tests): use SetupServer interface instead of SetupServerApi class
MSW v2.13.0 added `network` and `#private` properties to the
`SetupServerApi` class, making it incompatible with the return type of
`setupServer()` which is the `SetupServer` interface.

Replace `SetupServerApi` with `SetupServer` in all test files so the
Dependabot PR for msw >=2.13.0 can land without typecheck failures.

Signed-off-by: Sal Rey <srey@redhat.com>
AI-assisted: Claude
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-09 16:11:13 +02:00
Vladimir Lazar
e28fb9fe03
chore(test): added new search bar test suite and POM elements (#17007)
* chore(test): added new search bar test suite and POM elements
2026-04-09 16:15:50 +03:00
Václav Vančura
4c8869311e
refactor(renderer): replace hardcoded Tailwind colors in micromark with color-registry tokens (#17003)
Co-authored-by: Claude <claude@anthropic.com>
2026-04-09 15:01:50 +02:00
Vladimir Lazar
a186538356
chore(test): increase build timeout to handle cicd lag (#17009)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-04-09 15:51:15 +03:00
Ondrej Dockal
14edcdff77
feat(test): implement a Chrome Devtools protocol test runner (#16905)
* feat(e2e): adding chrome dev tools protocol runner

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* chore(test): adjust cdp runner to accommodate test runner design from electron runner

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>

---------

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-09 11:30:03 +02:00
Anton Misskii
ba03bfd5b5
test(e2e): add network smoke tests for container network integration (#16968)
- Add network smoke tests covering full container lifecycle:
  - Check default network exists
  - Create network and verify it exists
  - Pull image for container test
  - Start container using user-defined network (fix navigation: after
    startContainer() with alpine /bin/sh the app lands on Container
    Details → Tty tab, not Containers list; use navigationBar.openContainers()
    explicitly)
  - Verify container inspect shows correct network (use Monaco Find
    widget via Ctrl+F instead of tabContent.toContainText() which only
    checks the visible viewport of the virtualized editor)
  - Stop and delete the network container
  - Delete network from networks page
  - Delete network from details page

- Add searchInEditor(tabName, text) to DetailsPage base class for
  reusable Monaco editor search across all detail pages
- Add searchInInspectEditor(text) convenience wrapper in ContainerDetailsPage
- Add selectUserDefinedNetwork(networkName) to RunImagePage

Signed-off-by: Anton Misskii <amisskii@redhat.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 11:24:30 +02:00
dependabot[bot]
62d9acc54d chore(deps): bump electron from 41.1.1 to 41.2.0
Bumps [electron](https://github.com/electron/electron) from 41.1.1 to 41.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.1.1...v41.2.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 06:25:28 +02:00
dependabot[bot]
12fdc3468c chore(deps-dev): bump @eslint/compat in the eslint group
Bumps the eslint group with 1 update: [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat).


Updates `@eslint/compat` from 2.0.4 to 2.0.5
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/compat-v2.0.5/packages/compat)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 2.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 05:51:40 +02:00
dependabot[bot]
2a8e841f53 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.14 to 1.6.15
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.14...v1.6.15)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 05:40:25 +02:00
Denis Golovin
fd40c1bfa3 fix: flaky test for ExtensionDetailsReadme.svelte
Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-04-08 18:33:01 -04:00
Vladyslav Zhukovskyi
975db7b7e1 test(e2e): adapt proxy smoke test for settings persistence
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-04-08 20:23:12 +03:00
Vladyslav Zhukovskyi
5901301e82 fix(preferences): prevent loss of manual proxy settings on page navigation
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-04-08 20:23:12 +03:00
Sonia Sandler
992696db45
fix: update unit test project names (#16954)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-08 13:10:21 -04:00
dependabot[bot]
3bafded874 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.3.4` | `10.3.5` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.3.4` | `10.3.5` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.3.4` | `10.3.5` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.3.4` | `10.3.5` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.3.4` | `10.3.5` |


Updates `@storybook/addon-a11y` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/addons/docs)

Updates `@storybook/addon-links` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/addons/links)

Updates `@storybook/addon-themes` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 09:04:39 +02:00
dependabot[bot]
0b0125d807 chore(deps-dev): bump eslint-plugin-storybook from 10.3.4 to 10.3.5
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.3.4 to 10.3.5.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.5/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 09:02:57 +02:00
dependabot[bot]
e14e171cc0 chore(deps-dev): bump postcss from 8.5.8 to 8.5.9
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.9.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.9)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 09:02:18 +02:00
dependabot[bot]
99083da9ed chore(deps-dev): bump the vitest group with 2 updates
Bumps the vitest group with 2 updates: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@vitest/coverage-v8` from 4.1.2 to 4.1.3
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.3/packages/coverage-v8)

Updates `vitest` from 4.1.2 to 4.1.3
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.3/packages/vitest)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 06:22:04 +02:00
dependabot[bot]
f56c081804 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.58.0 to 8.58.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.58.0 to 8.58.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.1/packages/parser)

Updates `typescript-eslint` from 8.58.0 to 8.58.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.58.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.58.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.58.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 05:36:41 +02:00
Denis Golovin
f1a0189844
fix: openExternal command to use security handler (#16896)
The openExternal command was calling Electron's shell.openExternal()
directly, bypassing the security restriction handler that validates
URLs and prompts the user before opening unknown domains.
The fix routes it through securityRestrictionCurrentHandler instead,
consistent with how env.openExternal() in the extension API already works.

Signed-off-by: Denis Golovin <dgolovin@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-04-07 20:19:57 -07:00
Florent Benoit
1b7e08844a chore(pr-check): use default types for pull-request trigger
Today, labeler is added but as the GitHub app is adding labels
 to approve/review domains, there is like a loop effect
where when user is approving, bot is adding the label then
it starts again the PR checks...

only drawback is that if you add the `area/ci` label it means
you need to push a change to the branch to trigger it

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-07 17:50:12 +02:00
Florent Benoit
12cc682682 chore: remove labeler PR
it's done by the GitHub app that is adding the domains now

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-07 15:30:52 +02:00
dependabot[bot]
8cab9adebc chore(deps-dev): bump vite from 7.3.1 to 7.3.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.1 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 01:07:40 +02:00
dependabot[bot]
a5dff0bd10 chore(deps): bump the eslint group with 2 updates
Bumps the eslint group with 2 updates: [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat) and [eslint](https://github.com/eslint/eslint).


Updates `@eslint/compat` from 2.0.3 to 2.0.4
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/compat-v2.0.4/packages/compat)

Updates `eslint` from 10.1.0 to 10.2.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.1.0...v10.2.0)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 2.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint
  dependency-version: 10.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 06:27:58 +02:00
Shriya Kamat Tarcar
f830808ad3
fix: add bottom spacing to resources page (#15747)
* fix: add bottom spacing to resources page

Signed-off-by: shri3016] <shriyaktarcar@gmail.com>
2026-04-03 16:19:05 +00:00
dependabot[bot]
07e79e362e chore(deps-dev): bump eslint-plugin-storybook from 10.3.3 to 10.3.4
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.3.3 to 10.3.4.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 09:04:24 +02:00
dependabot[bot]
ca6ecba57f chore(deps-dev): bump eslint-plugin-svelte from 3.16.0 to 3.17.0
Bumps [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) from 3.16.0 to 3.17.0.
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.17.0/packages/eslint-plugin-svelte)

---
updated-dependencies:
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 07:47:03 +02:00
dependabot[bot]
1652ee9c6a chore(deps): bump dawidd6/action-download-artifact from 19 to 20
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 19 to 20.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](8a338493df...8305c0f106)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '20'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 07:43:13 +02:00
dependabot[bot]
0192dcbc9c chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.3.3` | `10.3.4` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.3.3` | `10.3.4` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.3.3` | `10.3.4` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.3.3` | `10.3.4` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.3.3` | `10.3.4` |


Updates `@storybook/addon-a11y` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/addons/docs)

Updates `@storybook/addon-links` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/addons/links)

Updates `@storybook/addon-themes` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.4/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 07:35:56 +02:00
Florent Benoit
5594892e12 chore(deps): update to inversify v8
fixes https://github.com/podman-desktop/podman-desktop/issues/16631

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-03 07:17:02 +02:00
dependabot[bot]
50c4e76cce chore(deps): bump validator from 13.15.26 to 13.15.35
Bumps [validator](https://github.com/validatorjs/validator.js) from 13.15.26 to 13.15.35.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.15.26...13.15.35)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 05:43:44 +02:00
Simon Rey
3cfa38e2fe fix(extension/podman): use detached mode for machine autoStart
When autoStart is true, the machine start command now runs in detached
mode, allowing the process to continue independently even if Podman
Desktop exits.

AI assisted

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-04-02 17:15:03 +02:00
Václav Vančura
c7a75da341
feat(color-registry): add default-text-link and default-item-hover tokens (#16932)
* feat(color-registry): add default-text-link and default-item-hover tokens

Add shared default color tokens for link/tab accent
(`default-text-link`) and subtle hover overlay (`default-item-hover`)
with HC theme support.

Move `initCommon()` before `initButton()` in init order, so
`item-disabled` is available when button colors are registered.

Add HC values to `item-disabled`.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* test(color-registry): align default token tests with updated values

Update `default-text-link` test to match adjusted light/hcLight
palette steps. Add HC alpha assertions for `default-item-hover`.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(color-registry): use resetAllMocks in beforeEach per project convention

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-02 16:18:29 +02:00
Florent Benoit
aa9416422a chore(tsconfig): switch to bundler for moduleResolution
I had the choices with
> this result could not be resolved under your current 'moduleResolution' setting
>. Consider updating to 'node16', 'nodenext', or 'bundler'.

using node16 or nodenext would result in many .js imports suffix missing in
the src/ folder. I picked up then bundler to have the smallest changes

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-04-02 14:10:25 +02:00
Václav Vančura
f61cecc061
fix: recalculate accent1 and accent2 color ramps for better vibrancy (#16921)
OKLCH-interpolate light (50-400) and dark (800-950) steps so
chroma stays proportional to lightness. The previous ramp
skewed toward gray, making lighter UI elements appear washed
out. Core brand values (500, 600, 700) are unchanged.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-02 10:45:07 +02:00
Václav Vančura
49c85f1447
feat(storybook): add high contrast light and dark theme options (#16923)
Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-02 09:47:58 +02:00
dependabot[bot]
6e11d7de05 chore(deps): bump electron from 41.1.0 to 41.1.1
Bumps [electron](https://github.com/electron/electron) from 41.1.0 to 41.1.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.1.0...v41.1.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 09:08:33 +02:00
dependabot[bot]
b1dea2d8e0 chore(deps-dev): bump @playwright/test from 1.59.0 to 1.59.1
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.59.0 to 1.59.1.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.59.0...v1.59.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.59.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 08:34:22 +02:00
dependabot[bot]
9fc3598405 chore(deps): bump undici from 7.24.6 to 7.24.7
Bumps [undici](https://github.com/nodejs/undici) from 7.24.6 to 7.24.7.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.6...v7.24.7)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 08:23:08 +02:00
dependabot[bot]
6c7b77df5f chore(deps): bump adm-zip from 0.5.16 to 0.5.17
Bumps [adm-zip](https://github.com/cthackers/adm-zip) from 0.5.16 to 0.5.17.
- [Release notes](https://github.com/cthackers/adm-zip/releases)
- [Changelog](https://github.com/cthackers/adm-zip/blob/master/history.md)
- [Commits](https://github.com/cthackers/adm-zip/compare/v0.5.16...v0.5.17)

---
updated-dependencies:
- dependency-name: adm-zip
  dependency-version: 0.5.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-02 08:11:32 +02:00
Sonia Sandler
0774054286
chore: prevent feedback form from closing when clicking on a non-submission link (#16769)
chore: prevent feedback form from closing when clicking on a non-submission link
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-04-01 16:56:57 -04:00
Evžen Gasta
c4255b0791
refactor: migrated ContainerConnectionSummary to svelte5 (#16916)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-04-01 19:43:43 +02:00
SACHIN KUMAR
9ceda29adc
fix(kind): avoid FileHandle GC error in image-handler tests (#16863)
* fix(kind): use writeFileSync in image-handler tests to avoid FileHandle GC error
2026-04-01 13:42:30 +03:00
Vladimir Lazar
4ee017788a
chore(test): Light and dark modes e2e test suite (#16917)
* chore(test): create light and dark switching e2e tests
2026-04-01 13:34:30 +03:00
dependabot[bot]
05843a5b73 chore(deps-dev): bump @playwright/test from 1.58.2 to 1.59.0
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.58.2 to 1.59.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.58.2...v1.59.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.59.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 11:00:49 +02:00
axel7083
242fab58d6
chore(extension/kubectl-cli): prefer-import-in-mock (#16883)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Junie <junie@jetbrains.com>
2026-04-01 08:56:33 +00:00
axel7083
467fd7ff87
chore(extension/kind): prefer-import-in-mock (#16882)
* chore(extension/kind): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Junie <junie@jetbrains.com>

* refactor: cleanup mocking logic

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Junie <junie@jetbrains.com>
2026-04-01 08:28:48 +00:00
Simon Rey
bd2ab6dedc refactor(main): make Exec.exec async
Prepare `Exec.exec` for upcoming async file operations by marking the
method `async`. No functional change — the return type is already
`Promise<RunResult>`.

Signed-off-by: Sakamoto Rei <srey@users.noreply.github.com>
🤖 AI assisted
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-04-01 10:14:28 +02:00
dependabot[bot]
8606113baf chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.13 to 1.6.14
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.13...v1.6.14)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 05:42:48 +02:00
axel7083
81a186c00a
refactor: simplify troubleshooting zip export (#16878)
* refactor: simplify troubleshooting zip export

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: update troubleshooting.ts behavior

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-03-31 16:31:05 +00:00
Václav Vančura
612ee3d8f5
fix: refine high contrast theme color definitions (#16889)
* fix: refine high contrast theme color definitions

Remove redundant hcDark defaults, add missing hcLight values, and replace
purple accent colors with accent1 palette for consistency across all UI
components. Improves accessibility and visual consistency in HC themes.

This commit refines the high contrast theme support by:
- Removing redundant color definitions that matched defaults
- Adding comprehensive hcLight theme support
- Standardizing on the accent1 color palette instead of purple
- Using semantic black/white values for better contrast
- Improving readability with consistent formatting

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix: add high contrast overrides for text and icon color tokens

Ensure text, header, and icon tokens use pure white (hcDark) and
pure black (hcLight) in high contrast themes for maximum
readability. Also fix tab-text hcLight from charcoal[900] to black
for consistency, and add missing hcDark to details-empty-cmdline-text.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(color-registry): add missing hcDark overrides for text and background color tokens

Several color tokens had hcLight defined but were missing the
corresponding hcDark value, causing them to fall back to the
dark theme color rather than the intended high contrast dark value.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* test(color-registry): update tooltip color assertions to include hcDark and hcLight values

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(color-registry): correct hcDark value for global nav icon-selected token

Was set to black, which would be invisible against a dark HC background.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* refactor(color-registry): extract titlebar and card prefix constants

Replaces hardcoded string literals in initTitlebar and initCardContent
with local prefix variables, consistent with the pattern used elsewhere
in the registry.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(color-registry): add hcDark and hcLight overrides for dropdown item hover background

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-03-31 18:15:27 +02:00
JustMello
035195f7d8
chore(test): enhance port forwarding e2e test to cover multiple pods (#16526)
* chore(test): enchance port forwarding e2e test to cover miltiple pods/services configuration

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-31 17:37:52 +02:00
Rujuta Shinde
dcec681628
chore: updated the contributing.md to use new domain labels and external-user label (#16791)
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-03-31 10:50:03 -04:00
Vladimir Lazar
27c9df6f14
chore(test): increase assert timeout to better handle laggy network conditions in cicd (#16907)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-31 17:05:13 +03:00
Priyansh Sao
0960135ee5 feat(test): add text check in PodCreateFromContainers.spec.ts
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-31 14:35:35 +02:00
SACHIN KUMAR
ed9429e9b5
chore: setup eslint no-sync rule and document all sync FS usages (#15251)
* chore: setup eslint no-sync rule and document all sync FS usages

- Added eslint-plugin-n and configured n/no-sync rule as a warning
- This enables tracking of synchronous FS API usages across the codebase
- No code refactoring yet; warnings serve as documentation for migration planning

Signed-off-by: SACHIN KUMAR <mrmister680@gmail.com>
2026-03-31 12:13:46 +00:00
Sheikh Limon
542fa5da6a
fix: pass options when listing images with Docker API fallback (#16599)
* fix: pass options to Docker API fallback in podmanListImages

Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-31 07:38:07 +00:00
dependabot[bot]
8321210e03 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.57.2 to 8.58.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.57.2 to 8.58.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.0/packages/parser)

Updates `typescript-eslint` from 8.57.2 to 8.58.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.58.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.58.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.58.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.58.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-31 08:50:02 +02:00
dependabot[bot]
7ae807cc1c chore(deps-dev): bump svelte-check from 4.4.5 to 4.4.6
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.4.5 to 4.4.6.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.5...svelte-check@4.4.6)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.4.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-31 05:56:35 +02:00
dependabot[bot]
07b4920787 chore(deps-dev): bump @biomejs/biome from 2.4.9 to 2.4.10
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.9 to 2.4.10.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.10/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-31 05:34:20 +02:00
Ondrej Dockal
7ef67d726f
chore(test): include specific AGENTS.md doc under tests/playwright (#16743)
* chore(test): include specific AGENTS.md doc under tests/playwright sub project

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
Co-authored-by: Code Claude <noreply@anthropic.com>
2026-03-30 17:44:43 +00:00
Simon Rey
5c8aa2618f feat(ui): add prefers-reduced-motion support to Spinner
Add @media (prefers-reduced-motion: reduce) CSS rule to disable the
spinner animation when users prefer reduced motion.

Resolves #15806

Signed-off-by: Simon Rey <simontestmail@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-30 16:39:43 +02:00
Vladimir Lazar
ef36b0abcc
chore(test): refactor filepicker methods and add save/load image e2e test (#16886)
* chore(test): refactor filepicker methods and add save/load image e2e test
2026-03-30 17:29:35 +03:00
Simon Rey
937d9fa365 refactor(main): extract awaitChildProcess to eliminate ChildProcess null checks
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-30 16:26:02 +02:00
Simon Rey
151f515091 feat(extension-api): add detached option to exec
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-30 16:26:02 +02:00
axel7083
9b2fa8f06b
chore(extension/podman): prefer-import-in-mock (#16884)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Junie <junie@jetbrains.com>
2026-03-30 15:48:51 +02:00
Florent Benoit
f3bae4bd85 chore(claude): fix symbolic link
.claude/skills should be a symlink to .agents/skills
here it's making .claude/.agents/skills

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-30 15:47:40 +02:00
Dias Tursynbayev
f125bc1ef5 feat(renderer): add support for danger styling in MessageBox
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-30 14:55:59 +02:00
axel7083
a165724486
chore(extension/docker): prefer-import-in-mock (#16881)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-03-30 12:38:06 +00:00
axel7083
4350273fcb
chore(extensions/compose): prefer-import-in-mock (#16880)
chore(extension/compose): prefer-import-in-mock

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-03-30 12:30:12 +00:00
Simon Rey
a164b7c724 feat(renderer): replace CSS border spinner with Spinner component in ProviderWidgetStatus
Replaces the custom animate-spin border trick with the official
Spinner component from @podman-desktop/ui-svelte for consistency
with the refreshed spinner design.

Resolves #16240

Signed-off-by: Simon Rey <simontestmail@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-03-30 14:14:30 +02:00
Florent Benoit
6a7951287f refactor(podman-download): fix the condition logic
When fixing another issue in esm imports for inversify
I faced a 'undefined' error
I guess the logic was to use || or !(a && b)

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-30 14:10:30 +02:00
Simon Rey
07941f4c3c refactor(ui): replace SMIL animateTransform with CSS @keyframes in Spinner
SMIL animations (animateTransform) cannot be controlled by CSS media
queries such as @media (prefers-reduced-motion: reduce). This makes it
impossible to respect user motion accessibility preferences via CSS.

Replace the SMIL animation with an equivalent CSS @keyframes animation
using steps(8) discrete rotation at 720ms — visually identical behavior
— so that future CSS-based accessibility rules can control it.

Signed-off-by: Simon Rey <simontestmail@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-30 13:59:59 +02:00
Ondrej Dockal
65f201f54c
chore(test): add advanced navigation history e2e test spec (#16820)
chore(test): add advanced nagivation history e2e test spec

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 10:07:58 +00:00
Priyansh Sao
f2a296420a fix(test): use only role attribute in PodCreateFromContainers.spec.ts
Use role attribute to find the warning component, because aria-label
is removed from Warning component.

Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-30 12:04:56 +02:00
Priyansh Sao
fa2771ab86 fix(test): use only role attribute in PullImage.spec.ts
Use role attribute to find the warning component, because aria-label
is removed from Warning component.

Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-30 12:04:56 +02:00
Priyansh Sao
9069c56717 feat(alert): remove aria-label in WarningMessage.svelte
Removes the hardcoded aria-label which stops screen readers from reading
the actual warning message.

Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-30 12:04:56 +02:00
Evžen Gasta
8aa0dd4938
feat: added system overview backend (#16634)
* chore: added api for enhanced dashboard

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* feat: added system overview backend

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: updated the system overview expand configuration key

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added initializing state

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions and fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-30 11:04:24 +02:00
Evžen Gasta
17f8b6652c
chore: added status background colors (#16633)
* chore: added status background colors

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added color tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-30 10:23:18 +02:00
Florent
08253e83f6 chore(main): replace function reference with Symbol for inversify v8
Inversify 8 no longer accepts arbitrary values as service identifiers:
only strings, symbols, or class constructors.

This replaces the Promise.withResolvers<BrowserWindow> function reference
with a proper Symbol.for('MainWindowDeferred') token.

related to https://github.com/podman-desktop/podman-desktop/issues/16631

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent <fbenoit@redhat.com>
2026-03-30 08:41:53 +02:00
dependabot[bot]
e9856aad34 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.1.3 to 4.1.4
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.1.4/packages/core)

Updates `@argos-ci/playwright` from 6.6.0 to 6.6.1
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.6.1/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.6.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 07:33:06 +02:00
dependabot[bot]
be976fa215 chore(deps-dev): bump eslint-plugin-file-progress from 3.0.2 to 4.0.0
Bumps [eslint-plugin-file-progress](https://github.com/sibiraj-s/eslint-plugin-file-progress) from 3.0.2 to 4.0.0.
- [Release notes](https://github.com/sibiraj-s/eslint-plugin-file-progress/releases)
- [Changelog](https://github.com/sibiraj-s/eslint-plugin-file-progress/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sibiraj-s/eslint-plugin-file-progress/compare/v3.0.2...v4.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-file-progress
  dependency-version: 4.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 07:18:22 +02:00
dependabot[bot]
16b029ca63 chore(deps-dev): bump eslint-plugin-unicorn from 63.0.0 to 64.0.0
Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 63.0.0 to 64.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v63.0.0...v64.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-version: 64.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 07:17:01 +02:00
dependabot[bot]
508d1f3373 chore(deps): bump mikepenz/action-junit-report from 6.3.1 to 6.4.0
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](49b2ca06f6...bccf2e3163)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 06:00:06 +02:00
dependabot[bot]
5214f142a5 chore(deps-dev): bump filesize from 11.0.14 to 11.0.15
Bumps [filesize](https://github.com/avoidwork/filesize.js) from 11.0.14 to 11.0.15.
- [Changelog](https://github.com/avoidwork/filesize.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/avoidwork/filesize.js/compare/11.0.14...11.0.15)

---
updated-dependencies:
- dependency-name: filesize
  dependency-version: 11.0.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 05:48:57 +02:00
dependabot[bot]
3a2dccf364 chore(deps): bump github/codeql-action from 4.35.0 to 4.35.1
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.0 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b8bb9f28b8...c10b8064de)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 05:37:52 +02:00
dependabot[bot]
5d1fb8d0cd chore(deps-dev): bump @storybook/addon-svelte-csf in the storybook group
Bumps the storybook group with 1 update: [@storybook/addon-svelte-csf](https://github.com/storybookjs/addon-svelte-csf).


Updates `@storybook/addon-svelte-csf` from 5.1.1 to 5.1.2
- [Release notes](https://github.com/storybookjs/addon-svelte-csf/releases)
- [Changelog](https://github.com/storybookjs/addon-svelte-csf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/addon-svelte-csf/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: "@storybook/addon-svelte-csf"
  dependency-version: 5.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 11:08:28 +01:00
benoitf
16dcb24ded chore: Update chocolatey packages for 1.26.2
Signed-off-by: benoitf <fbenoit@redhat.com>
2026-03-28 09:53:04 +01:00
dependabot[bot]
6bf771a80c chore(deps): bump electron from 41.0.4 to 41.1.0
---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 09:52:16 +01:00
dependabot[bot]
12dec921a6 chore(deps): bump github/codeql-action from 4.34.1 to 4.35.0
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.34.1 to 4.35.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](3869755554...b8bb9f28b8)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 09:22:59 +01:00
dependabot[bot]
59aac3a4a1 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.1.2 to 4.1.3
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.1.3/packages/core)

Updates `@argos-ci/playwright` from 6.5.0 to 6.6.0
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.6.0/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 09:22:28 +01:00
Vladimir Lazar
fa320f65ba
chore(test): update playwright trace analysis skill (#16856)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-27 17:58:04 +02:00
Florent Benoit
e9316c7e2a chore(deps): update picomatch dependencies
avoid CVE https://github.com/advisories/GHSA-c2c7-rcm5-vvqj

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-27 15:28:17 +01:00
Vladimir Lazar
7b180bb64c
chore(fix): ensure correct locator is used in the assert (#16853)
* chore(fix): ensure correct locator is used in the assert
2026-03-27 12:41:56 +02:00
dependabot[bot]
7f4d4a7a28 chore(deps-dev): bump @electron/fuses from 2.1.0 to 2.1.1
Bumps [@electron/fuses](https://github.com/electron/fuses) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/electron/fuses/releases)
- [Commits](https://github.com/electron/fuses/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: "@electron/fuses"
  dependency-version: 2.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 08:22:16 +01:00
dependabot[bot]
a054e666ca chore(deps): bump codecov/codecov-action from 5.5.3 to 6.0.0
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.3 to 6.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](1af58845a9...57e3a136b7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 08:14:33 +01:00
dependabot[bot]
650d9693e7 chore(deps-dev): bump the vitest group with 2 updates
Bumps the vitest group with 2 updates: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@vitest/coverage-v8` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.2/packages/coverage-v8)

Updates `vitest` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.2/packages/vitest)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 07:55:08 +01:00
Vladyslav Zhukovskyi
ff4271bea1
fix: use predefined color instead of hex value for hc dark theme (#16844)
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-26 22:28:54 +02:00
Florent
5c9e947ddf chore(CODEOWNERS): remove the file as it's managed by a GitHub app
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Florent <fbenoit@redhat.com>
2026-03-26 19:08:34 +01:00
Vladyslav Zhukovskyi
e62f25b4cf
feat: add hc-light theme color overrides to ColorRegistry (#16842)
* feat: add hc-light theme color overrides to ColorRegistry

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* feat: add hc-light theme color overrides to ColorRegistry

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* feat: add hc-light theme color overrides to ColorRegistry

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

---------

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-26 19:14:05 +02:00
Vladyslav Zhukovskyi
5c0a3f2b4e
feat: add hc-dark theme color overrides to ColorRegistry (#16825)
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-26 16:41:45 +02:00
Alyn
cbb1ab2296 fix(tray): address PR review comments on HiDPI Windows fix
Signed-off-by: Alyn <alynrtiedtke@gmail.com>
2026-03-26 15:32:28 +01:00
Alyn
76130213fd fix(tray): fix pixelated tray icon on Windows HiDPI displays
On Windows with HiDPI scaling (e.g. 200% at 5K resolution), the tray
icon appeared pixelated because nativeImage.addRepresentation() does not
work reliably on Windows for registering scale factor variants.

Fix by loading the @2x PNG directly via createFromBuffer with explicit
width/height at logical 1x size, giving Windows the full 32px of pixel
data to render a sharp 16pt icon at 200% scaling.
Signed-off-by: Alyn <alynrtiedtke@gmail.com>
2026-03-26 15:32:28 +01:00
George Serban
be875e5142
docs: add skill to investigate specific gh run (#16833)
* docs: add skill to investigate specific gh run

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* docs: skill update

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* docs: skill update

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

---------

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-03-26 11:58:57 +01:00
dependabot[bot]
d7c82012e1 chore(deps): bump electron from 41.0.3 to 41.0.4
Bumps [electron](https://github.com/electron/electron) from 41.0.3 to 41.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.0.3...v41.0.4)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 11:09:54 +01:00
dependabot[bot]
ad8960681c chore(deps-dev): bump filesize from 11.0.13 to 11.0.14
Bumps [filesize](https://github.com/avoidwork/filesize.js) from 11.0.13 to 11.0.14.
- [Changelog](https://github.com/avoidwork/filesize.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/avoidwork/filesize.js/compare/11.0.13...11.0.14)

---
updated-dependencies:
- dependency-name: filesize
  dependency-version: 11.0.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 10:13:35 +01:00
dependabot[bot]
9b769704e5 chore(deps): bump undici from 7.24.5 to 7.24.6
Bumps [undici](https://github.com/nodejs/undici) from 7.24.5 to 7.24.6.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.5...v7.24.6)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 10:02:23 +01:00
dependabot[bot]
22df79c66b chore(deps-dev): bump @biomejs/biome from 2.4.8 to 2.4.9
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.8 to 2.4.9.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.9/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 09:51:11 +01:00
dependabot[bot]
6648bea6b6 chore(deps-dev): bump @storybook/addon-svelte-csf in the storybook group
Bumps the storybook group with 1 update: [@storybook/addon-svelte-csf](https://github.com/storybookjs/addon-svelte-csf).


Updates `@storybook/addon-svelte-csf` from 5.1.0 to 5.1.1
- [Release notes](https://github.com/storybookjs/addon-svelte-csf/releases)
- [Changelog](https://github.com/storybookjs/addon-svelte-csf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/addon-svelte-csf/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: "@storybook/addon-svelte-csf"
  dependency-version: 5.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 08:15:18 +01:00
Dias Tursynbayev
8fdaa0c745 feat(telemetry): add telemetry tracking when rootful switch was changed
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-25 15:20:50 +01:00
Dias Tursynbayev
fb19e99bf8 fix(settings): update feedback dialog treeitem not to open all settings
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-25 15:11:35 +01:00
Ondrej Dockal
1304895fca
chore(test): add navigation smoke e2e test spec (#16757)
* chore(test): add navigation smoke e2e test spec and requirements doc.

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-25 14:36:56 +01:00
JustMello
e8174ba192
fix(telemetry): rename and rate limit handleContainerEventsFailure (#16789)
* fix(telemetry): rename handleContainerEventsFailure
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-25 14:11:05 +01:00
Václav Vančura
d870cf0b00
feat(main): implement pd accent colors as default theme values (#16749)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 13:57:53 +01:00
Florent
69fe23768e chore: bind on localhost the server
Signed-off-by: Florent <fbenoit@redhat.com>
2026-03-25 12:09:41 +01:00
Vladimir Lazar
275cdcf5fc
chore(test): new e2e tests for tasks page (#16797)
* chore(test): new e2e tests for tasks page
2026-03-25 13:09:40 +02:00
ScrewTSW
9bc7faa1bc
chore(tests): managed configuration tests for proxy (#16706)
* chore(test): add managed configuration tests for proxy settings

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 11:14:33 +01:00
Vladimir Lazar
26cf08ca12
chore(test): update testing skill to better conform to project standards and requirements (#16793)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-25 09:57:30 +02:00
Vladimir Lazar
ebe39f26a0
chore(test): cleanup github runner native images before test start (#16788)
* chore(test): cleanup github runner native images before test start
2026-03-25 09:43:12 +02:00
dependabot[bot]
3bc17623a0 chore(deps-dev): bump vitest-canvas-mock from 1.1.3 to 1.1.4
Bumps [vitest-canvas-mock](https://github.com/wobsoriano/vitest-canvas-mock) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/wobsoriano/vitest-canvas-mock/releases)
- [Changelog](https://github.com/wobsoriano/vitest-canvas-mock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/wobsoriano/vitest-canvas-mock/compare/v1.1.3...v1.1.4)

---
updated-dependencies:
- dependency-name: vitest-canvas-mock
  dependency-version: 1.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 08:25:41 +01:00
Sonia Sandler
6ba85cb5ad
chore: update SendFeedback to svelte 5 (#16770)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-03-24 11:40:44 -04:00
Václav Vančura
def8570ab5
feat(ui): replace spinner with 8-tick activity indicator (#16718)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 12:44:16 +00:00
LavenderDuskGlow
54c245a1e0
fix(test): Typo: misspelled variable name in PullImage.spec.ts #16741 (#16771)
Signed-off-by: yuyuanfei <3334355151@qq.com>
Co-authored-by: yuyuanfei <3334355151@qq.com>
2026-03-24 11:15:00 +00:00
Vladimir Lazar
533afdb9f4
feat(test): created skill to be used when analyzing playwright trace files (#16773)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-24 13:13:52 +02:00
Evžen Gasta
a8a7609481
feat: added navigation history dropdown when long pressing (#15567)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-24 12:13:07 +01:00
Vladimir Lazar
1aa2075e2d
chore(test): create macos sanity test suite for pr check (#16772)
* chore(test): create macos sanity test suite for pr check
2026-03-24 12:19:06 +02:00
dependabot[bot]
aecce4ac69 chore(deps): bump smol-toml from 1.6.0 to 1.6.1
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 08:15:10 +01:00
dependabot[bot]
80ee73fc84 chore(deps-dev): bump the vitest group with 2 updates
Bumps the vitest group with 2 updates: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@vitest/coverage-v8` from 4.1.0 to 4.1.1
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.1/packages/coverage-v8)

Updates `vitest` from 4.1.0 to 4.1.1
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.1/packages/vitest)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 08:14:41 +01:00
dependabot[bot]
227bb6e277 chore(deps-dev): bump eslint-plugin-storybook from 10.3.1 to 10.3.3
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.3.1 to 10.3.3.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 08:11:59 +01:00
dependabot[bot]
3f0c029a3c chore(deps-dev): bump typedoc in the typedoc group
Bumps the typedoc group with 1 update: [typedoc](https://github.com/TypeStrong/TypeDoc).


Updates `typedoc` from 0.28.17 to 0.28.18
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.28.17...v0.28.18)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-version: 0.28.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 07:49:57 +01:00
dependabot[bot]
58514635b7 chore(deps): bump tar from 7.5.12 to 7.5.13
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.12 to 7.5.13.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.12...v7.5.13)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 07:46:01 +01:00
dependabot[bot]
e44e61bed6 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.57.1 to 8.57.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.2/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.57.1 to 8.57.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.2/packages/parser)

Updates `typescript-eslint` from 8.57.1 to 8.57.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.2/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.57.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.57.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.57.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 07:44:53 +01:00
dependabot[bot]
d84c0323e9 chore(deps-dev): bump the storybook group with 6 updates
Bumps the storybook group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.3.1` | `10.3.3` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.3.1` | `10.3.3` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.3.1` | `10.3.3` |
| [@storybook/addon-svelte-csf](https://github.com/storybookjs/addon-svelte-csf) | `5.0.9` | `5.1.0` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.3.1` | `10.3.3` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.3.1` | `10.3.3` |


Updates `@storybook/addon-a11y` from 10.3.1 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.3.1 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/addons/docs)

Updates `@storybook/addon-links` from 10.3.1 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/addons/links)

Updates `@storybook/addon-svelte-csf` from 5.0.9 to 5.1.0
- [Release notes](https://github.com/storybookjs/addon-svelte-csf/releases)
- [Changelog](https://github.com/storybookjs/addon-svelte-csf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/addon-svelte-csf/compare/v5.0.9...v5.1.0)

Updates `@storybook/addon-themes` from 10.3.1 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.3.1 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-svelte-csf"
  dependency-version: 5.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 07:12:39 +01:00
Vladimir Lazar
166d193f26
chore(test): added new elements to POM and some new e2e tests (#16758)
* chore(test): added new elements to POM and some new e2e tests
2026-03-23 18:32:53 +02:00
Fred Bricon
ba9518d7ec fix(svelte): migrate HMR configuration for Svelte 5 compatibility
Moved HMR configuration from vite plugin's 'hot' option to compilerOptions.hmr
in svelte.config.js as required by Svelte 5, which has HMR integrated in core.

This fixes the warning: "[vite-plugin-svelte] svelte 5 has hmr integrated in
core. Please remove the vitePlugin.hot option and use compilerOptions.hmr instead"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Fred Bricon <fbricon@gmail.com>
2026-03-23 15:37:53 +01:00
bmahabirbu
e9e4dc1d6e chore: Update chocolatey packages for 1.26.1
Signed-off-by: bmahabirbu <fbenoit@redhat.com>
2026-03-23 15:36:19 +01:00
dependabot[bot]
89f3fae9b9 chore(deps-dev): bump markdownlint-cli2 from 0.21.0 to 0.22.0
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.21.0 to 0.22.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli2
  dependency-version: 0.22.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 14:33:27 +01:00
Vladyslav Zhukovskyi
89e164608b
feat: handle high contrast themes in appearance init and isDark store (#16721)
* feat: handle high contrast themes in appearance init and isDark store

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* feat: handle high contrast themes in appearance init and isDark store

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

---------

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-23 15:28:13 +02:00
Priyansh Sao
7333ddb90f chore: remove capitalization in explore-features.json
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-23 14:10:32 +01:00
Priyansh Sao
e1d3cb8cb3 fix(test): use role attribute in DeployPodToKube.spec.ts
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-23 14:01:04 +01:00
Priyansh Sao
f16ff2d382 feat(alert): remove custom aria-label in DeployPodToKube.svelte
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-23 14:01:04 +01:00
Vladimir Lazar
271a62d51f
chore(test): fixing some flakyness in compose download e2e test in case of quota hit (#16742)
* chore(test): fixing some flakyness in compose download e2e test in case of quota hit
2026-03-23 13:58:47 +02:00
dependabot[bot]
13d4e031f5 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.12 to 1.6.13
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.12...v1.6.13)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 10:09:27 +01:00
dependabot[bot]
40399ebc85 chore(deps): bump get-tsconfig from 4.13.6 to 4.13.7
Bumps [get-tsconfig](https://github.com/privatenumber/get-tsconfig) from 4.13.6 to 4.13.7.
- [Release notes](https://github.com/privatenumber/get-tsconfig/releases)
- [Commits](https://github.com/privatenumber/get-tsconfig/compare/v4.13.6...v4.13.7)

---
updated-dependencies:
- dependency-name: get-tsconfig
  dependency-version: 4.13.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 09:55:00 +01:00
dependabot[bot]
94703b2523 chore(deps): bump eslint from 10.0.3 to 10.1.0 in the eslint group
Bumps the eslint group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.0.3 to 10.1.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.3...v10.1.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 09:13:34 +01:00
dependabot[bot]
1055b10df7 chore(deps): bump yaml from 2.8.2 to 2.8.3
Bumps [yaml](https://github.com/eemeli/yaml) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3)

---
updated-dependencies:
- dependency-name: yaml
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 08:48:34 +01:00
Vladimir Lazar
0e12fedc40
chore(test): enhancing trace naming with workerIndex to distingush between files with the same name (#16727)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-23 09:39:36 +02:00
dependabot[bot]
dfaecc8f5e chore(deps): bump @fortawesome/react-fontawesome
Bumps the fortawesome group with 1 update: [@fortawesome/react-fontawesome](https://github.com/FortAwesome/react-fontawesome).


Updates `@fortawesome/react-fontawesome` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/FortAwesome/react-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/react-fontawesome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/react-fontawesome/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/react-fontawesome"
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 08:26:25 +01:00
dependabot[bot]
4e872cc04c chore(deps-dev): bump msw from 2.12.13 to 2.12.14
Bumps [msw](https://github.com/mswjs/msw) from 2.12.13 to 2.12.14.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.13...v2.12.14)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 08:17:09 +01:00
dependabot[bot]
7d4e5cc21f chore(deps-dev): bump eslint-plugin-svelte from 3.15.2 to 3.16.0
Bumps [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) from 3.15.2 to 3.16.0.
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.16.0/packages/eslint-plugin-svelte)

---
updated-dependencies:
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 08:06:13 +01:00
dependabot[bot]
65a8b00d09 chore(deps): bump github/codeql-action from 4.33.0 to 4.34.1
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.33.0 to 4.34.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b1bff81932...3869755554)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.34.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 07:48:35 +01:00
dependabot[bot]
0d882c2a27 chore(deps): bump ws from 8.19.0 to 8.20.0
Bumps [ws](https://github.com/websockets/ws) from 8.19.0 to 8.20.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.19.0...8.20.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-23 06:21:30 +01:00
Brian M
409ceec0cf
chore(release): release notes for 1.26 (#16645)
Signed-off-by: Brian <bmahabir@bu.edu>
2026-03-23 00:56:49 -04:00
Baixiaochun
091346635f chore(package.json): remove deprecated @types/tar package
The `@types/tar` package is deprecated as `tar` now ships its own
type definitions. Remove it from `packages/main/package.json` and
update the lockfile.

Closes #16716

Signed-off-by: Baixiaochun <182930459+Bingtagui404@users.noreply.github.com>
2026-03-20 16:54:14 +01:00
Václav Vančura
893d740a60
feat(tray-icons): add full color icons (#16081)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-20 15:56:18 +01:00
dependabot[bot]
1bb447c0d5 chore(deps-dev): bump eslint-plugin-storybook from 10.3.0 to 10.3.1
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.3.0 to 10.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 07:27:55 +01:00
dependabot[bot]
554dd4f4e5 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.3.0` | `10.3.1` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.3.0` | `10.3.1` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.3.0` | `10.3.1` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.3.0` | `10.3.1` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.3.0` | `10.3.1` |


Updates `@storybook/addon-a11y` from 10.3.0 to 10.3.1
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.3.0 to 10.3.1
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/addons/docs)

Updates `@storybook/addon-links` from 10.3.0 to 10.3.1
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/addons/links)

Updates `@storybook/addon-themes` from 10.3.0 to 10.3.1
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.3.0 to 10.3.1
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.1/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 07:02:08 +01:00
dependabot[bot]
3fe14330d9 chore(deps): bump electron-context-menu from 4.1.1 to 4.1.2
Bumps [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/sindresorhus/electron-context-menu/releases)
- [Commits](https://github.com/sindresorhus/electron-context-menu/compare/v4.1.1...v4.1.2)

---
updated-dependencies:
- dependency-name: electron-context-menu
  dependency-version: 4.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 07:00:19 +01:00
dependabot[bot]
6ee94623b5 chore(deps): bump undici from 7.24.4 to 7.24.5
Bumps [undici](https://github.com/nodejs/undici) from 7.24.4 to 7.24.5.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.4...v7.24.5)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 06:59:56 +01:00
dependabot[bot]
4ee7643982 chore(deps): bump tar from 7.5.11 to 7.5.12
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.11 to 7.5.12.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.11...v7.5.12)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 06:06:29 +01:00
Vladimir Lazar
a81625c417
chore(fix): fix provider dropdown height when adding a new provider (#16705)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-19 16:52:40 +02:00
Simon Rey
3c2ecbbe8d chore(main): hide experimental enhanced dashboard setting
The enhanced dashboard feature is not yet ready — enabling the toggle
results in an empty dashboard. Mark the configuration as hidden so it
does not appear in the Experimental Features page until the dashboard
content is implemented.

Signed-off-by: Sebastien Rey <srey@redhat.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-19 10:16:06 +01:00
dependabot[bot]
5c15619685 chore(deps-dev): bump the tailwindcss group with 3 updates
Bumps the tailwindcss group with 3 updates: [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite), [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss).


Updates `@tailwindcss/vite` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.2/packages/@tailwindcss-vite)

Updates `tailwindcss` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.2/packages/tailwindcss)

Updates `@tailwindcss/postcss` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.2/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: tailwindcss
  dependency-version: 4.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 09:34:15 +01:00
dependabot[bot]
89a2e32874 chore(deps-dev): bump typedoc-plugin-markdown in the typedoc group
Bumps the typedoc group with 1 update: [typedoc-plugin-markdown](https://github.com/typedoc2md/typedoc-plugin-markdown/tree/HEAD/packages/typedoc-plugin-markdown).


Updates `typedoc-plugin-markdown` from 4.10.0 to 4.11.0
- [Release notes](https://github.com/typedoc2md/typedoc-plugin-markdown/releases)
- [Changelog](https://github.com/typedoc2md/typedoc-plugin-markdown/blob/main/packages/typedoc-plugin-markdown/CHANGELOG.md)
- [Commits](https://github.com/typedoc2md/typedoc-plugin-markdown/commits/typedoc-plugin-markdown@4.11.0/packages/typedoc-plugin-markdown)

---
updated-dependencies:
- dependency-name: typedoc-plugin-markdown
  dependency-version: 4.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 09:32:33 +01:00
Simon Rey
e4f32e0b62 fix(renderer): respect hidden property in ExperimentalPage
The ExperimentalPage filtered properties only by `!!property.experimental`
but did not check `property.hidden`, unlike PreferencesRendering and
PreferencesResourcesRendering. This meant setting `hidden: true` on an
experimental configuration had no effect on the Experimental Features page.

Signed-off-by: Sebastien Rey <srey@redhat.com>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-19 08:56:27 +01:00
dependabot[bot]
1ae932bc52 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.1.2/packages/core)

Updates `@argos-ci/playwright` from 6.4.2 to 6.5.0
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.5.0/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 07:10:33 +01:00
dependabot[bot]
c711c50c19 chore(deps-dev): bump @biomejs/biome from 2.4.7 to 2.4.8
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.7 to 2.4.8.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.8/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 06:46:23 +01:00
dependabot[bot]
7b8a005459 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.2.19` | `10.3.0` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.2.19` | `10.3.0` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.2.19` | `10.3.0` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.2.19` | `10.3.0` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.2.19` | `10.3.0` |


Updates `@storybook/addon-a11y` from 10.2.19 to 10.3.0
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.2.19 to 10.3.0
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/addons/docs)

Updates `@storybook/addon-links` from 10.2.19 to 10.3.0
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/addons/links)

Updates `@storybook/addon-themes` from 10.2.19 to 10.3.0
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.2.19 to 10.3.0
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 06:12:29 +01:00
dependabot[bot]
0188e55959 chore(deps): bump codecov/codecov-action from 5.5.2 to 5.5.3
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.2 to 5.5.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](671740ac38...1af58845a9)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 06:11:55 +01:00
dependabot[bot]
a4ef4fb3b8 chore(deps): bump dawidd6/action-download-artifact from 18 to 19
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 18 to 19.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](1f8785ff7a...8a338493df)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '19'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 06:11:27 +01:00
dependabot[bot]
8c46519bc4 chore(deps-dev): bump eslint-plugin-storybook from 10.2.19 to 10.3.0
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.19 to 10.3.0.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.0/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 06:07:19 +01:00
Philippe Martin
2eff7f889c
fix(frontend): remove async from getImage which is not async (#16667)
fix(frontend): remove await from getImage which is not asycn

Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-03-18 16:41:30 +01:00
Evžen Gasta
74c903a914
chore(System overview API): updated definitions (#16675)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-18 10:01:40 +00:00
sheikhlimon
7b498b19c9 refactor(container-registry): scope DEFAULT_PROVIDER_TIMEOUT to plugin and use camelCase
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-18 09:26:06 +01:00
sheikhlimon
503968005e fix(container-registry): rely on configuration default for provider timeout
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-18 09:26:06 +01:00
sheikhlimon
bd79a11f63 feat(container-registry): make provider timeout configurable in settings
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-18 09:26:06 +01:00
sheikhlimon
f89d9a3402 feat(container-registry): add 30s timeout for provider image listing
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-18 09:26:06 +01:00
sheikhlimon
56d89ffe4c fix(container-registry): handle provider failures gracefully with try-catch
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-03-18 09:26:06 +01:00
dependabot[bot]
50024a944e chore(deps): bump electron from 41.0.2 to 41.0.3
Bumps [electron](https://github.com/electron/electron) from 41.0.2 to 41.0.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.0.2...v41.0.3)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 08:40:12 +01:00
dependabot[bot]
4db5e5d679 chore(deps-dev): bump msw from 2.12.12 to 2.12.13
Bumps [msw](https://github.com/mswjs/msw) from 2.12.12 to 2.12.13.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.12...v2.12.13)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 08:20:31 +01:00
Vladyslav Zhukovskyi
9600afcb4b
feat: add high contrast theme support to ColorRegistry and ColorBuilder (#16536)
* feat: add high contrast theme support to ColorRegistry and ColorBuilder

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-17 17:32:51 +02:00
Priyansh Sao
46f88a319f feat(spinner): replace spinner in ProviderButtonStatus.svelte
Replaces css based spinner with Spinner component.

Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-17 09:49:58 +01:00
dependabot[bot]
6a0c961425 chore(deps-dev): bump @types/adm-zip from 0.5.7 to 0.5.8
Bumps [@types/adm-zip](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/adm-zip) from 0.5.7 to 0.5.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/adm-zip)

---
updated-dependencies:
- dependency-name: "@types/adm-zip"
  dependency-version: 0.5.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 09:29:23 +01:00
Simon Rey
961f4ec1cb chore: copyright 2026
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-17 09:13:04 +01:00
Simon Rey
c617b7261b feat(main): add JSON Schema generation for extension manifest
Generate a JSON Schema from the Zod ExtensionManifestSchema using
z.toJSONSchema(), composed with the SchemaStore package.json schema
via allOf for standard field validation.

Signed-off-by: AI Assistant <noreply@podman-desktop.io>
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-17 09:13:04 +01:00
Evžen Gasta
962ebac606
feat(Dropdown): added support for longpressing (#16512)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-17 08:39:02 +01:00
dependabot[bot]
8a5487acad chore(deps-dev): bump msw from 2.12.11 to 2.12.12
Bumps [msw](https://github.com/mswjs/msw) from 2.12.11 to 2.12.12.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.11...v2.12.12)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 08:33:39 +01:00
dependabot[bot]
deceaaf600 chore(deps): bump svenstaro/upload-release-action from 2.11.4 to 2.11.5
Bumps [svenstaro/upload-release-action](https://github.com/svenstaro/upload-release-action) from 2.11.4 to 2.11.5.
- [Release notes](https://github.com/svenstaro/upload-release-action/releases)
- [Changelog](https://github.com/svenstaro/upload-release-action/blob/master/CHANGELOG.md)
- [Commits](b98a3b12e8...29e53e9178)

---
updated-dependencies:
- dependency-name: svenstaro/upload-release-action
  dependency-version: 2.11.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 07:57:12 +01:00
dependabot[bot]
2889391f4d chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.57.0 to 8.57.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.57.0 to 8.57.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.1/packages/parser)

Updates `typescript-eslint` from 8.57.0 to 8.57.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.57.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.57.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.57.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 07:36:06 +01:00
dependabot[bot]
a0d00c0441 chore(deps): bump github/codeql-action from 4.32.6 to 4.33.0
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.6 to 4.33.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](0d579ffd05...b1bff81932)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 06:12:07 +01:00
dependabot[bot]
da840072bf chore(deps): bump undici from 7.24.3 to 7.24.4
Bumps [undici](https://github.com/nodejs/undici) from 7.24.3 to 7.24.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.3...v7.24.4)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 04:38:01 +01:00
dependabot[bot]
ba90b997c1 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.11 to 1.6.12
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.11...v1.6.12)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 04:28:14 +01:00
Vladimir Lazar
08307d18a0
chore(test): fixing broken symlink (#16643)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-16 18:44:26 +02:00
Vladimir Lazar
e487229da4
feat(test): adding playwright testing claude skill to repository (#16639)
* feat(test): adding playwright testing claude skill to repository
2026-03-16 18:12:58 +02:00
bmahabirbu
daf470e6d8 chore: bump version to 1.27.0
Signed-off-by: bmahabirbu <fbenoit@redhat.com>
2026-03-16 16:29:18 +01:00
Denis Golovin
e3bb28a8cf
feat(certificates): add command to palette to sync certificates to podman VMs (#16546)
feat(certificates): add command to palette to sync sertificates to podman VMs

this commit adds:
1. synchronization of local certificates to all running local podman machines
2. synchronization is incremental and based on fingerprinting
3. if multiple machines are running sychronization will run in separate
   tasks visible in Task Manager view
4. if synchronization fails for one machine other tasks let to finish
5. user can call synchronization using command from the palette

Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-03-16 14:35:42 +00:00
Vladyslav Zhukovskyi
719cf6a49f refactor: align HC theme identifiers with VS Code convention
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-16 16:08:02 +02:00
Sonia Sandler
e7691bab73
chore: make registry validation on image build optional (#16539)
* chore: make registry validation on image build optional
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update buildImage extension api info
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update buildImage extension api info
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add AI suggestion
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply fixes
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: revert method signature
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix preload parameters
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-03-16 10:01:36 -04:00
Evžen Gasta
2776d60660
chore: added api for enhanced dashboard (#16632)
* chore: added api for enhanced dashboard

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: renamed status to health monitor status

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-16 11:38:41 +01:00
axel7083
91c688393e
fix(podman-windows-legacy-installer): remove unnecessary extension-api mock (#16635)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-03-16 10:05:52 +00:00
dependabot[bot]
b35d6502b8 chore(deps-dev): bump lint-staged from 16.3.3 to 16.4.0
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.3.3 to 16.4.0.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v16.3.3...v16.4.0)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-version: 16.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 09:12:49 +01:00
dependabot[bot]
c8603d6a6a chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.4.4 to 20.5.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.5.0/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.4.4 to 20.5.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.5.0/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 08:58:09 +01:00
dependabot[bot]
6e0357e7a1 chore(deps): bump undici from 7.24.0 to 7.24.3
Bumps [undici](https://github.com/nodejs/undici) from 7.24.0 to 7.24.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.24.0...v7.24.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 08:35:53 +01:00
dependabot[bot]
6aaf3b80a9 chore(deps-dev): bump msw from 2.12.10 to 2.12.11
Bumps [msw](https://github.com/mswjs/msw) from 2.12.10 to 2.12.11.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.10...v2.12.11)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 08:35:33 +01:00
dependabot[bot]
d416ef14d7 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.2.17` | `10.2.19` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.2.17` | `10.2.19` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.2.17` | `10.2.19` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.2.17` | `10.2.19` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.2.17` | `10.2.19` |


Updates `@storybook/addon-a11y` from 10.2.17 to 10.2.19
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.2.17 to 10.2.19
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/addons/docs)

Updates `@storybook/addon-links` from 10.2.17 to 10.2.19
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/addons/links)

Updates `@storybook/addon-themes` from 10.2.17 to 10.2.19
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.2.17 to 10.2.19
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:26:30 +01:00
dependabot[bot]
a56f4f6f65 chore(deps): bump ncipollo/release-action from 1.20.0 to 1.21.0
Bumps [ncipollo/release-action](https://github.com/ncipollo/release-action) from 1.20.0 to 1.21.0.
- [Release notes](https://github.com/ncipollo/release-action/releases)
- [Commits](b7eabc95ff...339a81892b)

---
updated-dependencies:
- dependency-name: ncipollo/release-action
  dependency-version: 1.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:25:40 +01:00
dependabot[bot]
d2b57094a9 chore(deps): bump dawidd6/action-download-artifact from 17 to 18
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 17 to 18.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](09b07ec687...1f8785ff7a)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '18'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:25:11 +01:00
dependabot[bot]
d9f061f311 chore(deps-dev): bump @biomejs/biome from 2.4.6 to 2.4.7
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.6 to 2.4.7.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.7/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:24:43 +01:00
dependabot[bot]
12934839fa chore(deps): bump electron from 41.0.1 to 41.0.2
Bumps [electron](https://github.com/electron/electron) from 41.0.1 to 41.0.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.0.1...v41.0.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:24:16 +01:00
Florent Benoit
dd8973751c chore(deps): update devalue from 5.6.3 to 5.6.4
fixes https://github.com/advisories/GHSA-cfw5-2vxh-hr84
fixes https://github.com/advisories/GHSA-mwv9-gp5h-frr4

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-16 07:23:51 +01:00
Evžen Gasta
f8e10c23cf
docs(AGENTS.md): added preferences section into AGENTS.md file (#16500)
* docs(AGENTS.md): added preferences section into AGENTS.md file

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* feat: added eslint rule sectiion

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed duplicate section

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-16 07:19:50 +01:00
dependabot[bot]
c40f8a2e7f chore(deps): bump pnpm/action-setup from 4.3.0 to 4.4.0
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](b906affcce...fc06bc1257)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 07:11:31 +01:00
dependabot[bot]
8517da1a7d chore(deps-dev): bump eslint-plugin-storybook from 10.2.17 to 10.2.19
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.17 to 10.2.19.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.19/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 05:44:38 +01:00
ScrewTSW
2427f5cab6
chore(test,hotfix): disable registries.conf verification for platforms other than linux (#16612)
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
2026-03-13 19:36:36 +01:00
ScrewTSW
a3c779df57
chore(test): extend managed configuration tests for registries (#16593)
* chore(test): refactor settings constants into modular structure

Split monolithic settings.ts into separate files for better organization:
- preferences.ts: all preference-related constants
- registries.ts: all registry-related constants

Export both classes directly from main index.ts.
Update imports to use direct per-class imports.

Co-authored-by: Code Claude <noreply@anthropic.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): add support for detecting managed registries configuration

Add isPreferredManaged() method to RegistriesPage to detect if the
"Preferred Repositories" field is marked as managed by enterprise configuration.

The method uses scoped locators to find the "Managed" label within the specific
preference section and handles timeout errors gracefully using the codebase
pattern of checking error.name === "TimeoutError" rather than instanceof.

Co-authored-by: Code Claude <noreply@anthropic.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): add registries configuration to managed-configuration test resources

Add registry-related managed configuration settings:
- Default preferred repositories: docker.io, quay.io
- Default registries configuration with docker.io and quay.io entries
- Lock registries.preferred field to prevent user modifications

Co-authored-by: Code Claude <noreply@anthropic.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): add managed configuration tests for registries

Add comprehensive E2E tests for managed registries configuration:
- Verify preferred repositories field shows managed configuration value
- Check field is readonly when locked (not disabled)
- Validate registries.conf file is created with correct TOML structure
- Use polling to wait for file creation (avoid CI race conditions)
- Parse TOML robustly with dynamic regex matching (order-independent)

Co-authored-by: Code Claude <noreply@anthropic.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): use tag-based filtering for managed-configuration tests

Replace file-specific test targeting with tag-based filtering using
@managed-configuration tag. This allows running all managed configuration
tests regardless of which spec file they are in, providing better test
organization and execution flexibility.

Co-authored-by: Code Claude <noreply@anthropic.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): code review fixes

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

---------

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
Co-authored-by: Code Claude <noreply@anthropic.com>
2026-03-13 17:43:51 +01:00
Fred Bricon
ce9e3efbac fix(renderer): hide empty onboarding container when no providers available
Hide the blue container and related text on the welcome page when there
are no onboarding providers, preventing an empty blue rectangle from
appearing during initial onboarding.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Fred Bricon <fbricon@gmail.com>
2026-03-13 15:18:55 +01:00
Vladimir Lazar
9008e4275e
chore(test): refactor runner close method (#16609)
* chore(test): refactor runner close method
2026-03-13 15:36:19 +02:00
dependabot[bot]
5792565d24 chore(deps): bump undici from 7.22.0 to 7.24.0
Bumps [undici](https://github.com/nodejs/undici) from 7.22.0 to 7.24.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.22.0...v7.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 08:51:51 +01:00
dependabot[bot]
35800ffe23 chore(deps-dev): bump the vitest group with 3 updates
Bumps the vitest group with 3 updates: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8), [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@vitest/coverage-v8` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/coverage-v8)

Updates `@vitest/eslint-plugin` from 1.6.10 to 1.6.11
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.10...v1.6.11)

Updates `vitest` from 4.0.18 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 08:40:41 +01:00
dependabot[bot]
80b2a13b8f chore(deps): bump dawidd6/action-download-artifact from 16 to 17
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 16 to 17.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](2536c51d3d...09b07ec687)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '17'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 08:39:44 +01:00
dependabot[bot]
ffbe8a0a1a chore(deps): bump electron from 41.0.0 to 41.0.1
Bumps [electron](https://github.com/electron/electron) from 41.0.0 to 41.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.0.0...v41.0.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 06:04:06 +01:00
dependabot[bot]
6fb090dde4 chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.4.3 to 20.4.4
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.4/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.4.3 to 20.4.4
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.4/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 04:31:06 +01:00
Charlie Drage
b6a6aac90a
chore(config): add setting to disable extension catalog (#16425)
### What does this PR do?

Adds a setting to disable the extension catalog throughout PD.

This can be done by adding the setting manually to your
`~/.local/share/containers/podman-desktop/configuration/settings.json`
with:

```
"extensions.catalog.enabled": false
```

Which will disable the appearance of the catalog throughout PD.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/16036

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

1. Edit
   `~/.local/share/containers/podman-desktop/configuration/settings.json`
2. Add: `"extensions.catalog.enabled": false`
3. Start / Restart PD
4. See that you cannot access the catalog from the following places:
   Extensions, Settings > Authentication, and Kubernetes (with no
   context).

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:04:29 +00:00
Dias Tursynbayev
07831c04cc feat: add cancel button for image pull operation
Add ability to cancel in-progress image pull operations with new Cancel button.
Includes backend support for cancellable tokens and proper error handling for
cancelled operations.

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-12 15:43:31 +01:00
Dias Tursynbayev
7030a27470 feat(renderer): improve Pull image button UX
Update Pull image button to show dynamic text and be disabled during pull operation.

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-12 15:43:31 +01:00
Charlie Drage
8a6b9649a0
chore(managed-config): add configuration to disable local extensions (#16457)
### What does this PR do?

Adds a setting when set in
`~/.local/share/containers/podman-desktop/configuration/settings.json`
disables showing the "Local Extensions" tab.

### Screenshot / video of UI

`extensions.localExtensions.enabled": true`:

`extensions.localExtensions.enabled": false`:

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/16037

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

1. Edit `~/.local/share/containers/podman-desktop/configuration/settings.json`
2. Set `extensions.localExtensions.enabled": false`
3. `pnpm watch`
4. See there no more "Local Extensions" tab in Extensions section

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-03-12 09:44:37 -04:00
Florent Benoit
a3d29f7b97 chore(os-locale): migrate imports to esm
also the method no longer need the await (it is a synchronous method)
https://github.com/sindresorhus/os-locale/releases/tag/v8.0.0

fixes https://github.com/podman-desktop/podman-desktop/issues/16212

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 14:25:44 +01:00
dependabot[bot]
a36ff65f4d chore(deps): bump os-locale from 6.0.2 to 8.0.0
Bumps [os-locale](https://github.com/sindresorhus/os-locale) from 6.0.2 to 8.0.0.
- [Release notes](https://github.com/sindresorhus/os-locale/releases)
- [Commits](https://github.com/sindresorhus/os-locale/compare/v6.0.2...v8.0.0)

---
updated-dependencies:
- dependency-name: os-locale
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 14:25:44 +01:00
Florent Benoit
f81a711b41 chore: fix typo
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 13:05:18 +01:00
Florent Benoit
8d3e9c1464 refactor(macos): replace custom bash script by electron app.setLoginItemSettings
fixes https://github.com/podman-desktop/podman-desktop/issues/15083
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 13:05:18 +01:00
Florent Benoit
df3b269ed2 refactor(startup): on macOS delay appeareance of Window if open at Login
related to https://github.com/podman-desktop/podman-desktop/issues/15083

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 13:04:46 +01:00
benoitf
c011ca1557 chore: Update Podman version to v5.8.1
Signed-off-by: benoitf <benoitf@users.noreply.github.com>
2026-03-12 12:54:34 +01:00
Florent Benoit
1a69252e2e refactor(pull-image.spec.ts): use userEvent and mock missing method
use a more standard approach on the test
also increased the timeout as it's always very close to the 5s timeout

related to https://github.com/podman-desktop/podman-desktop/pull/16260
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 12:52:11 +01:00
Ondrej Dockal
98f41d0869
chore(test): use podman/hello image from ghcr.io (#16592)
* chore(test): use podman/hello image from ghcr.io

Signed-off-by: Ondrej Dockal <odockal@redhat.com>
2026-03-12 11:22:43 +01:00
Vladimir Lazar
a6a179e6de
chore(test): make startup sequence be more robust to environment system lag (#16591)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-12 12:01:31 +02:00
Florent Benoit
0a2f152c13 chore: use latest version of electron-builder-squirrel-windows
related to https://github.com/podman-desktop/podman-desktop/security/dependabot/186
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 10:58:20 +01:00
Florent Benoit
4cea1ffcde chore: update qs to v6.15.0
related to https://github.com/advisories/GHSA-w7fw-mjwx-w883
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-12 10:32:33 +01:00
Vladimir Lazar
0ad08ce14a
chore(test): enable retry for some e2e test suites (#16589)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-12 10:57:15 +02:00
dependabot[bot]
7fc6704d88 chore(deps): bump proxy from 2.2.0 to 3.0.0
Bumps [proxy](https://github.com/TooTallNate/proxy-agents/tree/HEAD/packages/proxy) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/TooTallNate/proxy-agents/releases)
- [Changelog](https://github.com/TooTallNate/proxy-agents/blob/main/packages/proxy/CHANGELOG.md)
- [Commits](https://github.com/TooTallNate/proxy-agents/commits/proxy@3.0.0/packages/proxy)

---
updated-dependencies:
- dependency-name: proxy
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 09:48:40 +01:00
dependabot[bot]
9658f3d771 chore(deps): bump pnpm/action-setup from 4.2.0 to 4.3.0
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](41ff726559...b906affcce)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 07:58:32 +01:00
Denis Golovin
0e138facb4 fix(certificates-view): remove Certificates preference page and related changes
Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-03-12 00:20:27 -04:00
Florent Benoit
bcf9589a99 chore: update ajv to recent versions
update ^6 and ^8 usage to non-CVE versions

fix https://github.com/advisories/GHSA-2g4f-4pwh-qvx6
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 21:26:18 +01:00
Florent Benoit
d600776613 chore: update dompurify to v3.3.3
update to a non-cve one

related to https://github.com/advisories/GHSA-v2wj-7wpq-c8vv
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 18:47:35 +01:00
Simon Rey
102f893731 test(main): add tests for ExtensionManifestSchema and loadManifest
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-03-11 18:46:44 +01:00
Florent Benoit
89c0d6ec31 chore: update to serialize-javascript v7.0.4
fixes https://github.com/advisories/GHSA-5c6j-r48x-rmvq
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 18:34:29 +01:00
dependabot[bot]
1766b22890 chore(deps): bump electron from 40.4.1 to 41.0.0
Bumps [electron](https://github.com/electron/electron) from 40.4.1 to 41.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.4.1...v41.0.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 18:10:36 +01:00
Vladimir Lazar
e301267e5c
chore(test): increase timeout for image download completion (#16573)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-11 19:05:36 +02:00
Vladimir Lazar
2ff9f32850
chore(test): disable fail fast for e2e test matrix (#16572)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-11 18:47:05 +02:00
Simon Rey
1c8f85bfdb feat(main): add Zod schema and parse extensions manifest
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-11 17:40:48 +01:00
Florent Benoit
1fa5f0956a chore(container-registry): cleanup event on close
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 17:34:53 +01:00
Florent Benoit
a3e6b654b6 chore(kubernetes): cleanup resources when stopping
try to ensure we're not holding connections/timers

related to electron update
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 17:24:34 +01:00
Florent Benoit
2ac05f35bd chore(rollup): update rollup to v4.59.0
it's to avoid a CVE

https://github.com/advisories/GHSA-mw96-cpmx-2vgc
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 17:17:39 +01:00
Florent Benoit
e553a092f1 chore(deps): fix minimatch dependency
there are several new versions, for each major versions
ensure each version of minimatch should use the latest .z release
from the major release

fixes https://github.com/advisories/GHSA-3ppc-4f35-3m26
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 17:05:06 +01:00
Florent Benoit
0d2a91ea6b chore(tray): cleanup tray items on stop
dispose/cleanup things when stopping

related to electron v41
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 17:00:15 +01:00
Florent Benoit
90ec0cf965 chore(filesystem-monitoring): cleanup watchers on close
avoid some leaks/pending resources

related to electron update
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 16:58:46 +01:00
Florent Benoit
4b66b48b29 chore: cleanup connections on dispose
trying to cleanup things holding the stop when using electron 41
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 16:49:59 +01:00
Simon Rey
437bb7c3de refactor(main): avoid in-place mutation of extension configuration
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-03-11 16:37:25 +01:00
Simon Rey
dfb11364e2 fix(main): check icon type before converting to base64 in onboarding registry
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Made-with: Cursor
2026-03-11 14:47:33 +01:00
ScrewTSW
8239b21b20
chore(ci): fixing misspelled variable, adding version comments for external actions (#16550)
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
2026-03-11 13:39:52 +00:00
Florent Benoit
88e62b9ce2 chore(deps-dev): update electron-builder from 26.7.0 to 26.8.2
related to https://github.com/advisories/GHSA-23c5-xmqv-rm74
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-11 12:13:57 +01:00
Simon Rey
5d8966a5bf chore: apply biome 2.4.6 formatting
Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-11 11:48:31 +01:00
dependabot[bot]
6ca5acb353 chore(deps-dev): bump @biomejs/biome from 2.4.4 to 2.4.6
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.4 to 2.4.6.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.6/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 11:48:31 +01:00
Simon Rey
c19107e11f feat: hide Settings > Kubernetes menu when kubernetes-contexts-manager feature is declared
Subscribe to the registered features store and listen for
onDidChangeRegisteredFeatures events so the Kubernetes navigation
entry is dynamically hidden when an extension declares the
"kubernetes-contexts-manager" feature.

Closes #16528

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-11 09:28:37 +01:00
dependabot[bot]
d1aa3be14b chore(deps-dev): bump lint-staged from 16.3.2 to 16.3.3
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.3.2 to 16.3.3.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v16.3.2...v16.3.3)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-version: 16.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 08:29:44 +01:00
dependabot[bot]
02076a32c9 chore(deps-dev): bump eslint-plugin-sonarjs from 4.0.1 to 4.0.2
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 4.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 06:34:44 +01:00
dependabot[bot]
4838541b07 chore(deps-dev): bump eslint-plugin-svelte from 3.15.1 to 3.15.2
Bumps [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) from 3.15.1 to 3.15.2.
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.15.2/packages/eslint-plugin-svelte)

---
updated-dependencies:
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.15.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 05:25:19 +01:00
dependabot[bot]
f5bb268980 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.2.16` | `10.2.17` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.2.16` | `10.2.17` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.2.16` | `10.2.17` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.2.16` | `10.2.17` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.2.16` | `10.2.17` |


Updates `@storybook/addon-a11y` from 10.2.16 to 10.2.17
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.2.16 to 10.2.17
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/addons/docs)

Updates `@storybook/addon-links` from 10.2.16 to 10.2.17
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/addons/links)

Updates `@storybook/addon-themes` from 10.2.16 to 10.2.17
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.2.16 to 10.2.17
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 04:29:20 +01:00
Sonia Sandler
668c98f71c
chore: check valid registries on registration (#15569)
* chore: check valid registries on registration
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add test
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* refactor: revert method to synchronous
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update credential check to every time an image is built
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: undo leftover changes
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: remove unregistering non valid registries
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update comment
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update log message
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: use Promis.all to speed things up
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply suggestions
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-03-10 15:59:49 -04:00
Tim deBoer
cbf226d308 chore: update email label in feedback form
Updates the text to be clearer on purpose and scope.

Fixes #16530.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-03-10 11:34:15 -04:00
Vladyslav Zhukovskyi
1172ebb5d0 feat: add high contrast theme enum values and color definition types
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-03-10 14:21:34 +02:00
Simon Rey
9ad3433cf6 fix: move ExperimentalConfigurationManager DI binding after Telemetry
ExperimentalConfigurationManager now depends on Telemetry, so it must
be registered in the DI container after Telemetry is bound and
initialized.

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-10 11:29:43 +01:00
Simon Rey
cb7e3fab63 feat(main/configuration): add telemetry tracking for experimental config updates
Track an `experimentalConfigurationUpdate` event with the config key
and whether the feature is being enabled or disabled whenever
`updateExperimentalConfigurationValue` is called.

Closes #16471

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-10 11:29:43 +01:00
dependabot[bot]
9a699f3bc7 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.9 to 1.6.10
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.9...v1.6.10)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 09:16:54 +01:00
dependabot[bot]
26ec95b7f2 chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.2.0...53b83947a5a98c8d113130e565377fae1a50d02f)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 09:13:24 +01:00
dependabot[bot]
185aa1b043 chore(deps-dev): bump eslint-plugin-storybook from 10.2.16 to 10.2.17
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.16 to 10.2.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.17/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 08:52:02 +01:00
dependabot[bot]
ec5fab56ab chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 08:50:25 +01:00
dependabot[bot]
fcc399691c chore(deps): bump tar from 7.5.10 to 7.5.11
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.10 to 7.5.11.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.10...v7.5.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 07:28:39 +01:00
dependabot[bot]
5e9972e47d chore(deps): bump mikepenz/action-junit-report from 6.2.0 to 6.3.1
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.2.0 to 6.3.1.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/v6.2.0...49b2ca06f62aa7ef83ae6769a2179271e160d8e4)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 06:33:29 +01:00
dependabot[bot]
34167a50c8 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.56.1 to 8.57.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.56.1 to 8.57.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.0/packages/parser)

Updates `typescript-eslint` from 8.56.1 to 8.57.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.57.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.57.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.57.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-10 05:24:35 +01:00
Sonia Sandler
7a93b8bd3b
chore: add extensions.customExtensions.enabled check for install custom extensions button (#16296)
* chore: add extensions.customExtensions.enabled check for install custom extensions button
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add documentation
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update according to reviews and fix tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply comments
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: update tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply comments
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix typo
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-03-09 16:13:23 -04:00
dependabot[bot]
ab591ca11d chore(deps): bump the eslint group across 1 directory with 2 updates
Bumps the eslint group with 2 updates in the / directory: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) and [eslint](https://github.com/eslint/eslint).


Updates `@eslint/js` from 9.39.2 to 10.0.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js)

Updates `eslint` from 9.39.2 to 10.0.3
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.2...v10.0.3)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
- dependency-name: eslint
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 19:27:15 +01:00
Florent Benoit
3b6f63c493 chore(eslint): disable new recommended rule
there is a new rule added as recommended in eslint 10
turn it off by default until codebase is fixed

https://eslint.org/docs/latest/use/migrate-to-10.0.0#-eslintrecommended-has-been-updated

related to https://github.com/podman-desktop/podman-desktop/issues/16131
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 18:47:48 +01:00
Florent Benoit
e5b82240c8 chore: update svgo from 3.3.2 to 3.3.3
fixes https://github.com/advisories/GHSA-xpqw-6gx7-v673
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 18:12:50 +01:00
Florent Benoit
dbc709238d chore(no-undef): replace Set by SvelteSet
eslint was complaining on undef reference of Set
trying to use SvelteSet instead

related to https://github.com/podman-desktop/podman-desktop/issues/16131

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 16:36:01 +01:00
Florent Benoit
429f07e5bb chore(no-unassigned-vars): remove dead code
for compose/cli-run there was a missing assigment, for the others, remove the dead code

related to https://github.com/podman-desktop/podman-desktop/issues/16131

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 16:20:02 +01:00
Florent Benoit
0b8b40423a chore(no-useless-assignment): remove useless assignement
new linting rules in eslint check useless assignment
drop them (or exclude rule)

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 16:19:47 +01:00
ScrewTSW
3237336b40
chore(ci,test): 15985 task extend managed configuration tests to cover mixed scenario (#16001)
* chore(ci): added managed-configuration matrix workflow for all platforms

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(ci,test): added combined testfile for managed-configuration tests

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): extract label names to enum

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(ci): updated managed-configuration pipeline logic

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): generalizing preference getters and setters, fixing getRowByName logic

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): renaming test cases

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): refactored wait logic, fixed unnecessary variable declarations

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(ci): removing managed-configuration pr trigger

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(ci,test): pipeline fixes, updated copyright, added job set-up external workflow

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test): refactored preferences-page, added settings.ts with Preferences class

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

* chore(test,fixup): redundant logic refactor and clean-up of wrapper methods

Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>

---------

Signed-off-by: Tibor Dancs <tdancs@redhat.com>
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
2026-03-09 16:14:54 +01:00
Vladimir Lazar
5e3893e714
chore(test): validate current state is loaded before editting podman machine (#16506)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-09 16:34:59 +02:00
Florent Benoit
2e95a6f188 chore: update storybook to v10.2.16
fixes https://github.com/advisories/GHSA-mjf5-7g4m-gx5w
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 15:20:14 +01:00
Florent Benoit
3487000d98 chore(deps): bump eslint plug-ins to recent versions
prior to trying to update eslint itself

@eslint/compat from 2.0.2 to 2.0.3
@eslint/eslintrc from 3.3.3 to 3.3.5
eslint-plugin-svelte from 3.15.0 to 3.15.1

related to https://github.com/podman-desktop/podman-desktop/issues/16131
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-09 15:19:53 +01:00
JustMello
823c0e30b7
chore(ui): add Icon to index.ts (#16164)
* chore(ui): add Icon to index.ts
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>

* chore(ui): export Icon component in package.json
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-09 12:04:25 +01:00
dependabot[bot]
5542df5661 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.2.8` | `10.2.9` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.2.8` | `10.2.9` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.2.8` | `10.2.9` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.2.8` | `10.2.9` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.2.8` | `10.2.9` |


Updates `@storybook/addon-a11y` from 10.2.8 to 10.2.9
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.2.8 to 10.2.9
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/addons/docs)

Updates `@storybook/addon-links` from 10.2.8 to 10.2.9
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/addons/links)

Updates `@storybook/addon-themes` from 10.2.8 to 10.2.9
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.2.8 to 10.2.9
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 10:22:00 +01:00
dependabot[bot]
4c495b125b chore(deps-dev): bump eslint-plugin-sonarjs from 4.0.0 to 4.0.1
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 4.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 07:57:34 +01:00
dependabot[bot]
992c0d4901 chore(deps-dev): bump eslint-plugin-storybook from 10.2.15 to 10.2.16
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.15 to 10.2.16.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.16/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 07:43:41 +01:00
dependabot[bot]
8311de3f6d chore(deps-dev): bump @rollup/plugin-commonjs from 29.0.1 to 29.0.2
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 29.0.1 to 29.0.2.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v29.0.2/packages/commonjs)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-commonjs"
  dependency-version: 29.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 06:46:48 +01:00
dependabot[bot]
e4f0e60d38 chore(deps-dev): bump svelte-check from 4.4.4 to 4.4.5
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.4.4 to 4.4.5.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.4...svelte-check@4.4.5)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.4.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 05:46:40 +01:00
Simon Rey
ec09a80cfc feat: route experimental config updates through dedicated API
Use `updateExperimentalConfigurationValue` for records with the
`experimental` property set, falling back to `updateConfigurationValue`
for standard records. Add tests covering both paths.

Made-with: Cursor
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-06 16:21:56 +01:00
Florent BENOIT
e12115245d
chore: introduce AGENTS.md file (#16098)
* chore: introduce AGENTS.md file

also add CLAUDE.md link as claude code is not reading the standardized filename

fixes https://github.com/podman-desktop/podman-desktop/issues/15041
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-06 13:54:42 +01:00
Václav Vančura
862cd8e788
docs(storybook): update Spinner stories with a11y documentation (#16454)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 10:29:26 +01:00
dependabot[bot]
7b5195d651 chore(deps-dev): bump svelte-eslint-parser from 1.5.1 to 1.6.0
Bumps [svelte-eslint-parser](https://github.com/sveltejs/svelte-eslint-parser) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/sveltejs/svelte-eslint-parser/releases)
- [Changelog](https://github.com/sveltejs/svelte-eslint-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte-eslint-parser/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: svelte-eslint-parser
  dependency-version: 1.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 07:35:28 +01:00
dependabot[bot]
b3ed5c7f43 chore(deps): bump github/codeql-action from 4.32.5 to 4.32.6
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.5 to 4.32.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c793b717bc...0d579ffd05)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 07:17:27 +01:00
Simon Rey
e28c0084a8 feat(renderer/stores): add registered features store
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-05 16:05:59 +01:00
Ondrej Dockal
ffd9fee3e9
chore(test): prolong afterAll hook and runner.close timeout (#16452)
Signed-off-by: Ondrej Dockal <odockal@redhat.com>
2026-03-05 11:37:36 +01:00
Rujuta Shinde
9c15cc0873 docs: modified README to point to a recent image and update the title to add a dash
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-03-05 10:25:09 +01:00
Vladimir Lazar
137685163e
chore(test): attempting to fix a race condition in e2e tests (#16450)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-05 11:19:50 +02:00
dependabot[bot]
7a964f464c chore(deps): bump @segment/analytics-node from 2.3.0 to 3.0.0
Bumps [@segment/analytics-node](https://github.com/segmentio/analytics-next/tree/HEAD/packages/node) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/segmentio/analytics-next/releases)
- [Changelog](https://github.com/segmentio/analytics-next/blob/master/packages/node/CHANGELOG.md)
- [Commits](https://github.com/segmentio/analytics-next/commits/@segment/analytics-node@3.0.0/packages/node)

---
updated-dependencies:
- dependency-name: "@segment/analytics-node"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 09:35:21 +01:00
dependabot[bot]
97f0ba5a62 chore(deps-dev): bump eslint-plugin-storybook from 10.2.14 to 10.2.15
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.14 to 10.2.15.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.15/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 09:14:35 +01:00
dependabot[bot]
fa82e88f21 chore(deps): bump tar from 7.5.9 to 7.5.10
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.9...v7.5.10)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 07:44:59 +01:00
dependabot[bot]
bcbc94ce73 chore(deps-dev): bump @rollup/plugin-commonjs from 29.0.0 to 29.0.1
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 29.0.0 to 29.0.1.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v29.0.1/packages/commonjs)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-commonjs"
  dependency-version: 29.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 07:18:57 +01:00
dependabot[bot]
ac662c9e34 chore(deps): bump tar-fs from 3.1.1 to 3.1.2
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 3.1.1 to 3.1.2.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v3.1.1...v3.1.2)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 07:17:47 +01:00
dependabot[bot]
3e02529d1b chore(deps): bump docker/setup-qemu-action from 3.7.0 to 4.0.0
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.7.0 to 4.0.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](c7c5346462...ce360397dd)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 07:17:23 +01:00
Vladimir Lazar
8e015b32f9
chore(test): create new e2e tests for preferred registry repository functionality (#16436)
* chore(test): create new e2e tests for preferred registry repository functionality
2026-03-04 17:34:32 +02:00
Vladimir Lazar
50899c4ce8
chore(test): attempts button reclick in case of initial failure (#16440)
* chore(test): attempts button reclick in case of initial failure
2026-03-04 15:53:38 +02:00
JustMello
cdafc0f3c0
feat(renderer): add new buttons to PullImage page (#16281)
* feat(renderer): add new buttons to PullImage page
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>

* chore(test): edit e2e to fit new button name
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-04 12:28:26 +01:00
JustMello
de96b7d51c
fix(renderer): save previously typed title and description in GitHubFeedback (#16307)
* refactor(renderer): add GitHubFeedbackCategory type

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>

* fix(renderer): save previously typed title and decription in GitHubFeedback

Replace two conditions by one so the Feedback form component is the same instance and avoid duplicates. This prevents the typed text from being erased when the user switches categories.

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>

---------

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-03-04 12:28:12 +01:00
dependabot[bot]
b8c8f6b4c1 chore(deps-dev): bump lint-staged from 16.3.1 to 16.3.2
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.3.1 to 16.3.2.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v16.3.1...v16.3.2)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-version: 16.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 07:32:52 +01:00
dependabot[bot]
e805883662 chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.4.2 to 20.4.3
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.3/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.4.2 to 20.4.3
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.3/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.4.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.4.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 07:07:38 +01:00
dependabot[bot]
baddcb3968 chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](6044e13b5d...53b83947a5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 07:07:11 +01:00
dependabot[bot]
1ec9efcf52 chore(deps-dev): bump svelte from 5.53.6 to 5.53.7
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.53.6 to 5.53.7.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.53.7/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.53.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 07:06:28 +01:00
Charlie Drage
4261a660b3
chore(ui): change image page to secondary buttons (#16363)
### What does this PR do?

Moves the Prune, Load, Import and Pull buttons to be secondary and the
Create button to be a primary button.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

Before:

After:

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/16357

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

Go see the buttons on the image page

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-03-03 21:47:42 +00:00
Charlie Drage
859b58834a
chore(ui): change volume to secondary buttons (#16362)
### What does this PR do?

Moves the Prune & Gather volume sizes buttons to use the "secondary"
style now as the Create button is considered the "primary" button of
that section.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

Before:

<img width="2274" height="1570" alt="image" src="https://github.com/user-attachments/assets/b87c565f-ce5e-478c-83a1-339be4a26fb0" />

After:

<img width="2274" height="1570" alt="image" src="https://github.com/user-attachments/assets/858c025e-2343-4cec-b652-4a5528fca4ea" />

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/16358

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

Go see the buttons on the volume page :)

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-03-03 16:24:52 -05:00
Simon Rey
820e0a805f feat(main): expose IPC to list registered features
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-03 15:25:31 +01:00
Florent BENOIT
fa89f900bd
refactor(api-sender): introduce type checking on channels (#16392)
* chore(api-sender): introduce type checking on channels

define the object type that is provided/received on a channel name
it'll allow to remove some custom casting when receiving the data
as the type is ensured from the definition of the channel

fixes https://github.com/podman-desktop/podman-desktop/issues/15632
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-03 14:53:54 +01:00
Priyansh Sao
d65a52ff81 chore: fix typo in readme file
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-03 10:44:31 +01:00
Evžen Gasta
39d8141d38
fix(Experimental features): disabled feature value udpate (#16072)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-03-03 10:27:14 +01:00
Simon Rey
713ab2062d feat(main): send features through apiSender event
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-03 10:20:14 +01:00
dependabot[bot]
b327463e7d chore(deps): bump @floating-ui/dom from 1.7.5 to 1.7.6
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.5 to 1.7.6.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.6/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-version: 1.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 09:24:16 +01:00
dependabot[bot]
9469a7b873 chore(deps-dev): bump postcss from 8.5.6 to 8.5.8
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.8.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.6...8.5.8)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 07:12:45 +01:00
dependabot[bot]
f6fd60fd54 chore(deps): bump github/codeql-action from 4.32.4 to 4.32.5
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.4 to 4.32.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](89a39a4e59...c793b717bc)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 07:12:12 +01:00
dependabot[bot]
f0185b6b6e chore(deps-dev): bump eslint-plugin-storybook from 10.2.13 to 10.2.14
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.13 to 10.2.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.14/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 07:11:50 +01:00
Simon Rey
462a9b46b5 refactor(main/extension): use readFile in promise
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-03-02 16:25:40 +01:00
Priyansh Sao
cc4f3cfa7e feat(Dialogs): standardize cancel button types
Signed-off-by: Priyansh Sao <saopriyansh06@gmail.com>
2026-03-02 15:16:02 +01:00
Gerwin Bisschop
0d1c0d3f2e refactor: extract local status and id variables in handleEvents
Extract jsonEvent.status and jsonEvent.id into local const variables
to reduce repeated property access and prepare for upcoming Docker API
v1.52+ event format support.

No functional change.
Signed-off-by: Gerwin Bisschop <g.bisschop@iwink.nl>
2026-03-02 14:49:10 +01:00
Florent Benoit
6a37ca8a1a refactor(api-sender): make the data parameter optional
avoid to send empty string or empty object, can just send the event
name

related to https://github.com/podman-desktop/podman-desktop/issues/15632
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-02 14:08:57 +01:00
Vladimir Lazar
4a5f3deddc
chore(test): increase test timeout in order to not be flaky in cicd (#16385)
chore(test): increase test timeout in order to not be flaky in cicd pipelines

Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-03-02 12:46:32 +02:00
Florent Benoit
ac85ccc888 refactor(api-sender): introduce index file to export files
as I need to introduce a new file in the folder, introduce
an index file to make it easier

related to https://github.com/podman-desktop/podman-desktop/issues/15632

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-02 11:10:36 +01:00
Florent Benoit
0a2a0aa7e0 fix(configuration-registry): add missing event data
for the same event name, sometimes payload was sent, sometimes not

always provide the payload

related to https://github.com/podman-desktop/podman-desktop/issues/15632

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-03-02 09:21:42 +01:00
dependabot[bot]
caf56c9db5 chore(deps): bump tar-stream from 3.1.7 to 3.1.8
Bumps [tar-stream](https://github.com/mafintosh/tar-stream) from 3.1.7 to 3.1.8.
- [Commits](https://github.com/mafintosh/tar-stream/compare/v3.1.7...v3.1.8)

---
updated-dependencies:
- dependency-name: tar-stream
  dependency-version: 3.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 07:23:29 +01:00
dependabot[bot]
2cec265bba chore(deps-dev): bump lint-staged from 16.2.7 to 16.3.1
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.2.7 to 16.3.1.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v16.2.7...v16.3.1)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-version: 16.3.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 07:22:50 +01:00
dependabot[bot]
72729af9f1 chore(deps): bump mikepenz/action-junit-report from 6.3.0 to 6.3.1
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](5e05ac00ad...49b2ca06f6)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 07:22:27 +01:00
dependabot[bot]
a0257ce794 chore(deps-dev): bump globals from 17.3.0 to 17.4.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.3.0 to 17.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.4.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 07:22:04 +01:00
dependabot[bot]
10bd3b2187 chore(deps-dev): bump svelte from 5.53.5 to 5.53.6
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.53.5 to 5.53.6.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.53.6/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.53.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 07:21:43 +01:00
Louis Liu
0cf9a999a0
fix(podman): clear reconnect timeout on disconnect (#16230)
* fix(podman): clear reconnect timeout on disconnect

Signed-off-by: Louis Shawn <louis.shawn@qq.com>

* test(podman): fix reconnect timeout spec typecheck

Signed-off-by: Louis Shawn <louis.shawn@qq.com>

* test(podman): align reconnect-timeout spec with project style

Signed-off-by: Louis Shawn <louis.shawn@qq.com>

---------

Signed-off-by: Louis Shawn <louis.shawn@qq.com>
Co-authored-by: Louis Shawn <louis.shawn@qq.com>
2026-02-27 14:44:07 +01:00
Simon Rey
9be1d98cc8 chore(api): export configuration models Zod schemas
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-27 14:14:46 +01:00
dependabot[bot]
eb3be7a334 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.1.0 to 4.1.1
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.1.1/packages/core)

Updates `@argos-ci/playwright` from 6.4.1 to 6.4.2
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.4.2/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.4.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 08:56:37 +01:00
dependabot[bot]
0faaafd09a chore(deps-dev): bump svelte-eslint-parser from 1.4.1 to 1.5.1
Bumps [svelte-eslint-parser](https://github.com/sveltejs/svelte-eslint-parser) from 1.4.1 to 1.5.1.
- [Release notes](https://github.com/sveltejs/svelte-eslint-parser/releases)
- [Changelog](https://github.com/sveltejs/svelte-eslint-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte-eslint-parser/compare/v1.4.1...v1.5.1)

---
updated-dependencies:
- dependency-name: svelte-eslint-parser
  dependency-version: 1.5.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 08:37:30 +01:00
dependabot[bot]
636f200a2e chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 07:06:47 +01:00
dependabot[bot]
db36f579ca chore(deps-dev): bump @electron/fuses from 2.0.0 to 2.1.0
Bumps [@electron/fuses](https://github.com/electron/fuses) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/electron/fuses/releases)
- [Commits](https://github.com/electron/fuses/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: "@electron/fuses"
  dependency-version: 2.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 07:06:02 +01:00
dependabot[bot]
2cc7528b49 chore(deps-dev): bump svelte-check from 4.4.3 to 4.4.4
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.4.3 to 4.4.4.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.3...svelte-check@4.4.4)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 07:05:35 +01:00
dependabot[bot]
2f73b1fee6 chore(deps-dev): bump the tailwindcss group with 3 updates
Bumps the tailwindcss group with 3 updates: [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite), [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss).


Updates `@tailwindcss/vite` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/@tailwindcss-vite)

Updates `tailwindcss` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/tailwindcss)

Updates `@tailwindcss/postcss` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: tailwindcss
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 21:19:50 +01:00
dependabot[bot]
68851eaca8 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.56.0 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.56.0 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/parser)

Updates `typescript-eslint` from 8.56.0 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 20:52:54 +01:00
dependabot[bot]
ce63b7a8ab chore(deps-dev): bump svelte from 5.51.3 to 5.53.5
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.51.3 to 5.53.5.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.53.5/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.53.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 20:52:23 +01:00
dependabot[bot]
9edc766d7d chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.4.1 to 20.4.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.2/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.4.1 to 20.4.2
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.2/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.4.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.4.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 18:25:39 +01:00
dependabot[bot]
664d5cd49e chore(deps-dev): bump svelte-check from 4.4.0 to 4.4.3
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.4.0 to 4.4.3.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.4.0...svelte-check@4.4.3)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.4.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 17:58:47 +01:00
dependabot[bot]
a754eed90e chore(deps-dev): bump eslint-plugin-storybook from 10.2.10 to 10.2.12
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.10 to 10.2.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.12/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 17:57:02 +01:00
dependabot[bot]
634c9a7aee chore(deps): bump mikepenz/action-junit-report from 6.2.0 to 6.3.0
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](74626db735...5e05ac00ad)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 14:47:07 +01:00
dependabot[bot]
f292a4ffcb chore(deps-dev): bump autoprefixer from 10.4.24 to 10.4.27
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.24 to 10.4.27.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.24...10.4.27)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-version: 10.4.27
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 13:53:01 +01:00
dependabot[bot]
55e0b50d20 chore(deps): bump svenstaro/upload-release-action from 2.11.3 to 2.11.4
Bumps [svenstaro/upload-release-action](https://github.com/svenstaro/upload-release-action) from 2.11.3 to 2.11.4.
- [Release notes](https://github.com/svenstaro/upload-release-action/releases)
- [Changelog](https://github.com/svenstaro/upload-release-action/blob/master/CHANGELOG.md)
- [Commits](6b7fa9f267...b98a3b12e8)

---
updated-dependencies:
- dependency-name: svenstaro/upload-release-action
  dependency-version: 2.11.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 13:39:21 +01:00
dependabot[bot]
f2c0cf5e1b chore(deps): bump dawidd6/action-download-artifact from 15 to 16
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 15 to 16.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](fe9d59ce33...2536c51d3d)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '16'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 13:38:46 +01:00
Evzen Gasta
ab35d2ca00 test: removed not relevant test
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-26 13:28:37 +01:00
Evzen Gasta
2112c6700a refactor(Dashboard): changed setup dashboard registry init
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-26 13:28:37 +01:00
Florent BENOIT
6ef2aab41c
chore(imports): remove (or ignore) relative imports in main package (#16337)
* chore(imports): remove (or ignore) relative imports in main package

some JSON are imported using relative paths. As it is a more
per-case usage, ignore the rule for these one

For all others usecases, replace relative imports by path aliases

related to https://github.com/podman-desktop/podman-desktop/issues/14361

Signed-off-by: Florent Benoit <fbenoit@redhat.com>

* chore(format): apply format
Signed-off-by: Florent Benoit <fbenoit@redhat.com>

* chore: keep relative import for color-registry
Signed-off-by: Florent Benoit <fbenoit@redhat.com>

---------

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-25 16:10:42 +01:00
Gregory McNutt
36ab06296b fix(ui): updated grammar
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
Gregory McNutt
3151ecc63f fix(ui): changed wording within dawrin socket disconnect ui popup
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
Gregory McNutt
7b2827659d fix(ui): fixed spelling error in 'privileges'
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
Gregory McNutt
3c4ae915a8 fix(ui): updated the wording to include 'podman-mac-helper binary' as per issue request
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
Gregory McNutt
e14f9ad6ee fix(ui): updated wording to be neutral for use with both operations
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
Gregory McNutt
341e5ec0aa fix(ui): changed wording within darwin socket disconnect ui popup
Signed-off-by: Gregory McNutt <amcnutt1996@gmail.com>
2026-02-25 15:32:20 +01:00
JustMello
2344ba2b49
fix(renderer): make correct corners' radius (#16338)
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-02-25 10:37:56 +00:00
Florent Benoit
174fd6eb6f chore(alias): add tests alias in main package
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-24 11:29:59 +01:00
Florent Benoit
d57a5a1988 chore(api): enforce avoiding relative imports in api package
remove relative imports and add eslint rule to avoid the usage
of such imports

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-24 11:29:48 +01:00
Simon Rey
77d74de052 refactor(main+api): declare icon contribution interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-23 16:17:57 +01:00
Simon Rey
3345ebec24 chore(main): declare command interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-23 16:17:44 +01:00
Florent Benoit
488789710b chore: remove ../api imports
related to https://github.com/podman-desktop/podman-desktop/issues/15677
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-23 12:37:43 +01:00
Florent Benoit
d514f9e4d6 chore(watch): move core-api watcher first
main, preload, renderer, etc depend on api package
move api first so it may avoid empty folder

fixes https://github.com/podman-desktop/podman-desktop/issues/16287
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-23 12:36:31 +01:00
dependabot[bot]
09680766a3 chore(deps): bump electron-updater from 6.7.3 to 6.8.3
Bumps [electron-updater](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-updater) from 6.7.3 to 6.8.3.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-updater@6.8.3/packages/electron-updater)

---
updated-dependencies:
- dependency-name: electron-updater
  dependency-version: 6.8.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-23 09:41:09 +01:00
dependabot[bot]
971311ac55 chore(deps-dev): bump @biomejs/biome from 2.4.2 to 2.4.4
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.4.2 to 2.4.4.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.4/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-23 09:29:12 +01:00
dependabot[bot]
4a708a4266 chore(deps): bump github/codeql-action from 4.32.3 to 4.32.4
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.3 to 4.32.4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](9e907b5e64...89a39a4e59)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-23 07:17:27 +01:00
dependabot[bot]
d43c736117 chore(deps): bump dawidd6/action-download-artifact from 14 to 15
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 14 to 15.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](5c98f0b039...fe9d59ce33)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '15'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 09:01:46 +01:00
Denis Golovin
33ead78bd6 feat(container-env-filter): filter pods and container by environment
Add `Environment` combo to Containers, Pods, Images, Volumes and Network
pages to allow filter table content for specific provider connection.

Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-02-20 00:40:01 -05:00
Rujuta Shinde
89b0f8a098
chore(docs): added share feedback section to readme (#16250)
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-02-19 08:20:16 -05:00
ScrewTSW
746539ef9d
chore(ci,test): switch navigation dashboard to exact locator (#16306)
Signed-off-by: Tibor Dancs (work-laptop) <tdancs@redhat.com>
2026-02-19 12:21:39 +01:00
dependabot[bot]
cfdfd52244 chore(deps-dev): bump eslint-plugin-sonarjs from 3.0.7 to 4.0.0
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 3.0.7 to 4.0.0.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 4.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 08:25:11 +01:00
dependabot[bot]
d2ab6166fc chore(deps-dev): bump eslint-plugin-storybook from 10.2.9 to 10.2.10
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.9 to 10.2.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.10/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 08:08:57 +01:00
dependabot[bot]
23ac4995ee chore(deps-dev): bump the tailwindcss group with 3 updates
Bumps the tailwindcss group with 3 updates: [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite), [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss).


Updates `@tailwindcss/vite` from 4.1.18 to 4.2.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.0/packages/@tailwindcss-vite)

Updates `tailwindcss` from 4.1.18 to 4.2.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.0/packages/tailwindcss)

Updates `@tailwindcss/postcss` from 4.1.18 to 4.2.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.0/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: tailwindcss
- dependency-name: tailwindcss
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: tailwindcss
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: tailwindcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 08:08:29 +01:00
Evžen Gasta
abec8fe419
feat(Dashboard): added experimental flag for dashboard enhancement (#16066)
* feat(Dashboard): added experimental flag for dashboard enhancement

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed imports

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-19 07:36:01 +01:00
dependabot[bot]
478404a04c chore(deps-dev): bump @tsconfig/svelte from 5.0.7 to 5.0.8
Bumps [@tsconfig/svelte](https://github.com/tsconfig/bases/tree/HEAD/bases) from 5.0.7 to 5.0.8.
- [Commits](https://github.com/tsconfig/bases/commits/HEAD/bases)

---
updated-dependencies:
- dependency-name: "@tsconfig/svelte"
  dependency-version: 5.0.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 23:13:18 +01:00
dependabot[bot]
ed3d4ffb81 chore(deps-dev): bump svelte from 5.51.2 to 5.51.3
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.51.2 to 5.51.3.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.51.3/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.51.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 23:12:42 +01:00
dependabot[bot]
653994e00e
chore(deps-dev): bump @types/tar from 6.1.13 to 7.0.87 (#16291)
Bumps [@types/tar](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/tar) from 6.1.13 to 7.0.87.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/tar)

---
updated-dependencies:
- dependency-name: "@types/tar"
  dependency-version: 7.0.87
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-18 11:13:50 +01:00
dependabot[bot]
eacbe61a8e chore(deps-dev): bump eslint-plugin-storybook from 10.2.8 to 10.2.9
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.8 to 10.2.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v10.2.9/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.9/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 10:44:44 +01:00
dependabot[bot]
4efb16b9e8 chore(deps): bump github/codeql-action from 4.32.2 to 4.32.3
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.2 to 4.32.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](45cbd0c69e...9e907b5e64)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 15:39:51 +01:00
benoitf
b28e0faab9 chore: Update Podman version to v5.8.0
Signed-off-by: benoitf <benoitf@users.noreply.github.com>
2026-02-17 15:36:49 +01:00
dependabot[bot]
6115887620 chore(deps-dev): bump svelte-check from 4.3.6 to 4.4.0
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.3.6...svelte-check@4.4.0)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 15:25:51 +01:00
dependabot[bot]
cf8ff849e9 chore(deps): bump undici from 7.21.0 to 7.22.0
Bumps [undici](https://github.com/nodejs/undici) from 7.21.0 to 7.22.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.21.0...v7.22.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 15:25:13 +01:00
dependabot[bot]
3c45d05c57 chore(deps): bump actions/stale from 10.1.1 to 10.2.0
Bumps [actions/stale](https://github.com/actions/stale) from 10.1.1 to 10.2.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](997185467f...b5d41d4e1d)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 15:23:07 +01:00
Vladimir Lazar
600bda84ec
chore(test): create e2e test case for build image with specific target (#16283)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-02-17 15:58:20 +02:00
Simon Rey
b41008d062 chore(main): add zod package
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-17 11:41:53 +01:00
dependabot[bot]
a7e322eebc
chore(deps-dev): bump @biomejs/biome from 2.3.15 to 2.4.2 (#16276)
* chore(deps-dev): bump @biomejs/biome from 2.3.15 to 2.4.2

Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.15 to 2.4.2.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.2/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.4.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(biome): format

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-02-17 09:46:40 +00:00
dependabot[bot]
90a76f90b5
chore(deps-dev): bump typedoc from 0.28.16 to 0.28.17 in the typedoc group (#16254)
chore(deps-dev): bump typedoc in the typedoc group

Bumps the typedoc group with 1 update: [typedoc](https://github.com/TypeStrong/TypeDoc).


Updates `typedoc` from 0.28.16 to 0.28.17
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.28.16...v0.28.17)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-version: 0.28.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 10:46:18 +01:00
dependabot[bot]
72b8127550
chore(deps-dev): bump the typescript-eslint group with 3 updates (#16275)
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.55.0 to 8.56.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.55.0 to 8.56.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.0/packages/parser)

Updates `typescript-eslint` from 8.55.0 to 8.56.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 10:10:54 +01:00
Simon Rey
7e0da5e37e chore(api): declare theme interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 17:47:26 +01:00
Simon Rey
0cac46316f chore(api): declare view info interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 17:47:10 +01:00
Simon Rey
c27a789e7a chore(api): declare menu interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 17:14:28 +01:00
Simon Rey
c96ef9aa44 chore(api): declare onboarding interface with Zod
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 16:43:05 +01:00
Simon Rey
36830d793f chore(api): add zod dependency
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 16:06:48 +01:00
George Serban
d8eeac65b5
ci: update podman installer to msi for windows runners (#16264)
ci: update podman installer to msi

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-02-16 15:37:47 +01:00
Simon Rey
4c714488d3 chore(pnpm): remove duplicate tar package
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-16 15:03:16 +01:00
JustMello
4fc0c8c04a
refactor(SlideToggle): migrate to Svelte 5 (#16129)
* refactor(SlideToggle): migrate to Svelte 5
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>

* chore(SlideToggle): edit ariaInvalid and ariaLabel to be consistent with Dropdown
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-02-16 11:54:37 +01:00
dependabot[bot]
1a598dc426 chore(deps-dev): bump markdownlint-cli2 from 0.20.0 to 0.21.0
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.20.0 to 0.21.0.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli2
  dependency-version: 0.21.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 10:03:14 +01:00
dependabot[bot]
97fe73f5ae chore(deps): bump tar from 7.5.7 to 7.5.9
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.7 to 7.5.9.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.9)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 09:40:14 +01:00
dependabot[bot]
282bc22aec chore(deps): bump electron from 40.4.0 to 40.4.1
Bumps [electron](https://github.com/electron/electron) from 40.4.0 to 40.4.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.4.0...v40.4.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 09:36:50 +01:00
dependabot[bot]
ec7d2b5d3e chore(deps-dev): bump svelte from 5.50.3 to 5.51.2
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.50.3 to 5.51.2.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.51.2/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.51.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 09:32:00 +01:00
dependabot[bot]
c2a4c0848c
chore(deps-dev): bump @vitest/eslint-plugin from 1.6.7 to 1.6.9 in the vitest group (#16253)
chore(deps-dev): bump @vitest/eslint-plugin in the vitest group

Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.7 to 1.6.9
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.7...v1.6.9)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 07:44:46 +01:00
dependabot[bot]
1fbef273f5 chore(deps-dev): bump svelte from 5.50.1 to 5.50.3
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.50.1 to 5.50.3.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.50.3/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.50.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-13 20:23:15 +01:00
Václav Vančura
7fa8fb4c9e
revert: restore pre-Tailwind 4 color palette and button colors (#16247)
Reverts PR #16186 and PR #16104, which introduced visual issues. This
restores the stable color appearance from before the Tailwind 4
migration.

Fixes #16246

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-02-13 17:40:52 +01:00
Florent Benoit
a5b0663a07 fix(Route): initialize the url field in metadata
recent svelte update improved blocker calcutation
https://github.com/sveltejs/svelte/pull/17676

but our end we're in svelte files checking values of meta.url field
with startWith, etc

as url field is not there, then the startsWith method is failing

initialize the field with an empty value

related to https://github.com/podman-desktop/podman-desktop/pull/16223
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 17:31:45 +01:00
Florent Benoit
4a3320bc3d refactor(compose-details-test): mock Monaco editor component in test
I saw a failure on this test, applying the same fix I did for another
details spec file that was failing a couple of days ago

related to https://github.com/podman-desktop/podman-desktop/pull/16213
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 16:18:34 +01:00
Florent Benoit
11e49689de chore(main): replace ../ in imports by path alias
related to https://github.com/podman-desktop/podman-desktop/issues/14361

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 16:18:17 +01:00
JustMello
e92611cc0c
feat(renderer): add attributes to Input component (#16209)
Add min, max, minlength, maxlength, and pattern to Input properties

Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-02-13 09:31:58 -05:00
Florent Benoit
2fdd38f601 refactor(main): remove relative imports in vi.mock
replace by automocking if quickly possible
add imports on these vi.mock to ensure if file is moved we will get
an issue

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 13:29:15 +01:00
Florent Benoit
5df3f26b87 refactor(preload-dd-extension): replace /@api alias by package
use the package import rather than alias
alias is now removed

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 13:04:28 +01:00
Florent Benoit
00bd2416e8 chore(website): remove unused api typescript alias
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 13:04:11 +01:00
Florent Benoit
57fe1536ec refactor(preload-webview): replace /@api alias by package import
replace imports, then the alias can be removed

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 13:04:00 +01:00
Florent Benoit
2b47af6eb2 chore(preload-docker-extension): use nodenext resolution in tsconfig
without that, I'm unable to import from '@podman-desktop/core-api'

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 11:06:50 +01:00
Florent Benoit
0ed6c35bd1 chore(preload-webview): use nodenext as module(resolution) in tsconfig
allow to import from @podman-desktop/core-api module
side effect: add .js suffix

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 11:04:11 +01:00
Florent Benoit
da22dda830 chore(renderer): add eslint rule to avoid relative ../ imports
related to https://github.com/podman-desktop/podman-desktop/issues/14361

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 10:18:08 +01:00
dependabot[bot]
98cbbf5730 chore(deps): bump ws from 8.18.3 to 8.19.0
Bumps [ws](https://github.com/websockets/ws) from 8.18.3 to 8.19.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.18.3...8.19.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-13 09:58:24 +01:00
dependabot[bot]
d80cfc8555 chore(deps-dev): bump @biomejs/biome from 2.3.14 to 2.3.15
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.14 to 2.3.15.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.15/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-13 09:33:56 +01:00
Florent Benoit
3113e2edc3 chore(alias): remove api alias in main,preload & renderer packages
now that these packages are using @podman-desktop/core-api import
remove the alias

related to #15496

there are still 2 preload packages to fix

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-13 07:58:32 +01:00
Florent Benoit
3d17bf1a66 chore: try to mock MonacoEditor to see if it changes for a borked test
related to https://github.com/podman-desktop/podman-desktop/issues/16197
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 21:09:34 +01:00
Florent Benoit
3cc2d24a3b refactor(renderer): rewrite tests using automatic mocking
and use prototype.
it avoids also to use .. by using import as well
but using import was leading issues to partial mocking

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 21:09:08 +01:00
Charlie Drage
9b2fd9ed70
docs(release-docs): add notes regarding cherry picking branch (#15839)
docs(release-docs): add note regarding cherry picking branch

### What does this PR do?

Adds a small note that you must fix create the branch by specifying the
tag in the step, before continuing.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A, found during release process.

### How to test this PR?

N/A

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-02-12 11:41:24 -05:00
Charlie Drage
97a60ac12b
chore: fix capitalization of Image to pull (#15946)
### What does this PR do?

Very small nitpick.. we don't capitalize for labels and noticed this
small one.

Should be "Image to pull" vs "Image to Pull".

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

`pnpm watch`

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-02-12 16:27:23 +00:00
Florent Benoit
943355a057 refactor(logtype): move declaration of LogType to api and use it
renderer was importing LogType definition from preload package
main was declaring a duplicated LogType at two places
now, reuse the one from api as well

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 17:04:22 +01:00
Florent Benoit
e3c10017bf refactor(appearance-settings): move to API package
avoid to import from main folder from the renderer folder

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 16:30:36 +01:00
Florent Benoit
16cd069697 refactor(dd-extension): avoid to use Electron import in renderer part
I don't know if I'm the only one but as electron is no longer a dependency
it looks like my renderer part typecheck is failing due to the usage
of Electron import

remove this usage and do like it's done in WebView.svelte

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 15:45:10 +01:00
Florent Benoit
2713d9987e chore(preload): import api using package rather than alias
instead of using typescript alias `/@api` use the new
`@podman-desktop/core-api` dependency

related to #15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 15:44:54 +01:00
Florent BENOIT
0f70ccc73f
chore(main): import api using package rather than alias (#16208)
* chore(main): import api using package rather than alias

instead of using typescript alias `/@api` use the new
`@podman-desktop/core-api` dependency

related to #15496

---------

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 13:34:07 +01:00
Florent Benoit
b022bc0c52 chore(dependencies): cleanup root dependencies
now that packages have their own dependencies, cleanup/remove
dependencies that are in the root package.json

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 12:33:44 +01:00
Florent Benoit
51929d21ec refactor(tsconfig): update preload module/moduleResolution
avoid typechecks errors when importing from core-api

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 12:33:20 +01:00
Shipra Singh
1c044baad9
docs: corrected the procedural workflows for installation (#16009)
* docs: corrected the procedural workflows for installation
Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: added the installation scope details
Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: fixed coderabbit AI comments
Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: minor edits

Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: fixed suggestions

Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: fixed SME comments

Signed-off-by: Shipra Singh <shipsing@redhat.com>

---------

Signed-off-by: Shipra Singh <shipsing@redhat.com>
2026-02-12 16:50:52 +05:30
Vladimir Lazar
a937f3da49
chore(test): handle kubectl download failure (#16206)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-02-12 13:01:11 +02:00
dependabot[bot]
65dd190259 chore(deps): bump electron from 40.3.0 to 40.4.0
Bumps [electron](https://github.com/electron/electron) from 40.3.0 to 40.4.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.3.0...v40.4.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-12 11:06:40 +01:00
Florent Benoit
0eddce773c chore(renderer): import api using package rather than alias
instead of using typescript alias `/@api` use the new
`@podman-desktop/core-api` dependency

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-12 09:27:51 +01:00
Anton Misskii
58c2b0e595
chore(ci): fix next build gha repo reference (#16202)
* chore(ci): fix owner and repo reference

Signed-off-by: Anton Misskii <amisskii@redhat.com>
2026-02-12 08:32:54 +01:00
Florent Benoit
cc119964e9 chore: build api module as a post-install step
on CI or other jobs, API is not found as it's never built
build it at least once after we do install step

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 19:05:20 +01:00
Florent Benoit
2cbd7a09bb fix(repository-info): move this util from api to website only
fixes https://github.com/podman-desktop/podman-desktop/issues/16194

breaking changes: remove it from extension api
added by https://github.com/podman-desktop/podman-desktop/pull/13363 (but no related issue)
I don't see usage at https://github.com/search?q=RepositoryInfoParser+language%3ATypeScript&type=code&l=TypeScript&p=1

it's preventing to import things in packages/renderer side
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 18:12:50 +01:00
Florent Benoit
07d7b09490 refactor(api): use ES format rather than CommonJS (cjs)
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 18:12:25 +01:00
Vladimir Lazar
73251d30c8
chore(test): validate that compose is installed previously (#16180)
* chore(test): validate that compose is installed previously
2026-02-11 18:50:13 +02:00
Florent Benoit
bc538dfaa0 refactor(core-api): fix mismatch between package.json and build files
package.json was referencing entries that were not at
the expected location.
Update vite configuration to generate it as expected

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 16:18:02 +01:00
Florent BENOIT
67b91164ae
chore(deps): update electron-builder from v26.0.12 to v26.7.0 (#16166)
* chore(deps): update electron-builder from v26.0.12 to v26.7.0

- remove the patch we had to fix background on macOS v26
- add the non @2x background else the window size is broken
(before there was a bug being fixed now)

Signed-off-by: Florent Benoit <fbenoit@redhat.com>

* chore: handle universal binaries
Signed-off-by: Florent Benoit <fbenoit@redhat.com>

* chore(builder): replace @1x DMG background (#5)

Signed-off-by: Václav Vančura <vancura@users.noreply.github.com>

---------

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
Signed-off-by: Václav Vančura <vancura@users.noreply.github.com>
Co-authored-by: Václav Vančura <vancura@users.noreply.github.com>
2026-02-11 16:17:35 +01:00
Florent Benoit
53e3385c72 chore: fixup rules for eslint-plugin-file-progress
adds fixup on the rules from this plug-in
it adds compatibility rules to make it compliant
with v10 eslint version

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 16:11:41 +01:00
dependabot[bot]
ee2d23c369 chore(deps-dev): bump vitest from 4.0.10 to 4.0.18 in the vitest group
Bumps the vitest group with 1 update: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `vitest` from 4.0.10 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.0.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 16:00:41 +01:00
Florent Benoit
64935c23cd chore(argos): remove mermaid diagram from screenshot
on PR check, argos ci is failing almost all the time
it's about the mermaid diagram that has different rendering

the diagram was already excluded in the css but it looks like
that it was not excluded in fact, adding new entry in the css

fixes https://github.com/podman-desktop/podman-desktop/issues/15875
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 14:57:24 +01:00
Florent BENOIT
e9700b40c9
refactor(compose): fix the original intent of describe methods (#16191)
there is a describe method in the middle of tests. It's probably
related to an issue of a rebase.

Just move the inner describe method to the root level

newer vitest versions failed to run these tests

related to https://github.com/podman-desktop/podman-desktop/pull/16182

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 08:33:53 -05:00
Florent Benoit
3ad52d461f chore(api): add missing exports
some files were added into api package without exports
thus it was failing when wanting to import them
through package import (not typescript aliases)

related #15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 13:53:25 +01:00
Florent Benoit
fd45c0239b chore: add imports to core api from other packages
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 13:52:24 +01:00
Florent Benoit
a49564aaa7 refactor(charCode): remove const keyword on the export
it does not work with verbatimModuleSyntax option of typescript
on the import side with 'const'

https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-11 13:43:22 +01:00
Václav Vančura
b31a3fd3aa
feat(color-registry): update existing button colors to Tailwind violet/slate palette (#16186) 2026-02-11 13:09:58 +01:00
dependabot[bot]
c2609827e9 chore(deps-dev): bump eslint-plugin-sonarjs from 3.0.6 to 3.0.7
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 3.0.6 to 3.0.7.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 3.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 12:56:03 +01:00
dependabot[bot]
1d9d19fe93 chore(deps): bump electron from 40.2.1 to 40.3.0
---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 12:52:35 +01:00
Simon Rey
1c7c1395ca fix(storybook): manually update storybook as the dependabot fails to include it
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-11 12:27:27 +01:00
dependabot[bot]
6b4039fed8 chore(deps-dev): bump the storybook group with 5 updates
Bumps the storybook group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `10.1.11` | `10.2.3` |
| [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.1.11` | `10.2.3` |
| [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.1.11` | `10.2.3` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.1.11` | `10.2.3` |
| [@storybook/svelte-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/svelte-vite) | `10.1.11` | `10.2.3` |


Updates `@storybook/addon-a11y` from 10.1.11 to 10.2.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/addons/a11y)

Updates `@storybook/addon-docs` from 10.1.11 to 10.2.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/addons/docs)

Updates `@storybook/addon-links` from 10.1.11 to 10.2.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/addons/links)

Updates `@storybook/addon-themes` from 10.1.11 to 10.2.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/addons/themes)

Updates `@storybook/svelte-vite` from 10.1.11 to 10.2.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/frameworks/svelte-vite)

---
updated-dependencies:
- dependency-name: "@storybook/addon-a11y"
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-docs"
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-links"
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
- dependency-name: "@storybook/svelte-vite"
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: storybook
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 12:27:27 +01:00
Anton Misskii
8330eeacee
chore(test): ensure confirmation dialog is handled by using string comparison for enums (#16176)
Signed-off-by: Anton Misskii <amisskii@redhat.com>
2026-02-11 10:47:30 +01:00
Vladimir Lazar
24e0654abf
chore(test): fixing e2e test issues (#16174)
* chore(test): fixing flaky behaviour in e2e tests
2026-02-11 11:42:20 +02:00
dependabot[bot]
2816fb77f2 chore(deps-dev): bump msw from 2.12.9 to 2.12.10
Bumps [msw](https://github.com/mswjs/msw) from 2.12.9 to 2.12.10.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.9...v2.12.10)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 09:28:53 +01:00
dependabot[bot]
5a0b31dd47 chore(deps-dev): bump eslint-plugin-unicorn from 62.0.0 to 63.0.0
Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 62.0.0 to 63.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v62.0.0...v63.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-version: 63.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 08:05:38 +01:00
dependabot[bot]
094ebc1840 chore(deps): bump the fortawesome group with 5 updates
Bumps the fortawesome group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) | `7.1.0` | `7.2.0` |
| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.1.0` | `7.2.0` |
| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.1.0` | `7.2.0` |
| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.1.0` | `7.2.0` |
| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `7.1.0` | `7.2.0` |


Updates `@fortawesome/fontawesome-free` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.1.0...7.2.0)

Updates `@fortawesome/free-brands-svg-icons` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.1.0...7.2.0)

Updates `@fortawesome/free-regular-svg-icons` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.1.0...7.2.0)

Updates `@fortawesome/free-solid-svg-icons` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.1.0...7.2.0)

Updates `@fortawesome/fontawesome-svg-core` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.1.0...7.2.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-brands-svg-icons"
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-regular-svg-icons"
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-solid-svg-icons"
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 08:04:06 +01:00
dependabot[bot]
6d511dbad2 chore(deps-dev): bump eslint-plugin-svelte from 3.14.0 to 3.15.0
Bumps [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) from 3.14.0 to 3.15.0.
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.15.0/packages/eslint-plugin-svelte)

---
updated-dependencies:
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 08:03:32 +01:00
Sonia Sandler
a726b022de
chore: ensure two-way value binding for enum items (#16154)
* chore: ensure two-way value binding for enum items
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: apply comments
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: undo change
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-02-10 14:32:27 -05:00
JustMello
342802fa66
fix(renderer): open SearchBar on F1 key only (#16156)
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-02-10 14:37:31 +01:00
Václav Vančura
097108c696
fix(color-registry): restore contrast for text colors in dark theme (#16162) 2026-02-10 12:47:27 +00:00
Shipra Singh
74aa8d0550
docs: updated the CLI installation part for kind and minikube (#16101)
* docs: updated the CLI installation part for kind and minikube

Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: minor edits

Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: fixed coderabbit suggestion

Signed-off-by: Shipra Singh <shipsing@redhat.com>

---------

Signed-off-by: Shipra Singh <shipsing@redhat.com>
2026-02-10 17:55:52 +05:30
Vladimir Lazar
c4c5424dc1
chore(test): ensure registry cleanup on test failure (#16161)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-02-10 12:41:49 +02:00
Vladimir Lazar
f96aeae7b2
chore(test): fixing some flakyness issues (#16158)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-02-10 11:21:07 +02:00
Florent Benoit
efbec9707e chore: remove empty lines
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-10 09:21:09 +01:00
Florent Benoit
d79ac5d1bd chore(package.json): introduce missing files in packages/* folders
introduce dedicated package.json files for each package in the
packages/ folder that don't have one

it'll make possible to add dependencies to core-api or other modules

related to #15496
https://github.com/podman-desktop/podman-desktop/issues/15677

note: follow-up will be required to remove dependencies from the
root package.json

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-10 09:21:09 +01:00
Florent Benoit
5cad604591 chore: add entries in package.json to build/test/typecheck package/api
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-10 09:20:38 +01:00
dependabot[bot]
a7892242aa chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.6...v1.6.7)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 08:56:48 +01:00
dependabot[bot]
8fae3d034e chore(deps-dev): bump eslint-plugin-storybook from 10.2.7 to 10.2.8
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.7 to 10.2.8.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.8/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 07:45:17 +01:00
dependabot[bot]
5762c07c5d chore(deps-dev): bump svelte from 5.50.0 to 5.50.1
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.50.0 to 5.50.1.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.50.1/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.50.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 07:21:12 +01:00
dependabot[bot]
68de8a34d2 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.54.0 to 8.55.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.54.0 to 8.55.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/parser)

Updates `typescript-eslint` from 8.54.0 to 8.55.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 07:20:18 +01:00
Sonia Sandler
6d844fe8aa
refactor: update extensions routes to be nested (#15927)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-02-09 14:27:18 -05:00
Sonia Sandler
2e72ada259
refactor: update networks routes to be nested (#15926)
* refactor: update networks routes to be nested
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* fix: after rebase
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-02-09 14:05:17 -05:00
Florent Benoit
e343420cf6 refactor(extension-kube-context): reuse global mock for @podman-desktop/api
avoid defining custom mock for @podman-desktop/api, reuse the global mock

related to https://github.com/podman-desktop/podman-desktop/issues/14493
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 18:49:39 +01:00
Florent Benoit
b1f50379d7 chore(watcher): add packages/api into the watcher
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 17:21:06 +01:00
Florent Benoit
63c303ac58 refactor(tsconfig): update package/api configuration
make it like other parts of the code
 - extending strictest configuration
 - newer module/moduleResolution

related to https://github.com/podman-desktop/podman-desktop/issues/15496

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 17:00:09 +01:00
Florent Benoit
b756369e93 ci: update versions of packages in packages/folder when releasing
for now only extensions had their version being updated

it'll avoid to see in source code 0.0.0 or 0.1.0 versions for packages/*/package.json

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 17:00:09 +01:00
Florent Benoit
90c69da89c refactor(tsconfig): update package/api configuration
make it like other parts of the code
 - extending strictest configuration
 - newer module/moduleResolution

related to https://github.com/podman-desktop/podman-desktop/issues/15496

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 16:58:57 +01:00
Václav Vančura
535148c848
feat(color-registry): update colors to Tailwind 4 (#16104)
* feat(color-registry): update colors to Tailwind 4

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* fix(color-registry): restore the gray-25 color token

The gray-25 was removed in Tailwind 4, resulting in failing tests.
There are no other colors that need restoring.

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* test(color-registry): update tests to use OKLCH color values

Update color-registry.spec.ts to reference tailwindColorPalette values
instead of hardcoded hex colors. This aligns the tests with the updated
color palette that now uses OKLCH format for gray and purple shades.

Fixed 3 failing assertions:
- titlebar-bg light color (Windows and macOS/Linux tests)
- titlebar-text light color (extension theme test)
Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-02-09 16:25:14 +01:00
Evžen Gasta
0a6e4756fd
chore(StatusBar): switched to enabled by default (#16067)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-09 14:33:30 +01:00
axel7083
e3c515ef50
chore(extension-api): enhance PodInspectInfo (#16139)
* chore(extension-api): enhance PodInspectInfo

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* chore(extension-api): enhance PodInspectInfo

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-02-09 13:33:06 +00:00
Václav Vančura
28c9098387
feat(color-registry): add slate Tailwind 4 colors (#16107)
Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-02-09 13:14:28 +00:00
JustMello
74eb9c996a
chore(renderer): remove Kubernetes pod page moved warning (#16082)
Signed-off-by: Dias Tursynbayev <original.justmello1337@gmail.com>
2026-02-09 12:49:49 +01:00
Simon Rey
80cd6b29ed chore: remove some unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-09 11:27:10 +01:00
Florent Benoit
e70d087a2d refactor(filesystem-tree): add conditional assignment for optional property
related to https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes

I'll add stricter configuration in packages/api so fixing it before

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-09 10:45:38 +01:00
dependabot[bot]
c12978d3e1 chore(deps-dev): bump @playwright/test from 1.58.1 to 1.58.2
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.58.1 to 1.58.2.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.58.1...v1.58.2)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.58.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:04:03 +01:00
dependabot[bot]
5c2c3be41e chore(deps-dev): bump get-tsconfig from 4.13.3 to 4.13.6
Bumps [get-tsconfig](https://github.com/privatenumber/get-tsconfig) from 4.13.3 to 4.13.6.
- [Release notes](https://github.com/privatenumber/get-tsconfig/releases)
- [Commits](https://github.com/privatenumber/get-tsconfig/compare/v4.13.3...v4.13.6)

---
updated-dependencies:
- dependency-name: get-tsconfig
  dependency-version: 4.13.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:03:35 +01:00
dependabot[bot]
0b0601a672 chore(deps): bump undici from 7.20.0 to 7.21.0
Bumps [undici](https://github.com/nodejs/undici) from 7.20.0 to 7.21.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.20.0...v7.21.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:03:13 +01:00
dependabot[bot]
8fad87251b chore(deps-dev): bump msw from 2.12.8 to 2.12.9
Bumps [msw](https://github.com/mswjs/msw) from 2.12.8 to 2.12.9.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.8...v2.12.9)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:02:48 +01:00
dependabot[bot]
694ac2b9a3 chore(deps-dev): bump typedoc-plugin-markdown in the typedoc group
Bumps the typedoc group with 1 update: [typedoc-plugin-markdown](https://github.com/typedoc2md/typedoc-plugin-markdown/tree/HEAD/packages/typedoc-plugin-markdown).


Updates `typedoc-plugin-markdown` from 4.9.0 to 4.10.0
- [Release notes](https://github.com/typedoc2md/typedoc-plugin-markdown/releases)
- [Changelog](https://github.com/typedoc2md/typedoc-plugin-markdown/blob/main/packages/typedoc-plugin-markdown/CHANGELOG.md)
- [Commits](https://github.com/typedoc2md/typedoc-plugin-markdown/commits/typedoc-plugin-markdown@4.10.0/packages/typedoc-plugin-markdown)

---
updated-dependencies:
- dependency-name: typedoc-plugin-markdown
  dependency-version: 4.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:02:19 +01:00
dependabot[bot]
e4b9477bec
chore(deps-dev): bump svelte from 5.49.2 to 5.50.0 (#16126)
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.49.2 to 5.50.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.50.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.50.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 07:33:54 +01:00
Florent Benoit
516a6e67bd chore(deps): update to webpack v5.105.0+
avoid CVE

fixes https://github.com/advisories/GHSA-38r7-794h-5758
fixes https://github.com/advisories/GHSA-8fgc-7cc6-rx7x

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-07 09:47:13 +01:00
Simon Rey
c40eb3acd6 chore(renderer/tests): use assert from vitest
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 17:08:21 +01:00
Simon Rey
7703af32b5 fix(main/notification-registry): dispose the right notification
It was using a class property that increments with each new notification

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 16:37:14 +01:00
Simon Rey
f58d6d2e30 chore(renderer): remove unused Kube components
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 15:57:42 +01:00
Florent Benoit
43ebc8f9a9 chore(deps): update lodash to v4.17.23
fixes https://github.com/advisories/GHSA-xxjr-mmjv-4gpg
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-06 15:51:10 +01:00
Florent Benoit
a268c46dad chore(deps): update @isaacs/brace-expansion to v5.0.1+
fixes https://github.com/advisories/GHSA-7h2j-956f-4vf2
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-02-06 14:52:51 +01:00
Evžen Gasta
48e8f3cdde
chore: fixed navigating over kubernetes submenu (#16024)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-06 13:52:27 +01:00
Evžen Gasta
898ff5c01e
fix(navigation): skipped adding index.html route to navigation history (#15983)
* fix(navigation): skipped adding index.html route to navigation history

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-06 12:25:22 +01:00
Simon Rey
5e41b895c6 chore(main): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 11:34:37 +01:00
Simon Rey
fb0bb3ae09 refactor(main/telemetry): merge event types in one object
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 11:02:36 +01:00
Simon Rey
246b9e3a1b chore(renderer): remove unused empty svelte component
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 10:33:12 +01:00
Gaurav Ramnani
6ca75d7934 feat: updated getByPlaceholderText calls
Signed-off-by: Gaurav Ramnani <gauravramnani007@gmail.com>
2026-02-06 10:13:45 +01:00
Gaurav Ramnani
af1ebea1c5 feat: modified SearchInput to not render title in placeholder
Signed-off-by: Gaurav Ramnani<gauravramnani007@gmail.com>

Signed-off-by: Gaurav Ramnani <gauravramnani007@gmail.com>
2026-02-06 10:13:45 +01:00
Simon Rey
40bf888081 chore(api): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 10:12:10 +01:00
Simon Rey
670850141d chore(renderer): remove unused field validation
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-06 10:11:22 +01:00
dependabot[bot]
e9c96c856f chore(deps-dev): bump electron from 40.1.0 to 40.2.1
Bumps [electron](https://github.com/electron/electron) from 40.1.0 to 40.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.1.0...v40.2.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:46:24 +01:00
dependabot[bot]
3b9dee0965 chore(deps): bump @fortawesome/react-fontawesome
Bumps the fortawesome group with 1 update: [@fortawesome/react-fontawesome](https://github.com/FortAwesome/react-fontawesome).


Updates `@fortawesome/react-fontawesome` from 3.1.1 to 3.2.0
- [Release notes](https://github.com/FortAwesome/react-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/react-fontawesome/blob/main/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/react-fontawesome/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/react-fontawesome"
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:21:52 +01:00
dependabot[bot]
43b5289e9b chore(deps-dev): bump eslint-plugin-storybook from 10.2.6 to 10.2.7
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.6 to 10.2.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.7/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:21:27 +01:00
dependabot[bot]
2e91ec3ba4 chore(deps-dev): bump get-tsconfig from 4.13.1 to 4.13.3
Bumps [get-tsconfig](https://github.com/privatenumber/get-tsconfig) from 4.13.1 to 4.13.3.
- [Release notes](https://github.com/privatenumber/get-tsconfig/releases)
- [Commits](https://github.com/privatenumber/get-tsconfig/compare/v4.13.1...v4.13.3)

---
updated-dependencies:
- dependency-name: get-tsconfig
  dependency-version: 4.13.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:21:06 +01:00
dependabot[bot]
e5b10795fe chore(deps): bump semver from 7.7.3 to 7.7.4
Bumps [semver](https://github.com/npm/node-semver) from 7.7.3 to 7.7.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.3...v7.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:20:45 +01:00
dependabot[bot]
b47819a4ce chore(deps): bump github/codeql-action from 4.32.1 to 4.32.2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.1 to 4.32.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](6bc82e05fd...45cbd0c69e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 07:20:21 +01:00
Rujuta Shinde
7a1ce72f4c
chore(docs): updated triage manager task in the contributing.md file (#16028) 2026-02-05 13:56:15 -05:00
Simon Rey
347346ff2a chore(extensions): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 16:53:35 +01:00
Simon Rey
32c9d928f2 chore(website): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 16:53:27 +01:00
Simon Rey
cc60bc1b15 chore(renderer/context): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 16:53:11 +01:00
Simon Rey
53924b2fea chore(renderer/stores): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 16:52:55 +01:00
Simon Rey
ad24869041 chore(renderer/webview): remove unused component
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 16:52:43 +01:00
Václav Vančura
d1b4a2d471 feat(color-registry): add the violet Tailwind 4 color (#16076)
* feat(color-registry): add the violet Tailwind 4 color

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

* refactor(tailwind): remove violet color from Tailwind configuration

Signed-off-by: Vaclav Vancura <commit@vancura.dev>

---------

Signed-off-by: Vaclav Vancura <commit@vancura.dev>
2026-02-05 13:40:56 +00:00
Marcel Bertagnini
a7d8d7eecd fix: fixed wrong alignment with left icons in setting menu
Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-02-05 11:42:53 +01:00
Simon Rey
413dca10e8 chore(preload): remove unused exports
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-05 11:24:40 +01:00
Vladyslav Zhukovskyi
c2ae07baa1 refactor(renderer): optimize onProxyStateChange iteration and type safety
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-02-05 12:01:20 +02:00
dependabot[bot]
59edae5d06 chore(deps-dev): bump eslint-plugin-storybook from 10.2.4 to 10.2.6
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.4 to 10.2.6.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.6/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 07:24:39 +01:00
dependabot[bot]
151ae657c7 chore(deps-dev): bump svelte from 5.49.1 to 5.49.2
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.49.1 to 5.49.2.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.49.2/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.49.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 07:24:15 +01:00
dependabot[bot]
aec7c4e3b5 chore(deps-dev): bump @tsconfig/svelte from 5.0.6 to 5.0.7
Bumps [@tsconfig/svelte](https://github.com/tsconfig/bases/tree/HEAD/bases) from 5.0.6 to 5.0.7.
- [Commits](https://github.com/tsconfig/bases/commits/HEAD/bases)

---
updated-dependencies:
- dependency-name: "@tsconfig/svelte"
  dependency-version: 5.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 07:23:50 +01:00
Václav Vančura
f61ab2ad59
refactor(Tooltip): use absolute px values and update Story (#16047) 2026-02-04 17:04:08 +01:00
Václav Vančura
a5c9653d7d
fix(ui): correct fuchsia color spelling throughout codebase (#16056) 2026-02-04 17:03:10 +01:00
Marcel Bertagnini
3269f96eef feat: adds troubleshooting navigation item in settings menu
Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-02-04 11:45:59 +01:00
JustMello
4b80f973ad
fix: add primary types to buttons (#16025)
Signed-off-by: Dias Tursynbayev <dtursynb@dtursynb-thinkpadt14gen6.tpb.csb>
Co-authored-by: Dias Tursynbayev <dtursynb@dtursynb-thinkpadt14gen6.tpb.csb>
2026-02-04 11:22:21 +01:00
axel7083
80ee404c90
fix(libpod#kubeplay): invalid content-type (#15617)
* fix(libpod#kubeplay): invalid content-type

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: pnpm-lock.yaml

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* chore: update test title

Co-authored-by: Philippe Martin <feloy1@gmail.com>
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: Philippe Martin <feloy1@gmail.com>
2026-02-04 11:20:49 +01:00
Brian M
318696bdf2
refactor: updateImage to latest build backend (#15363)
* refactor: updateImage to latest build backend

update image feature will be orchestrated by the ui.
updatable function was created in image registry

Assited-by: Cursor
Signed-off-by: Brian <bmahabir@bu.edu>

* fix: address docker false positive update available

for multi arch images on docker it only stores the manifest
list unlike podman which stores both. This made for a list to platform
check that wasnt correct leading to the false positives. Now I also
return the list digest when available for comparison

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2026-02-04 05:11:08 -05:00
Vladimir Lazar
76f1f5a4c4
chore(test): explicit wait before moving forward (#16015)
* chore(test): explicit wait before moving forward
2026-02-04 11:49:47 +02:00
dependabot[bot]
cef165129f chore(deps-dev): bump @biomejs/biome from 2.3.13 to 2.3.14
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.13 to 2.3.14.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.14/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-04 07:33:56 +01:00
dependabot[bot]
336ff642e0 chore(deps-dev): bump msw from 2.12.7 to 2.12.8
Bumps [msw](https://github.com/mswjs/msw) from 2.12.7 to 2.12.8.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.7...v2.12.8)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-04 07:33:31 +01:00
Sonia Sandler
d432ebb018
refactor: update containers routes to be nested (#15930)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-02-03 21:43:40 -05:00
Marcel Bertagnini
ba727e77bf
feat: added shorcut arrow icon (#16026)
* feat: added shorcut arrow icon

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added unit test

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-02-03 19:26:17 +01:00
Charlie Drage
514aa7f651
fix(windows uninstall): use dynamic product name for Windows registry cleanup (#15845)
fix(nsis): use dynamic product name for Windows registry cleanup

### What does this PR do?

Replaces hardcoded "Podman Desktop" string with `${PRODUCT_NAME}` variable
in the NSIS uninstaller script for registry key deletion.

### Why is this needed?

The auto-start registry entry is created by Electron using the productName
from the build config:

```typescript
// windows-startup.ts:86-90
app.setLoginItemSettings({
  openAtLogin: true,
  path: `"${this.podmanDesktopBinaryPath}"`,
  args,
});
```

The productName comes from:

```javascript
// .electron-builder.config.cjs:109
productName: product.name,
```

```json
// product.json:3
"name": "Podman Desktop",
```

electron-builder automatically defines `PRODUCT_NAME` for NSIS scripts
already (https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts#L210):

```nsis
// installer.nsh:4-5
DeleteRegValue HKCU "...\Run" "${PRODUCT_NAME}"
DeleteRegValue HKCU "...\StartupApproved\Run" "${PRODUCT_NAME}"
```

### How to test this PR?

1. Build and install Podman Desktop on Windows
2. Enable "Start on login" in preferences
3. Uninstall the application
4. Verify registry keys are removed from:
   - `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`
   - `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run`

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 17:04:41 +00:00
Brian M
0f72913e89
fix(plugin): address admzip filename issue on macos (#15825)
when a new directory is created fs.watcher emits an
unintended error. We should filter only by .cdix extension
files to avoid this

Signed-off-by: Brian <bmahabir@bu.edu>
2026-02-03 11:53:50 -05:00
Marcel Bertagnini
0ce30e35b5
feat: troubleshooting fa icon (#16021)
* feat: added troubleshooting icon

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: fixed wrong aspect ration

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* feat: changed torubleshooting icon in trobleshooting page

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* chore: removed troubleshooting arrow and menu item

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added wrong deleted div

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-02-03 17:22:40 +01:00
axel7083
9fdc29e542
refactor(extension/podman): make darwin-socket-compatibility.ts use execPodman (#15993)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-02-03 10:04:47 +01:00
Evžen Gasta
07a739e673
refactor(WelcomePage): migrated to product.name (#15924)
* refactor: migrated WelcomePage to svelte5

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* refactor(WelcomePage): migrated to product.name

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-03 09:59:36 +01:00
Simon Rey
71d5f1f4d0 chore(main): update express major version
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-03 09:54:30 +01:00
Anton Misskii
9a7c262b7f
chore(test): Fix k8s e2e tests for kind cluster deletion confirmation dialog (#15986) 2026-02-03 09:28:04 +01:00
dependabot[bot]
5200087c70 chore(deps-dev): bump jsdom from 27.4.0 to 28.0.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 27.4.0 to 28.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/27.4.0...28.0.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 28.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 09:20:26 +01:00
dependabot[bot]
8e9f1cbc56 chore(deps-dev): bump eslint-plugin-storybook from 10.2.3 to 10.2.4
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.3 to 10.2.4.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.4/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 08:56:32 +01:00
dependabot[bot]
606fad884b chore(deps-dev): bump @playwright/test from 1.58.0 to 1.58.1
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.58.0 to 1.58.1.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.58.0...v1.58.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.58.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 08:16:05 +01:00
dependabot[bot]
9bc0b169d8 chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.4.0 to 20.4.1
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.1/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.4.0 to 20.4.1
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.1/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 07:50:50 +01:00
dependabot[bot]
f0f1e78df0 chore(deps): bump github/codeql-action from 4.32.0 to 4.32.1
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.0 to 4.32.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b20883b0cd...6bc82e05fd)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 07:50:35 +01:00
dependabot[bot]
141ed7b501 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.0.5 to 4.1.0
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.1.0/packages/core)

Updates `@argos-ci/playwright` from 6.4.0 to 6.4.1
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.4.1/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 07:50:17 +01:00
dependabot[bot]
2bd11f2ca2 chore(deps-dev): bump get-tsconfig from 4.13.0 to 4.13.1
Bumps [get-tsconfig](https://github.com/privatenumber/get-tsconfig) from 4.13.0 to 4.13.1.
- [Release notes](https://github.com/privatenumber/get-tsconfig/releases)
- [Commits](https://github.com/privatenumber/get-tsconfig/compare/v4.13.0...v4.13.1)

---
updated-dependencies:
- dependency-name: get-tsconfig
  dependency-version: 4.13.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 16:33:18 +01:00
axel7083
4da7df4e51
refactor(extension/podman): mv darwin test to dedicated file (#15987)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-02-02 15:24:03 +00:00
Simon Rey
06a4296118 test: add test
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-02 15:28:40 +01:00
Simon Rey
e4b9230320 fix(renderer/HelpActionsItems): clean up event listener
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-02-02 15:28:40 +01:00
axel7083
d01ada3548
refactor(extension/podman): mv LinuxSocketCompatibility to dedicated file (#15981)
* refactor(extension/podman): mv LinuxSocketCompatibility to dedicated file

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test: increase coverage of LinuxSocketCompatibility

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-02-02 14:04:04 +01:00
Evžen Gasta
186a391e5c
refactor: migrated WelcomePage to svelte5 (#15978)
refactor(revert): migrated WelcomePage to svelte5 (#15923)

This reverts commit 1d53a165ac.

Signed-off-by: Evžen Gasta <46690189+gastoner@users.noreply.github.com>
2026-02-02 13:19:54 +01:00
Evžen Gasta
1d53a165ac
refactor: migrated WelcomePage to svelte5 (#15923)
* refactor: migrated WelcomePage to svelte5

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added OnboardingInfoWithAdditionalInfo interface

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-02-02 10:23:39 +00:00
Jiri Dostal
54999f5b20 refactor(chevron): use ChevronExpander icon instead own implementation
Signed-off-by: Jiri Dostal <jdostal@redhat.com>
2026-02-02 09:57:21 +01:00
Jiri Dostal
28a3c6ae2b refactor(chevronExpander): introduce expandable chevron icon
Signed-off-by: Jiri Dostal <jdostal@redhat.com>
2026-02-02 09:57:21 +01:00
dependabot[bot]
d1e913b483 chore(deps-dev): bump svelte-check from 4.3.5 to 4.3.6
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.3.5...svelte-check@4.3.6)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.3.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:59:43 +01:00
dependabot[bot]
b20c8859da chore(deps-dev): bump autoprefixer from 10.4.23 to 10.4.24
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.23 to 10.4.24.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.23...10.4.24)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-version: 10.4.24
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:53:12 +01:00
dependabot[bot]
8ec5b93b31 chore(deps-dev): bump eslint-plugin-storybook from 10.2.1 to 10.2.3
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.1 to 10.2.3.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:33:47 +01:00
dependabot[bot]
13f007c03e chore(deps-dev): bump svelte from 5.49.0 to 5.49.1
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.49.0 to 5.49.1.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.49.1/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.49.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:32:12 +01:00
dependabot[bot]
b203418b75 chore(deps-dev): bump @eslint/compat in the eslint group
Bumps the eslint group with 1 update: [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat).


Updates `@eslint/compat` from 2.0.1 to 2.0.2
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/compat-v2.0.2/packages/compat)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 2.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:31:07 +01:00
dependabot[bot]
df4d0ba1c3 chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.3.1 to 20.4.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.0/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.3.1 to 20.4.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.4.0/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:30:19 +01:00
dependabot[bot]
2b5a100844 chore(deps): bump mikepenz/action-junit-report from 6.1.0 to 6.2.0
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](a294a61c90...74626db735)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:29:52 +01:00
dependabot[bot]
d385b5f56f chore(deps): bump dawidd6/action-download-artifact from 12 to 14
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 12 to 14.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](0bd50d53a6...5c98f0b039)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '14'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:29:10 +01:00
dependabot[bot]
9ffd61fd90 chore(deps): bump undici from 7.19.2 to 7.20.0
Bumps [undici](https://github.com/nodejs/undici) from 7.19.2 to 7.20.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.19.2...v7.20.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:28:41 +01:00
dependabot[bot]
3f94e88a9c chore(deps-dev): bump globals from 17.2.0 to 17.3.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.2.0 to 17.3.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.2.0...v17.3.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:28:06 +01:00
Sonia Sandler
aa4fe129ff
refactor: update images routes to be nested (#15929)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-01-30 10:21:32 -05:00
Sonia Sandler
e533245331
chore: update tooltip component design (#14819)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Václav Vančura <commit@vancura.dev>
Co-authored-by: Václav Vančura <vancura@users.noreply.github.com>
2026-01-30 14:54:52 +00:00
Florent BENOIT
1bc01dc186
refactor(mock): generate @podman-desktop/api mock from its definition (#15670)
* refactor(mock): generate @podman-desktop/api mock from its definition

instead of writing for each function and for each namespace the content
reuse the .d.ts definition and wire automatically vi.fn()

customize/override some classes implementation manually but most of it is generated

fixes https://github.com/podman-desktop/podman-desktop/issues/14493

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-30 14:45:47 +01:00
Tim deBoer
cfc879fbf4 chore: remove kind labels from issue templates
Removed all kind labels from the templates now that we have issue types.

Part of #14777.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-30 08:11:40 -05:00
Florent Benoit
f39a49218b chore: generate files being exported by package.json file
related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-30 14:09:44 +01:00
Rujuta Shinde
03c20ce72a
chore(website): added links to the icons under adopters section (#15945)
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-01-30 08:08:59 -05:00
axel7083
e767846294
refactor(extension/podman): extract DarwinSocketCompatibility to dedicated file (#15951)
* refactor(extension/podman): extract DarwinSocketCompatibility to dedicated file

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test: increase coverage of DarwinSocketCompatibility

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-30 14:07:48 +01:00
Vladyslav Zhukovskyi
515861f1cc chore(ui): show disabled Create new button with warning
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-01-30 14:20:45 +02:00
axel7083
0bd9e7346a
refactor(extension/podman): extract abstract SocketCompatibility to dedicated file (#15942)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-30 09:37:26 +01:00
Evžen Gasta
af1db5d0e0
refactor(IconImage): migrated IconImage to svelte5 (#15925)
* refactor(IconImage): migrated IconImage to svelte5

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed dependencies

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-30 09:10:26 +01:00
Denis Golovin
8d2bc8e67a
feat(certificates-ui): view only Certificates preference page (#15671)
* feat(certificats-ui): view only Certificates Preference page

Introduce certificate svelte store with certificate information
relevant for UI. A certificate in store has subject, issuer, serial
number and expiration extracted from RDNs.

Introduce Certificates Preference page that shows the certificates from
svelte store as a Table with 4 columns:
1. Subject
2. Issuer
3. Serial #
4. Expiration date

The Preference page allows you to:
1. see Subject common name if CN RDN is available or full Subject string
2. see Issuer common name or 'Self signed'
2. see Serial # as it is in certificate
4. see Expiration date icon
5. change sorting on individual columns
6. search in the table by Certificate or Issuer name

Signed-off-by: Denis Golovin <dgolovin@redhat.com>

---------

Signed-off-by: Denis Golovin <dgolovin@redhat.com>
2026-01-29 13:17:23 -08:00
Sonia Sandler
b4194b91a3
refactor: update volumes routes to be nested (#15928)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-01-29 13:57:12 -05:00
cdrage
9ad200ccb9 chore: Update chocolatey packages for 1.25.1
Signed-off-by: cdrage <fbenoit@redhat.com>
2026-01-29 19:02:48 +01:00
Sonia Sandler
6d79b6249d
chore: add the option to adjust the icon button size (#15912)
* chore: add the option to adjust the icon button size
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: fix undefined size case
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: move default icon size to inside encode
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: add test
Signed-off-by: Sonia Sandler <ssandler@redhat.com>

* chore: reset mocks for tests
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-01-29 12:51:37 -05:00
Charlie Drage
60140cbf26
fix(ci): use github API for choco release (#15897)
### What does this PR do?

Fixes the Chocolatey package update script that was failing with:
```
au_GetLatest failed
Object reference not set to an instance of an object.
```

The script was scraping the GitHub page, which recently broke. This switches to the GitHub API.

### Screenshot / video of UI

N/A

### What issues does this PR fix or reference?

Closes https://github.com/podman-desktop/podman-desktop/issues/15896

### How to test this PR?

```powershell
# Install au if not already
choco install au -y

# Run script
cd .chocolatey/podman-desktop
$env:VERSION = "1.25.0"
./update.ps1

# Expect nuspec & releaseNotes to be updated
```

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-29 12:38:58 -05:00
axel7083
294d6207ab
refactor(extension/podman): mv compatibility-mode.ts (#15941)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-29 15:11:15 +00:00
Rujuta Shinde
6d56a7b5dd
chore(website): added adopters section to the community page (#15894)
* chore(website): added adopters section to the community page
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-01-29 09:35:27 -05:00
Vladyslav Zhukovskyi
42aa36e232 chore(kind): configure provider warnings based on the dependent container connections
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-01-29 13:31:36 +02:00
axel7083
f79135dfdc
refactor(CopyToClipboard): migrate to Svelte5 (#15934)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-29 10:24:44 +00:00
Florent Benoit
b2c3e59276 chore(api): add tsconfig options
add new values to emit more files and to store them in dist folder

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-29 11:02:59 +01:00
Evžen Gasta
6cd68716bc
fix(StatusIcon): fixed icon size in StatusIcon component (#15859)
* fix(StatusIcon): fixed icon size with placement

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed alignment of Icon component

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added text-xs test

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-29 10:38:31 +01:00
Evžen Gasta
8c3bd77ea1
refactor: migrated ConnectionStatus component to svelte5 (#15933)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-29 10:36:18 +01:00
dependabot[bot]
3e88328007 chore(deps-dev): bump electron from 40.0.0 to 40.1.0
Bumps [electron](https://github.com/electron/electron) from 40.0.0 to 40.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.0.0...v40.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 07:33:04 +01:00
dependabot[bot]
51f9736440 chore(deps-dev): bump svelte from 5.48.5 to 5.49.0
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.48.5 to 5.49.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.49.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.49.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 07:08:20 +01:00
Tim deBoer
41531ae204 chore: rephrase triage and review
From PR review, change
'issue and PR triage and review process' to
'issue triage and PR review process'.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-28 11:54:00 -05:00
Tim deBoer
cbb8a90d72 chore: fixes from code review
Fix links to Code of Conduct - point both to our CoC (which in turn points to CNCF CoC).

Remove invalid .md from CODEOWNERS.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-28 11:54:00 -05:00
Tim deBoer
a200beb4dd chore: add GOVERNANCE.md
We're overdue adopting a governance policy. Full credit for this content goes to @slemeur,
I've just done the final markdown cleanup and PR creation.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-28 11:54:00 -05:00
dependabot[bot]
4138252d17 chore(deps-dev): bump cheerio from 1.1.2 to 1.2.0
Bumps [cheerio](https://github.com/cheeriojs/cheerio) from 1.1.2 to 1.2.0.
- [Release notes](https://github.com/cheeriojs/cheerio/releases)
- [Commits](https://github.com/cheeriojs/cheerio/compare/v1.1.2...v1.2.0)

---
updated-dependencies:
- dependency-name: cheerio
  dependency-version: 1.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 14:30:33 +01:00
dependabot[bot]
85137b2ac5 chore(deps): bump undici from 7.19.1 to 7.19.2
Bumps [undici](https://github.com/nodejs/undici) from 7.19.1 to 7.19.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.19.1...v7.19.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 14:04:08 +01:00
dependabot[bot]
7b3b957184 chore(deps): bump tar from 7.5.6 to 7.5.7
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.6 to 7.5.7.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.6...v7.5.7)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 13:38:55 +01:00
Marcel Bertagnini
e61a280ca5 feat: add iconRight and iconRightAlign props to SettingsNavItem
Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-01-28 12:57:04 +01:00
axel7083
bd7b9877fe
feat(renderer): adding confirmation dialog when deleting connection (#15742)
* feat(renderer): adding confirmation dialog when deleting connection

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test(renderer): update logic

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test(e2e): handle confirmation dialog

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-28 10:16:14 +00:00
George Serban
d35aa46260
chore(test): fixes UI stress test failures caused by list scrolling (#15922)
* chore(test): check if element is visible

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* chore(test): investigate failures

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* chore(test): update timeout

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* chore(test): handle video save errors

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* chore(test): ensure video cleanup

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

---------

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-01-28 10:33:31 +01:00
Evžen Gasta
22f232890d
refactor(renderer): migrated from Fa to Icon component (#15659)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-28 09:55:46 +01:00
dependabot[bot]
a4313436f3 chore(deps-dev): bump svelte from 5.48.3 to 5.48.5
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.48.3 to 5.48.5.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.48.5/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.48.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:29:05 +01:00
dependabot[bot]
3e07d5a6ba chore(deps): bump github/codeql-action from 4.31.11 to 4.32.0
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.11 to 4.32.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](19b2f06db2...b20883b0cd)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:08:28 +01:00
dependabot[bot]
a6a13d2708 chore(deps-dev): bump globals from 17.1.0 to 17.2.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.1.0 to 17.2.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.1.0...v17.2.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:06:12 +01:00
dependabot[bot]
f3b04a4018 chore(deps): bump @floating-ui/dom from 1.7.4 to 1.7.5
Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
- [Commits](https://github.com/floating-ui/floating-ui/commits/HEAD/packages/dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/dom"
  dependency-version: 1.7.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:05:45 +01:00
dependabot[bot]
2006436f5d chore(deps-dev): bump eslint-plugin-sonarjs from 3.0.5 to 3.0.6
Bumps [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS) from 3.0.5 to 3.0.6.
- [Release notes](https://github.com/SonarSource/SonarJS/releases)
- [Commits](https://github.com/SonarSource/SonarJS/commits)

---
updated-dependencies:
- dependency-name: eslint-plugin-sonarjs
  dependency-version: 3.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:05:24 +01:00
dependabot[bot]
6d51f351f6 chore(deps-dev): bump eslint-plugin-storybook from 10.2.0 to 10.2.1
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.2.0 to 10.2.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.1/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:04:11 +01:00
dependabot[bot]
95b54c695d chore(deps): bump tar from 7.5.4 to 7.5.6
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.4 to 7.5.6.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.4...v7.5.6)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 14:33:42 +01:00
Tim deBoer
294e620211 chore: add github type to design issues
We have a UX GitHub issue type, but the UX issue template was not applying it.

Small part of #14777.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-27 08:27:28 -05:00
George Serban
5f122070d6
test: update assertion to handle system images (#15904)
* test: update assertion to handle system images

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* test: count images before the test

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* chore(test): use baseline image counter

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

---------

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-01-27 11:51:45 +01:00
Florent Benoit
b903deb33b chore: include author to fix publisher's name on Windows binary
fixes https://github.com/podman-desktop/podman-desktop/issues/15890
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-27 11:23:32 +01:00
Evžen Gasta
be8f2ca568
feat: added icon examples to code guidelines (#15673)
* feat: added icon examples to code guideliens

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed unused imports

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-27 07:21:51 +01:00
dependabot[bot]
90783553aa chore(deps-dev): bump @biomejs/biome from 2.3.12 to 2.3.13
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.12 to 2.3.13.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.13/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 06:52:04 +01:00
dependabot[bot]
c15aece4a0 chore(deps-dev): bump svelte from 5.48.2 to 5.48.3
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.48.2 to 5.48.3.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.48.3/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.48.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 06:51:38 +01:00
dependabot[bot]
c74a5ceb16 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.53.1 to 8.54.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.53.1 to 8.54.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/parser)

Updates `typescript-eslint` from 8.53.1 to 8.54.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 06:50:26 +01:00
Vladyslav Zhukovskyi
ee56a88bfc
chore(kind): update kind provider state based on the dependent container connections (#15637)
chore(kind): handle factory registration based on the dependent container engine

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-01-26 23:07:44 +02:00
Marcel Bertagnini
e2d3988c3f
chore(release): release notes for 1.25 (#15781)
* chore(release): release notes for 1.25

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: include more detail to highlight

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added better description to highlights

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: wrong formatting

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: wrong text formatting

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* feat: added release image

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: changed wrong release version

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-01-26 18:18:29 +01:00
Rujuta Shinde
a719703c47
chore(website): added section for learning videos on the community page (#15822) 2026-01-26 09:51:19 -05:00
Tim deBoer
3cbb845578 chore: fix typo
Fix typo blindly copied from containers org. :)

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-26 08:32:22 -05:00
Tim deBoer
ec52a90f2e chore: update SECURITY.md
Our security policy was still pointing to the policy in the containers org and needs
to be updated. (e.g. disclosure should not be via the Podman security list)

We have one public mailing list today that anyone can join,
cncf-podman-desktop-maintainers@lists.cncf.io. We've created a second, private list
for security issues: cncf-podman-desktop-security@lists.cncf.io.

This PR keeps the same policy/process as the containers org, except:
- asks for disclosure via our own -security list
- adds GitHub security reporting as another option
- announcements are done via our own -maintainers. (announcements could go elsewhere
  later, but it doesn't seem worth creating another list at this point)

Fixes #15762.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-26 08:32:22 -05:00
dependabot[bot]
beba96e99f chore(deps-dev): bump @playwright/test from 1.57.0 to 1.58.0
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.57.0 to 1.58.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.57.0...v1.58.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.58.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 11:23:37 +01:00
Vladimir Lazar
b9d1d3272f
chore(test): skip test when usermode networking is enabled (#15888)
* chore(test): skip test when usermode networking is enabled
2026-01-26 11:18:11 +02:00
Evžen Gasta
6ab8da917e
refactor(semver): switches from compare-versions to semver (#15857)
refactor(semver): switches from compare-verions to semver

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-26 08:14:27 +01:00
dependabot[bot]
44f688d954 chore(deps): bump undici from 7.19.0 to 7.19.1
Bumps [undici](https://github.com/nodejs/undici) from 7.19.0 to 7.19.1.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.19.0...v7.19.1)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 08:04:10 +01:00
dependabot[bot]
8641a542d6 chore(deps-dev): bump @biomejs/biome from 2.3.11 to 2.3.12
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.11 to 2.3.12.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.12/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 08:03:48 +01:00
dependabot[bot]
6456c76212 chore(deps-dev): bump svelte from 5.48.0 to 5.48.2
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.48.0 to 5.48.2.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.48.2/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.48.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 08:03:28 +01:00
dependabot[bot]
d7fc671e42 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.0.4 to 4.0.5
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.0.5/packages/core)

Updates `@argos-ci/playwright` from 6.3.10 to 6.4.0
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.4.0/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 08:02:20 +01:00
dependabot[bot]
5878ca1d0f chore(deps): bump github/codeql-action from 4.31.10 to 4.31.11
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.10 to 4.31.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](cdefb33c0f...19b2f06db2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 08:01:56 +01:00
Florent Benoit
58087dcd77 chore: introduce package.json file in packages/api
will allow to declare dependency on it

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-23 18:51:27 +01:00
Philippe Martin
38e463c225
feat: disable internal Kubernetes Dashboard when extension provides kube dashboard feature (#15814)
* feat: stop/start internal kubernetes monitoring
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* feat: show/hide kubernetes icon
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* test: update tests
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* test: add unit tests
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* fix: type
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* fix: prevent stop/start several times
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-01-23 17:07:00 +01:00
dependabot[bot]
e3a963bb37 chore(deps-dev): bump svelte from 5.47.1 to 5.48.0
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.47.1 to 5.48.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.48.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.48.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 09:14:52 +01:00
dependabot[bot]
f13dcbcabf chore(deps): bump zod from 4.3.5 to 4.3.6
Bumps [zod](https://github.com/colinhacks/zod) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.3.5...v4.3.6)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 07:45:37 +01:00
dependabot[bot]
a88dd64e25 chore(deps-dev): bump globals from 17.0.0 to 17.1.0
Bumps [globals](https://github.com/sindresorhus/globals) from 17.0.0 to 17.1.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.0.0...v17.1.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 07:42:32 +01:00
dependabot[bot]
1392980ff8 chore(deps-dev): bump @vitest/coverage-v8 in the vitest group
Bumps the vitest group with 1 update: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-v8` from 4.0.17 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.0.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 07:18:04 +01:00
dependabot[bot]
623c9c8899 chore(deps): bump actions/checkout from 6.0.1 to 6.0.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](8e8c483db8...de0fac2e45)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 07:17:33 +01:00
dependabot[bot]
5b5b66dbfa chore(deps): bump actions/setup-python from 6.1.0 to 6.2.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](83679a892e...a309ff8b42)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 07:16:59 +01:00
Tim deBoer
9cdef69faa
chore: update telemetry link and add privacy link to feedback form (#15864)
* chore: update telemetry link and add privacy link to feedback form

Bending the rules a little with 1 PR to resolve 2 related issues as they touch 2
of the same files.

We have had feedback from RH legal on two things:
- #15862: The telemetry infoLink is not a _privacy_ statement and shouldn't be
  called one. The proposed change is from 'Read our privacy statement' to 'For
  more information read our statement'.
- #15861: The feedback form offers to collect your email address, so it should
  link to a separate url that is a privacy statement.

This change:
- Updates the infoLink to the proposed text.
- Adds a privacyLink and privacyURL to product.json.
- Adds the new privacy link to the feedback form (identical to telemetry link
  in WelcomePage).

Used onMount instead of $derived in FeedbackForm because I do not want to trigger
Svelte 5 migration as part of this issue.

Fixes #15862.
Fixes #15861.

Signed-off-by: Tim deBoer <git@tdeboer.ca>

* chore: change telemetry info and privacy to objects

We had infoLink/infoURL and privacyLink/privacyURL. This changes them both to be
simple objects with link/url properties.

There is a bunch of change, but overall it is slightly simpler and better
structured since info and privacy are still optional, but once you provide them
the properties aren't.

Signed-off-by: Tim deBoer <git@tdeboer.ca>

---------

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-22 19:57:55 +00:00
Denis Golovin
7dd6e28464
feat(authentication): implement extension allowance and session access control (#15829)
* feat(authentication): implement extension allowance  and session access control

- Added methods to read/update allowed extensions for authentication providers
- Implemented a check for access permissions for extensions
- Updated tests to cover new functionality

Signed-off-by: Denis Golovin <dgolovin@redhat.com>

* fix: extension created the session should be allowed to use it

Fix modifies the getSession so it adds requesting extension to
the allowance list as allowed to use the created session.

Signed-off-by: Denis Golovin <dgolovin@redhat.com>

* refactor(authentication): update allowance keying

- Changed the allowance key format to use account ID instead of account
   name for better uniqueness.
- Updated related methods and tests to reflect this change, ensuring
   consistent access control for extensions.
- Enhanced fallback mechanism to display account ID when the label is not
   available.

Signed-off-by: [Your Name] <your.email@example.com>
Signed-off-by: Denis Golovin <dgolovin@redhat.com>

---------

Signed-off-by: Denis Golovin <dgolovin@redhat.com>
Signed-off-by: [Your Name] <your.email@example.com>
2026-01-22 14:47:53 -05:00
Marcel Bertagnini
fc0cc43e5e refactor(renderer/status-bar): migrate to svelte 5
Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-01-22 15:28:45 +01:00
Simon Rey
46ae012c8e fix(renderer): provide default label for spinner in markdown
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-22 15:26:01 +01:00
Simon Rey
39056aed21 feat(ui/progress/Spinner): add label property
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-22 15:26:01 +01:00
dependabot[bot]
4713718eb7 chore(deps-dev): bump eslint-plugin-storybook from 10.1.11 to 10.2.0
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.11 to 10.2.0.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.2.0/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 10:52:45 +01:00
dependabot[bot]
5266481062 chore(deps): bump undici from 7.18.2 to 7.19.0
Bumps [undici](https://github.com/nodejs/undici) from 7.18.2 to 7.19.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.18.2...v7.19.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 10:52:06 +01:00
Florent Benoit
653377dcee chore: fix lock file
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-22 10:27:36 +01:00
dependabot[bot]
2f2580e08e chore(deps-dev): bump prettier from 3.8.0 to 3.8.1
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.0...3.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 07:19:52 +01:00
dependabot[bot]
927b87085f chore(deps): bump tar from 7.5.5 to 7.5.6
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.5 to 7.5.6.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.5...v7.5.6)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 07:19:27 +01:00
ScrewTSW
53a724ac44
chore(fix): adding missing permissions compared to flathub repo (#15834)
* chore(fix): adding missing permissions compared to flathub repo

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(fix): added proper commentary explaining flatpak permission

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

---------

Signed-off-by: Tibor Dancs <tdancs@redhat.com>
2026-01-21 11:04:59 -05:00
Philippe Martin
b1aa18f262
fix: do not consider proxy as enabled if only noProxy is defined (#15838)
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-01-21 15:22:21 +01:00
Václav Vančura
adf38f7f96
feat(storybook): expand Tooltip stories with sizes and contexts (#15819)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-21 14:41:22 +01:00
Simon Rey
b5d9315bab fix(ui/spinner): hide decorative SVG from screen readers
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-21 13:54:02 +01:00
Tim deBoer
5f623528ee chore: fix comment
Update the comment to match what it's testing.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-21 07:30:55 -05:00
Tim deBoer
e76061ce97 fix: catalog shouldn't expose incompatible extensions
The extension catalog currently exposes all extensions from getExtensions(). The
only users of this are the extension updater (which filters out incompatible
extensions) and the renderer extension catalog (which currently didn't, and allows
you to install them).

This moves the filtering of incompatible extensions from the updater directly into
the catalog getExtensions(). This simplifies the updater and fixes the issue in
the renderer.

Tests updated. It felt odd to remove the test from the updater at first, but this
case can never happen and the same test is now directly in the catalog.

(replaces draft PR attempt #15769 that filtered in the renderer)

Fixes #15767.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-21 07:30:55 -05:00
Václav Vančura
6cc186476d
feat(storybook): expand Button stories with sizes and contexts (#15818)
Signed-off-by: Vaclav Vancura <commit@vancura.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-21 13:27:55 +01:00
Simon Rey
e9e3dcc96a fix(ui/spinner): fix incorrect ARIA and role
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-21 11:39:25 +01:00
Simon Rey
1559e12e6f chore(renderer/ProviderResultPage): explicit spinner size in px + self-closing tag
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-21 10:03:08 +01:00
Evžen Gasta
7cbf394827
fix: fixed visibility of task message when being set through API (#15725)
* fix: fixed visibility of task message when being set through podman desktop API

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-21 09:57:54 +01:00
dependabot[bot]
203376e473 chore(deps): bump tar from 7.5.4 to 7.5.5
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.4 to 7.5.5.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.4...v7.5.5)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 09:03:30 +01:00
Brian M
822911962d
fix(renderer): add id plus tag identifer for save images (#15749)
now images with the same id but different tag can also be saved

Assisted-by: Cursor

Signed-off-by: Brian <bmahabir@bu.edu>
2026-01-20 19:05:38 -05:00
Václav Vančura
edf678536a
feat(storybook): expand Spinner stories with sizes and contexts (#15816)
Add comprehensive size variants and real-world usage examples, plus Storybook theme-aware fallback tokens to keep labels readable in light/dark previews.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-20 17:46:00 +00:00
Rujuta Shinde
96aa1ce51a
chore(website): added changes for attend community event section (#15687)
* chore(website): added changes for attend community event section
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2026-01-20 08:09:33 -05:00
Florent Benoit
b3f39d0852 chore(api): add index files when we have multiple files in folder
add exports from index files

related to https://github.com/podman-desktop/podman-desktop/issues/15496
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-20 14:07:42 +01:00
Vladimir Lazar
30a72af745
chore(test): create replace yaml e2e test case (#15773)
* chore(test): create replace yaml e2e test case
2026-01-20 12:35:00 +02:00
Simon Rey
0f18ad0d6f chore: fix lock file duplicate entry
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-20 11:00:22 +01:00
dependabot[bot]
73bb894cd6 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.53.0 to 8.53.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.53.0 to 8.53.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.1/packages/parser)

Updates `typescript-eslint` from 8.53.0 to 8.53.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.53.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.53.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.53.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 07:17:17 +01:00
dependabot[bot]
8198b26f5c chore(deps-dev): bump svelte from 5.47.0 to 5.47.1
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.47.0 to 5.47.1.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.47.1/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.47.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 07:16:49 +01:00
dependabot[bot]
13dc53ef7d chore(deps): bump tar from 7.5.3 to 7.5.4
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.3...v7.5.4)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 07:16:25 +01:00
MarsKubeX
1537648b03 chore: bump version to 1.26.0
Signed-off-by: MarsKubeX <fbenoit@redhat.com>
2026-01-19 19:34:02 +01:00
Philippe Martin
96126cbefd
feat: set Kubernetes experimental as simple preference (#15766)
* feat: set Kubernetes experimental as simple preference
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* feat: isExperimentalConfigurationEnabled supports boolean
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* feat: remove video for kubernetes experimental feature
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-01-19 17:53:42 +01:00
Charlie Drage
62f0e71c4e
feat(managed-by): add linux managed configuration support for Flatpak (#15729)
### What does this PR do?

On flatpak, the traditional `/usr/share/` directory is not accessible,
and rather it's accessible via `/run/host/usr/share` from within the flatpak.

This is accessible by adding: `  - "--filesystem=host-os:ro"` to our
flatpak yaml, which gives read-only support for the host file system
with the ability to access the /usr/share/podman-desktop directory via
`/run/host/usr/share/podman-desktop`.

This change allows us to detect if we are running in a flatpak
environment and change where we are finding our managed configuration
file anyways.

We use `process.env.FLATPAK_ID` throughout Podman Desktop anyways :)

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15314

### How to test this PR?

1. Create file `/usr/share/podman-desktop/default-settings.json`:

```sh
  { "telemetry.enabled": false }
```

and

`/usr/share/podman-desktop/locked.json`:

```sh
  { "locked": ["telemetry.enabled"] }
```

2. Download the Flatpak manifest.

**SPECIAL NOTE:**

- This includes the upcoming changes to node24
- This pulls from this active branch the podman desktop build
- We pre-build podman desktop to get the artifacts / cache / enable
  network access to that we can test this build
- Has the new parameter added (`host-os:ro`)

```
curl -O 135596fa62/io.podman_desktop.PodmanDesktop.yml
```

3. Build:

```
flatpak-builder --force-clean --disable-rofiles-fuse --user \
  --install-deps-from=flathub --repo=repo builddir \
  io.podman_desktop.PodmanDesktop.yml
```

4. Install:

```
flatpak --user install repo io.podman_desktop.PodmanDesktop
```

5. Start podman desktop, go to Settings > Telemetry, see that it is not
   locked. You can also check your logs and see at the very top how it
   is now loading default-settings.json and locked.json from
   `/run/host`.

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-19 10:01:52 -05:00
Simon Rey
141bc4f5bb refactor(main/extension-installer): remove unused method
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-19 11:49:46 +01:00
Simon Rey
5324abcc9a fix(main/extension-installer): check extension in image does not collide with installed one
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-19 11:18:41 +01:00
Florent Benoit
5671384912 chore(undici): ensure usage of v7.18.2
avoid usage of previous version having security issues
https://github.com/advisories/GHSA-g9mf-h72j-4rw9
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-19 11:18:14 +01:00
Florent Benoit
5c01e3717a chore(tar): enforce tar >= 7.5.3
ensure there is no previous version and it has security issues

fixes https://github.com/advisories/GHSA-8qq5-rm4j-mr97
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-19 10:30:50 +01:00
Simon Rey
7d137e80e4 chore(renderer/extensions): update typo in test
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-19 10:06:21 +01:00
Simon Rey
f5fc27f00b chore(renderer/extensions): update typo in test
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-19 09:43:42 +01:00
Simon Rey
a40caff58d fix(renderer/extensions): display error when progress is 100 but error
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-19 09:43:42 +01:00
Florent Benoit
61d902f25a chore(qs): update to v6.14.1
fix security issue
https://github.com/advisories/GHSA-6rw7-vpxm-498p

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-19 09:42:59 +01:00
dependabot[bot]
a6690ca4a6 chore(deps-dev): bump svelte from 5.46.4 to 5.47.0
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.46.4 to 5.47.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.47.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.47.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-19 07:01:40 +01:00
Philippe Martin
1008dec941
feat: register features declared by extensions (#15738)
* feat: register features declared by extensions
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* fix: typo
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* feat: add FeatureRegistry to inversify container
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-01-17 18:35:23 +01:00
dependabot[bot]
7447063ba5 chore(deps-dev): bump @argos-ci/playwright in the argosci group
Bumps the argosci group with 1 update: [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/playwright` from 6.3.9 to 6.3.10
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.3.10/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.3.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 12:55:59 +01:00
dependabot[bot]
db2c92e44b chore(deps): bump actions/setup-node from 6.1.0 to 6.2.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](395ad32622...6044e13b5d)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 12:54:36 +01:00
dependabot[bot]
86ca8c226f chore(deps-dev): bump electron from 40.0.0-beta.9 to 40.0.0
Bumps [electron](https://github.com/electron/electron) from 40.0.0-beta.9 to 40.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.0.0-beta.9...v40.0.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 10:36:58 +01:00
dependabot[bot]
365db48da9 chore(deps-dev): bump svelte from 5.46.3 to 5.46.4
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.46.3 to 5.46.4.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.46.4/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.46.4
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 03:53:51 -05:00
dependabot[bot]
67a05b037d chore(deps): bump tar from 7.5.2 to 7.5.3
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.2...v7.5.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 09:27:39 +01:00
George Serban
ff56cfe299
ci: update plan to install nodejs 24 for testing farm (#15745)
Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-01-16 18:49:27 +01:00
George Serban
def4326820
test: ensure image table visibility before counting rows (#15746)
* test: update test

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

* test: remove waiter

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>

---------

Signed-off-by: serbangeorge-m <serbangeorge.m@gmail.com>
2026-01-16 18:27:11 +01:00
axel7083
76ec5159cd
feat(extension/podman): switch to podman msi installer (#15441)
* feat(extension/podman): switch to podman msi installer

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* revert: unnecessary change to package.json

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-16 13:59:49 +01:00
Shipra Singh
640cb36a64
docs: added a troubleshooting section (#15718)
* docs: added a troubleshooting section

Signed-off-by: Shipra Singh <shipsing@redhat.com>

* docs: fixed suggestions by coderabbit

Signed-off-by: Shipra Singh <shipsing@redhat.com>

---------

Signed-off-by: Shipra Singh <shipsing@redhat.com>
2026-01-16 10:38:19 +05:30
Florent Benoit
4a36cee7fe chore: patch dmg builder to have the background image working
related to
https://github.com/electron-userland/electron-builder/issues/9072

fixes https://github.com/podman-desktop/podman-desktop/issues/15695
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-15 20:17:46 +01:00
Simon Rey
6b29d0a388 refactor(api/list-organizer): remove unused interface
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-15 17:05:45 +01:00
Marcel Bertagnini
13ceabd8d1
feat: added product name from product json in onboarding component (#15709)
* feat: added product name from product json in onboarding component

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added unit test for product name in onboardin

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added welcome message in onboarding info

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: added the replacecontextkeyplaceholders for display

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-01-15 17:00:47 +01:00
Evžen Gasta
f7d9378951
feat: added class prop to CronJob and Job icons (#15721)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-15 15:33:43 +01:00
Vladimir Lazar
a20dbd803d
chore(test): validates enviroment column values (#15717)
chore(test): validate environemtn column values

Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-01-15 13:01:44 +02:00
Simon Rey
1bbcf4b5cf refactor(main/list-organizer): scope record const to class
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-15 10:43:01 +01:00
Simon Rey
7ef582fc7a chore(package): update pnpm
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-15 10:35:01 +01:00
axel7083
7691e4d7c9
feat(extension/podman): introduce PodmanWindowsLegacyInstaller (#15655)
* feat(extension/podman): introduce PodmanWindowsLegacyInstaller

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* docs: adding details explanation in PodmanWindowsLegacyInstaller

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: apply suggestion from bot review

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* chore: injecting PodmanWindowsLegacyInstaller

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-15 10:01:15 +01:00
Evžen Gasta
a8ea08edac
fix(DockerCompat): fixed visibility when not defined (#15705)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-15 10:00:54 +01:00
Florent Benoit
0257dd6fd0 refactor(context-info): move context-info to api package
move it to api package so preload can import it

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-15 09:23:18 +01:00
dependabot[bot]
2b91b1926a chore(deps-dev): bump electron from 40.0.0-beta.8 to 40.0.0-beta.9
Bumps [electron](https://github.com/electron/electron) from 40.0.0-beta.8 to 40.0.0-beta.9.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.0.0-beta.8...v40.0.0-beta.9)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0-beta.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 08:41:33 +01:00
dependabot[bot]
efb87a42c2 chore(deps): bump undici from 7.12.0 to 7.18.2
Bumps [undici](https://github.com/nodejs/undici) from 7.12.0 to 7.18.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.12.0...v7.18.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 07:02:26 +01:00
dependabot[bot]
200863d79b chore(deps-dev): bump prettier from 3.7.4 to 3.8.0
Bumps [prettier](https://github.com/prettier/prettier) from 3.7.4 to 3.8.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.7.4...3.8.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-15 07:01:58 +01:00
Evžen Gasta
4eb342ae07
feat: added back/forward commands to command palette (#15609)
* feat: added back/forward commands to command pallete

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added preDestroy decorator

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added postConstruct

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed init

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-14 13:27:01 +00:00
Florent Benoit
63d26de874 refactor(context-info): use interface rather than implementation
use IContext which is the interface rather than Context which is
the implementation class

it'll help to move context-info to the api package if only interface
is used

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-14 14:07:12 +01:00
Evžen Gasta
74c2690ab3
fix(DropdDownMenuItem): unified icon size (#15681)
* fix(DropdDownMenuItem): unified icon size

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* fix(ui): dropdown menu item sizing (#6)

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix(test): fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-14 13:55:11 +01:00
Florent Benoit
5bbfc40ee2 refactor(import): use alias to import from api package
do not use ../../api relative mode to import

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-14 13:36:03 +01:00
axel7083
a5702b6c62
feat(extension-api): expose navigateToImageBuild (#15698)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-14 13:16:43 +01:00
Florent BENOIT
f62998996b
refactor(learning-center-test): remove usage of ../main (#15693)
* refactor(learning-center-test): remove usage of ../main

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-14 13:08:40 +01:00
Florent Benoit
1286548789 refactor(libpod): move more content to libpod API
avoid the import to ../../main in preload
--> from '../../main/src/plugin/dockerode/libpod-dockerode';

related to https://github.com/podman-desktop/podman-desktop/issues/14361

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-14 13:08:15 +01:00
Vladimir Lazar
8f134257c5
chore(test): toggle rootless and rootful mode changes e2e test (#15694)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-01-14 13:14:24 +02:00
Simon Rey
5e57fd5ef0 test: add updater product release note test
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-14 11:45:53 +01:00
Simon Rey
2e5e960fa1 feat(product.json/release-notes): add overrides for product release notes
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-14 11:45:53 +01:00
Florent Benoit
056522fedc refactor(learning-center): remove useless definition of mocks
mocks are already done, no need to redefine them

prior to changes on removing the import of ../../../main

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-14 10:43:54 +01:00
Václav Vančura
f21c252cae
feat(storybook): add theme switcher addon (#15616)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-14 10:34:07 +01:00
dependabot[bot]
22fb6a4857 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.0.4/packages/core)

Updates `@argos-ci/playwright` from 6.3.8 to 6.3.9
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.3.9/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.3.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 07:52:15 +01:00
dependabot[bot]
d195ca2ce7 chore(deps-dev): bump electron from 40.0.0-beta.7 to 40.0.0-beta.8
---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0-beta.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 07:40:36 +01:00
Justin Hammond
3ddb5bb027
fix: typo in krunkit error message (#15686)
* fix: typo in krunkit error message

Signed-off-by: Justintime50 <39606064+Justintime50@users.noreply.github.com>
2026-01-14 06:38:41 +00:00
Václav Vančura
dfafa49212
feat(color-builder): add fluent API for transparent color registration (#15549) 2026-01-13 18:52:18 +01:00
Florent Benoit
a797e47d17 refactor(libpod): move some definition from main to api package
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-13 18:09:25 +01:00
Dibyendu
6ecd026053 fix: even spacing for separators in Resources page
Signed-off-by: Dibyendu <dibyendusahoo03@gmail.com>
2026-01-13 17:48:47 +01:00
Florent Benoit
979f005035 refactor(telemetry-settings): move definition from main to api package
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-13 15:25:01 +01:00
Florent Benoit
be3edf01ff refactor(authentication-api): move from main to api package
move interfaces to the api package

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-13 13:17:09 +01:00
Simon Rey
290945af0d chore(renderer/extensions): remove product name and rename pre-installed extension
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-13 12:16:48 +01:00
Evžen Gasta
5db12aec4f
refactor(preferences): moved definition of entries to separate file (#15674)
refactor(preferences): moved definition of extries to sepparate file

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-13 11:46:58 +01:00
Evžen Gasta
74513e118f
refactor(ui): updated ui lib icon types to to reflect actual types (#15656)
* refactor(ui): updated ui lib icon types to to reflect actual types

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-13 09:46:15 +01:00
dependabot[bot]
49c4561e94 chore(deps): bump github/codeql-action from 4.31.9 to 4.31.10
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.9 to 4.31.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](5d4e8d1aca...cdefb33c0f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 09:45:02 +01:00
Simon Rey
fc53f7b469 chore(renderer/extensions): change built-in publisher display name
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-13 09:24:18 +01:00
dependabot[bot]
e6cbb4c2a7
chore(deps-dev): bump electron from 40.0.0-beta.6 to 40.0.0-beta.7 (#15667)
---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0-beta.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 08:55:49 +01:00
dependabot[bot]
9ebaa6c802 chore(deps-dev): bump @vitest/coverage-v8 in the vitest group
Bumps the vitest group with 1 update: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-v8` from 4.0.16 to 4.0.17
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.17/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.0.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 08:43:56 +01:00
dependabot[bot]
37f95fc7e4 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.52.0 to 8.53.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.52.0 to 8.53.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/parser)

Updates `typescript-eslint` from 8.52.0 to 8.53.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.53.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 08:19:11 +01:00
dependabot[bot]
1a499aeb36 chore(deps-dev): bump svelte from 5.46.1 to 5.46.3
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.46.1 to 5.46.3.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.46.3/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.46.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 07:53:27 +01:00
Evzen Gasta
6db8312e16 fix: fixed navigating to kubernetes
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-13 07:26:29 +01:00
Evžen Gasta
417faae9d9
refactor: updated icon types (#15657)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-13 07:25:56 +01:00
Charlie Drage
6410c9ff23
chore(docs): update settings references (#15620)
### What does this PR do?

Noticed a few incorrect things on the settings page:

* update to use preferences.appearance instead of appearance.apperance
* window.bounds is now the correct reference
* updated example so it is now correct
* reordered the settings page reference to be alphabetical

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A, see website preview :)

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15619

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

N/A

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-12 11:28:26 -05:00
axel7083
61dee22105
feat(HelpMenu): adding LinkedIn item (#15661)
chore(HelpMenu): adding LinkedIn item

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-12 14:59:52 +01:00
Charlie Drage
fe7f42b814
chore(managed-by): do not show reset icon on locked preference items (#15594)
### What does this PR do?

Do not show the "reset to default" button when a preference item is
locked, since it's... locked anyways and you are unable to change it.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15305

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "telemetry.enabled": "false"
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
	"locked": ["telemetry.enabled"]
}
~ $
```

2. Go to Preferences.

3. See that the "reset" icon / button does not appear anymore for locked
   a locked value.

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-12 08:42:23 -05:00
Vladimir Lazar
b7862dff04
chore(test): fix broken network e2e test (#15658)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-01-12 14:55:53 +02:00
Vladimir Lazar
d17ddc4a52
chore(test): add validation for clear logs functionality (#15654)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2026-01-12 13:39:03 +02:00
dependabot[bot]
c857ead27d chore(deps-dev): bump electron from 40.0.0-beta.5 to 40.0.0-beta.6
Bumps [electron](https://github.com/electron/electron) from 40.0.0-beta.5 to 40.0.0-beta.6.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.0.0-beta.5...v40.0.0-beta.6)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0-beta.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 11:04:23 +01:00
Florent Benoit
f252fefc09 refactor(tasks): use api rather than implementation
avoid importing from relative import  ../../main packages directly

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-12 10:51:27 +01:00
Václav Vančura
382dd03c36
feat(storybook): add accessibility testing addon (#15611) 2026-01-12 09:44:03 +00:00
Florent Benoit
e7874609ce refactor(recommendations): move api from main package to api package
allow proper import

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-12 09:57:47 +01:00
Václav Vančura
040f2d9e36
chore(storybook): add addon dependencies for modernization work (#15635) 2026-01-12 09:35:23 +01:00
Evžen Gasta
1c810a89f5
feat: added shortcuts to navigation history (#15605)
* feat: added shortcuts to navigation history

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* feat: added swipe left/right events for navigation

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-12 08:18:05 +01:00
dependabot[bot]
aa998249c4 chore(deps-dev): bump @sveltejs/vite-plugin-svelte from 6.2.3 to 6.2.4
Bumps [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@6.2.4/packages/vite-plugin-svelte)

---
updated-dependencies:
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 6.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 08:05:00 +01:00
dependabot[bot]
c823567015 chore(deps-dev): bump typedoc in the typedoc group
Bumps the typedoc group with 1 update: [typedoc](https://github.com/TypeStrong/TypeDoc).


Updates `typedoc` from 0.28.15 to 0.28.16
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.28.15...v0.28.16)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-version: 0.28.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typedoc
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 08:04:35 +01:00
dependabot[bot]
949f846854 chore(deps-dev): bump @eslint/compat in the eslint group
Bumps the eslint group with 1 update: [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat).


Updates `@eslint/compat` from 2.0.0 to 2.0.1
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/compat-v2.0.1/packages/compat)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 2.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 08:03:49 +01:00
Brian M
52b1360848
feat(renderer): added advanced feature tab to network create (#15186)
* fix: add advanced feature tab to network create

Assited-by: Cursor opus
Signed-off-by: Brian <bmahabir@bu.edu>

* fix: reworked driveroptions and dns

now driveroptions is derived by instead of using the effect rune.
I now use onchange to reset network driver to bridge after a provider
change. Dnsenabled and server is undefined by default only set if
podman is a provider. If both podman and docker are found and podman
is set first then the values of dnsenabled and dnsserver will stay
set if switching to docker as docker doesnt use it anyways. Its more
for code clarity. Use libpod api for podman specific dns rather than
dockerode api

Signed-off-by: Brian <bmahabir@bu.edu>

* fix: added aria labels and defensive action for subnet req

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2026-01-10 15:45:14 -05:00
Charlie Drage
048593c481
chore(preferences): add locked support to SliderItem component (#15625)
### What does this PR do?

Disables the SliderItem input when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "preferences.zoomLevel": 0
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
        "locked": ["preferences.zoomLevel"]
}
~ $
```

2. Try to move the zoom level slider

3. Unable to slide / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:25:51 -05:00
Charlie Drage
d7a5a047e1
chore(preferences): add locked support to NumberItem component (#15622)
### What does this PR do?

Disables the NumberItem input when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "editor.fontSize": 14
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
        "locked": ["editor.fontSize"]
}
~ $
```

2. Try to edit the editor font size input field

3. Unable to type / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:25:13 -05:00
Charlie Drage
365815630f
chore(preferences): add locked support to StringItem component (#15621)
### What does this PR do?

Disables the StringItem input when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "proxy.http": "http://proxy.example.com:8080"
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
        "locked": ["proxy.http"]
}
~ $
```

2. Try to edit the HTTP proxy input field

3. Unable to type / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:24:23 -05:00
Charlie Drage
3c3e804671
chore(preferences): add locked support to BooleanItem component (#15618)
### What does this PR do?

Disables the BooleanItem input when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "telemetry.enabled": "false"
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
	"locked": ["telemetry.enabled"]
}
~ $
```

2. Try to click on telemetry

3. Unable to click / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:13:31 -05:00
Charlie Drage
5275074f70
chore(preferences): add locked support to EnumItem component (#15623)
### What does this PR do?

Disables the EnumItem dropdown when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "preferences.appearance": "dark"
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
        "locked": ["preferences.appearance"]
}
~ $
```

2. Try to change the appearance dropdown selection

3. Unable to select / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:12:46 -05:00
Charlie Drage
a593a84eb2
chore(preferences): add locked support to FileItem component (#15624)
### What does this PR do?

Disables the FileItem input when `record.locked` is true,
preventing edits to preferences / settings.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/15306

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```sh
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "kubernetes.Kubeconfig": "~/.kube/config"
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
        "locked": ["kubernetes.Kubeconfig"]
}
~ $
```

2. Try to change the file path

3. Unable to browse / it's disabled

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-09 12:12:39 -05:00
Vladyslav Zhukovskyi
f2c27deff6 chore(kind): fix typo in recommended memory check message
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2026-01-09 12:57:43 +02:00
Simon Rey
16c5aed23c chore(main/help-menu): replace help menu with experimental version
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-09 11:41:11 +01:00
Vladimir Lazar
66a386f4b1
chore(test): increase timeout for cicd robustness (#15629)
* chore(test): increase timeout for cicd robustness
2026-01-09 11:50:16 +02:00
Simon Rey
fc4c3089eb feat(renderer): link experimental help menu to preference feature
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-09 10:37:45 +01:00
axel7083
1b24f8db88
chore(pnpm): remove unused kubernetes patches (#15631)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-09 10:29:29 +01:00
Simon Rey
6e206e83a6
fix(renderer): introduce Kubernetes root component to fix side effect in router (#15615)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-09 10:06:16 +01:00
Florent Benoit
9077e16a95 chore: add comment about not importing it in renderer package
Only main package should use/expose it as it may contain raw data
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-09 08:46:48 +01:00
dependabot[bot]
56b2f5049b chore(deps): bump inversify from 7.10.8 to 7.11.0
Bumps [inversify](https://github.com/inversify/monorepo) from 7.10.8 to 7.11.0.
- [Release notes](https://github.com/inversify/monorepo/releases)
- [Changelog](https://github.com/inversify/monorepo/blob/main/docs/release.md)
- [Commits](https://github.com/inversify/monorepo/compare/inversify@7.10.8...inversify@7.11.0)

---
updated-dependencies:
- dependency-name: inversify
  dependency-version: 7.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 06:59:36 +01:00
dependabot[bot]
07be5c1e08 chore(deps-dev): bump the commitlint group with 2 updates
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.3.0 to 20.3.1
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.3.1/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.3.0 to 20.3.1
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.3.1/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-09 06:59:03 +01:00
Evžen Gasta
060fdbd3b1
feat: added button history navigation (#15600)
* feat: added button history navigation

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added left padding for mac

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: added support for classes in NavigationButtons

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-08 20:22:04 +01:00
Simon Rey
592f17345a chore(renderer/App): remove TODO because implemented
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-08 16:27:51 +01:00
axel7083
ea54aa527e
refactor(ExtensionUpdate): use extension api version instead of App#getVersion (#15591)
* refactor(ExtensionUpdate): use extension api version instead of App#getVersion

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: update copyrights

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-08 16:22:08 +01:00
Marcel Bertagnini
858c35b597
feat: added docker compatibility icon for settings menu (#15592)
* feat: added docker compatibility icon for settings menu

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: wrong aria label

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: fixed indentation

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2026-01-08 13:49:40 +01:00
Florent Benoit
75f795ec9a refactor(editor-settings): move file to api package
it allows to properly import it from renderer package

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-08 13:40:34 +01:00
axel7083
1ad0436e65
refactor(TitleBar): remove absolute classes in favor of flex and grids (#15607)
* refactor(TitleBar): remove absolute classes in favor of flex and grids

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: padding on linux

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-08 11:25:05 +00:00
Florent Benoit
5662d5afbc refactor(context): move interfaces/enum to the api package
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-08 11:57:21 +01:00
Florent Benoit
5fb118e9a4 refactor(welcome-settings): move file to api
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-08 10:34:02 +01:00
Evžen Gasta
44c98056e4
feat: bumped up storybook to v10 (#15587)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-08 08:52:42 +00:00
dependabot[bot]
49463e062b chore(deps-dev): bump eslint-plugin-svelte from 3.13.1 to 3.14.0
Bumps [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) from 3.13.1 to 3.14.0.
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.14.0/packages/eslint-plugin-svelte)

---
updated-dependencies:
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 07:56:50 +01:00
dependabot[bot]
5b176922bf chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.5 to 1.6.6
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.5...v1.6.6)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 07:32:59 +01:00
dependabot[bot]
c5b65363de chore(deps-dev): bump vite from 7.3.0 to 7.3.1
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.1/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 07:31:59 +01:00
dependabot[bot]
be69728c88 chore(deps-dev): bump @sveltejs/vite-plugin-svelte from 6.2.2 to 6.2.3
Bumps [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@6.2.3/packages/vite-plugin-svelte)

---
updated-dependencies:
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 6.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 07:07:44 +01:00
Tim deBoer
eb2a74ba7b chore: telemetry strings should come from product.json
Adds telemetry messages to product.json and exposes them to the renderer package
using the same pattern as #15536. The acceptMessage is required, product.json
could omit the info link/url).

Uses the same message in both the Welcome page and telemetry preferences. This means
there is a slight visual change in what's clickable in the preferences. (From
"Read our [privacy statement]" to "[Read our privacy statement]", which matches the
Welcome page)

If there's no link or url, the link is omitted from both the preferences and
Welcome (issue #15379).

To test, remove welcome.version and telemetry.check from settings.json (being
careful not to break json formatting) so that you can see the Welcome page again.

Fixes #15350.
Fixes #15379.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-07 16:48:27 -05:00
Charlie Drage
5c4ab18192
chore(preferences input): if disabled, placeholder should be disabled font colour (#15575)
chore(preferences input): if disabled, placeholder should should be disable font

### What does this PR do?

When an input is disabled, the placeholder text now uses the disabled
text colour instead of the regular colour.

This makes it easier to distinguish that it is in fact.. a component
that cannot add any input.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

Before:

After:

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15573

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Go to Proxy page
2. Press System
3. See that the placeholder text is the same colour across all three
   (HTTPS / HTTP + input on bottom)

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-07 16:34:50 -05:00
Charlie Drage
3c1497b220
chore(proxy-page): do not gray out setting titles (#15574)
### What does this PR do?

Like our Preference page / other parts of Podman Desktop, we should not
be "disabling" the titles, only the input sections.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15571

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Go to Proxy Page
2. Press System
3. See that the titles no longer gray out

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-07 16:34:40 -05:00
Philippe Martin
597a96a64e
fix: support all characters in args of command passed to osascript (#15583)
* fix: protect args passed to asascript
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* test: fix unit test
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* feat: also support antislash and quotes in args
Signed-off-by: Philippe Martin <phmartin@redhat.com>

* fix: copyright
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2026-01-07 20:26:59 +01:00
axel7083
f060864d2d
fix(electron-builder): bundle extensions-extra in extraResources (#15568)
* fix(electron-builder): bundle extensions-extra in extraResources

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: prettier

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-07 17:26:56 +01:00
Václav Vančura
555fc9da4e
fix: use info icon for internal navigation links (#15584) 2026-01-07 17:19:44 +01:00
Simon Rey
431ebf1b4b
feat(product/help-menu): add help menu items to product definition (#15531)
* feat(product/help-menu): add help menu items to product definition

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* test: apply suggestion

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* refactor: apply @fbenoit requested change

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-07 16:13:06 +01:00
axel7083
49d5185ed4
refactor(main): make ExtensionUpdate injectable (#15586)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-07 15:37:08 +01:00
Evžen Gasta
5fc0460116
chore: migrated share feedback form to product.name (#15536)
* chore: migrated share feedback form to product.name

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: switched to derived

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed tests

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: switched to sync

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed linter

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: removed object define properties

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: simplified getting product name

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-07 14:46:23 +01:00
axel7083
fa94350fda
fix(cli-tool-registry): trigger on update and uninstall (#15520)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-07 13:53:59 +01:00
Evžen Gasta
e553279038
refactor(Loader): simplified tinro mock (#15580)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-07 12:22:09 +01:00
axel7083
41706b9ff5
feat(extension-api): add apiVersion (#15563)
* feat(extension-api): add apiVersion

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: improve validation

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* refactor: use inversify

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-07 11:58:44 +01:00
dependabot[bot]
9d86e026b4 chore(deps): bump undici from 7.18.0 to 7.18.2
Bumps [undici](https://github.com/nodejs/undici) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.18.0...v7.18.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 07:20:06 +01:00
dependabot[bot]
a8590d9315 chore(deps-dev): bump @sveltejs/vite-plugin-svelte from 6.2.1 to 6.2.2
Bumps [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@6.2.2/packages/vite-plugin-svelte)

---
updated-dependencies:
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 6.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 07:19:36 +01:00
Sonia Sandler
8b3746777e
chore: add position properties to label tooltip (#15557)
Signed-off-by: Sonia Sandler <ssandler@redhat.com>
2026-01-06 11:26:28 -05:00
Charlie Drage
c67436c976
feat(managed-config): add visual indicators for proxy locked values (#15378)
### What does this PR do?

In this PR we are adding visual indicators of when we are using locked
values for the following values:

```
  "proxy.no": "localhost",
  "proxy.http": "http://foobar.com",
  "proxy.https": "https://foobar.com",
  "proxy.enabled": 1
```

When we have these in `locked.json`:

```
{
	"locked": ["telemetry.enabled", "proxy.https", "proxy.http", "proxy.no"]
}
```

They will then show in the UI that they are managed by your
organization.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15206

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Setup your managed configuration with the following values:

```
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
{
  "proxy.no": "localhost",
  "proxy.http": "http://foobar.com",
  "proxy.https": "https://foobar.com",
  "proxy.enabled": 2
}
~ $ cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
{
	"locked": ["proxy.no", "proxy.https", "proxy.http", "proxy.enabled"]
}
~ $
```

2. Start PD

3. Go to **Preferences > Proxy**

4. See that the values are now disabled as well as the Managed
   configuration indicators showing.

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-06 11:15:23 -05:00
Anders Björklund
4e3a8e2b5e
fix: move provider version to provider (#15123)
* fix: move provider version to provider

Currently the provider version is shown as connection version,
which is misleading. That needs to come from each connection.

Better to show the provider version with the provider name,
and the connection version with the connection name (later)?

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
2026-01-06 15:43:32 +00:00
Florent Benoit
b18236595a chore: add section in coding guidelines about svelte attachments
Bring awareness of svelte attachments

fixes https://github.com/podman-desktop/podman-desktop/issues/14363
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-06 16:21:07 +01:00
Charlie Drage
28613596ed
chore(preferences): add readonly support to FloatNumberItem component (#15546)
### What does this PR do?

When record.readonly is true, the text input is now disabled,
preventing user interaction with the float number input field.

### Screenshot / video of UI

N/A, no (current) user facing change as it's more of a chore / align
with how other preferences such as BooleanItem does it with disabled /
readonly.

### What issues does this PR fix or reference?

Part of https://github.com/podman-desktop/podman-desktop/issues/14624

### How to test this PR?

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-06 09:48:08 -05:00
Charlie Drage
a6a63a826f
chore(preferences): add readonly support to EnumItem component (#15547)
### What does this PR do?

When record.readonly is true, the Dropdown is now disabled,
preventing user interaction with the dropdown selection.

### Screenshot / video of UI

N/A, no (current) user facing change as it's more of a chore / align
with how other preferences such as BooleanItem does it with disabled /
readonly.

### What issues does this PR fix or reference?

Part of https://github.com/podman-desktop/podman-desktop/issues/14624

### How to test this PR?

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-06 09:48:03 -05:00
Charlie Drage
31fc77dc8e
chore(preferences): add readonly support to SliderItem component (#15552)
### What does this PR do?

When record.readonly is true, the range slider input is now disabled,
preventing user interaction with the slider.

### Screenshot / video of UI

N/A, no (current) user facing change as it's more of a chore / align
with how other preferences such as BooleanItem does it with disabled /
readonly.

### What issues does this PR fix or reference?

Part of https://github.com/podman-desktop/podman-desktop/issues/14624

### How to test this PR?

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-06 09:47:58 -05:00
Charlie Drage
cb3d488326
chore(preferences): add readonly support to NumberItem component (#15556)
### What does this PR do?

When record.readonly is true, the NumberInput is now disabled, preventing user interaction with the input field and increment/decrement buttons.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A, no (current) user facing change as it's more of a chore / align
with how other preferences such as BooleanItem does it with disabled /
readonly.

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Part of https://github.com/podman-desktop/podman-desktop/issues/14624

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-06 09:47:37 -05:00
Florent Benoit
7bff420fc1 refactor(terminal-settings): move settings definition to API
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2026-01-06 15:35:41 +01:00
Evžen Gasta
6d088f1a9c
feat: added helper text to CommandPallete (#15565)
* chore: added helper text to navbar

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: applied suggestions

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-06 14:07:23 +01:00
axel7083
fae25f65b0
refactor(extension-loader.spec.ts): improve test isolation (#15564)
* refactor(extension-loader.spec.ts): improve test isolation

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: incorrect return type

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-06 10:57:32 +00:00
dependabot[bot]
35b17b2aaa
chore(deps-dev): bump the commitlint group with 2 updates (#15529)
Bumps the commitlint group with 2 updates: [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) and [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional).


Updates `@commitlint/cli` from 20.2.0 to 20.3.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.3.0/@commitlint/cli)

Updates `@commitlint/config-conventional` from 20.2.0 to 20.3.0
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v20.3.0/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-version: 20.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 20.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: commitlint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 10:37:34 +01:00
dependabot[bot]
a993c77eb3 chore(deps): bump undici from 7.16.0 to 7.18.0
Bumps [undici](https://github.com/nodejs/undici) from 7.16.0 to 7.18.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.16.0...v7.18.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-06 07:04:12 +01:00
dependabot[bot]
9c1a4f1b80 chore(deps-dev): bump electron from 40.0.0-beta.4 to 40.0.0-beta.5
Bumps [electron](https://github.com/electron/electron) from 40.0.0-beta.4 to 40.0.0-beta.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v40.0.0-beta.4...v40.0.0-beta.5)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 40.0.0-beta.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-06 07:03:57 +01:00
dependabot[bot]
ed937a618e chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.51.0 to 8.52.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.52.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.51.0 to 8.52.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.52.0/packages/parser)

Updates `typescript-eslint` from 8.51.0 to 8.52.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.52.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.52.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.52.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.52.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-06 06:39:28 +01:00
Tim deBoer
872f407611 fix: switch to span for string icons
I haven't tracked down the direct cause, but at some point last year the path to
display string icons changed to using the i (italic) HTML component. This is
completely fine for FontAwesome icons, but for icons loaded from other sources like
product contributions it made them italicized.

This switches to use span instead. It's three extra characters :), but it is more
technically correct and we are already using it in other places (e.g. status bar).

We still use i to display icons in 20 other places (15 files), but I've verified
that these are all FontAwesome.

Fixes #15217. (and https://github.com/podman-desktop/extension-bootc/issues/2196)

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2026-01-05 22:33:40 -05:00
axel7083
a7ec719e22
chore(vitest): update import path for product.json in __mocks__ directory (#15554)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-05 17:31:37 +00:00
axel7083
6166894bcc
chore: replace deprecated sudo-prompt with @expo/sudo-prompt (#15550)
* chore: replace deprecated sudo-prompt with @expo/sudo-prompt

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: pnpm-lock.yaml

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-05 17:40:36 +01:00
axel7083
d49f202dd7
refactor(extension/podman): make podman-install.ts uses execPodman (#15541)
* refactor(extension/podman): make podman-install.ts uses execPodman

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test: ensure mock execution order

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-01-05 16:03:24 +01:00
Charlie Drage
8f82e937c7
chore(podman-kube): Update form on kube play page (#15519)
### What does this PR do?

Noticed a few minor things!

* Should be "Create a"
* Buttons typically aren't titled (So should be `Play custom YAML`
  instead of `Play Custom YAML`)
* Updates terminology when excuting / building a bit better

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A, found when reviewing

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-05 14:24:04 +00:00
Charlie Drage
df8e191150
chore(docs): add codesign instructions for macOS (#15517)
### What does this PR do?

When testing a compiled binary on macOS, it is a special case as there
is validation against the Electron binary before launching.

If you are using `pnpm compile:current`, you should be able to run the
app after launch.

Unfortunatley this requires:

```sh
codesign --force --deep --sign - "dist/mac-arm64/Podman Desktop.app"
```

To be ran.

This adds those instructions to the documentation.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

1. Be on macOS
2. `pnpm compile:current`
3. Try to launch the binary (`dist/mac-arm64/Podman Desktop.app`)
4. Get error. Close app.
5. `codesign --force --deep --sign - "dist/mac-arm64/Podman
   Desktop.app"`
6. No more error when launching.

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2026-01-05 09:01:39 -05:00
dependabot[bot]
8d32d9c444 chore(deps): bump zod from 4.3.2 to 4.3.5
Bumps [zod](https://github.com/colinhacks/zod) from 4.3.2 to 4.3.5.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.3.2...v4.3.5)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 10:52:56 +01:00
Evžen Gasta
72792769de
refactor: refactored ListItemComponentButtonIcon component (#15425)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2026-01-05 09:58:41 +01:00
dependabot[bot]
fc8c504c9a chore(deps-dev): bump @biomejs/biome from 2.3.10 to 2.3.11
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.10 to 2.3.11.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.11/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 09:49:52 +01:00
Brian M
caf5245575
fix: add get networkdrivers to index files and replace engineid (#15431)
before the backend used engineid, like get info, but for network create
we dont have access to this and must use providercontainerconnection instead

Signed-off-by: Brian <bmahabir@bu.edu>
2026-01-05 07:43:14 +00:00
dependabot[bot]
c8da885efa chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.4 to 1.6.5
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.4...v1.6.5)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 07:18:34 +01:00
Simon Rey
6552c52c17
chore(deps): add zod dependency (#15526)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2026-01-02 10:08:25 +01:00
dependabot[bot]
0842ea99c4
chore(deps-dev): bump globals from 16.5.0 to 17.0.0 (#15530)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 10:06:49 +01:00
Simon Rey
14e8eaf2f6
feat(renderer/help-menu): get items from backend for experimental (#15524)
* feat(renderer/help-menu): get items from backend for experimental

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* test: fix

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-31 15:29:26 +01:00
dependabot[bot]
319cf7221e
chore(deps-dev): bump eslint-plugin-storybook from 10.1.10 to 10.1.11 (#15516)
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.10 to 10.1.11.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.11/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 14:50:48 +01:00
axel7083
e66d307367
refactor(renderer): move matchMedia logic setup vitest (#15461)
* chore(deps-dev): bump the xterm group with 2 updates

Bumps the xterm group with 2 updates: [@xterm/xterm](https://github.com/xtermjs/xterm.js) and [@xterm/addon-fit](https://github.com/xtermjs/xterm.js).


Updates `@xterm/xterm` from 5.5.0 to 6.0.0
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/5.5.0...6.0.0)

Updates `@xterm/addon-fit` from 0.10.0 to 0.11.0
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/0.10...0.11)

---
updated-dependencies:
- dependency-name: "@xterm/xterm"
  dependency-version: 6.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: xterm
- dependency-name: "@xterm/addon-fit"
  dependency-version: 0.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: xterm
...

Signed-off-by: dependabot[bot] <support@github.com>

* refactor(renderer): move matchMedia logic in vite.tests.setup.js

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 12:56:56 +01:00
dependabot[bot]
361a60fc9f
chore(deps-dev): bump the typescript-eslint group with 3 updates (#15515)
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.50.1 to 8.51.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.50.1 to 8.51.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/parser)

Updates `typescript-eslint` from 8.50.1 to 8.51.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.51.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.51.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.51.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 12:22:40 +01:00
Simon Rey
1503d43f8b
feat(main/help-menu): expose a method to get the items (empty for now) (#15514)
* feat(main/help-menu): expose a method to get the items (empty for now)

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* fix: apply suggestion

Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-31 12:13:47 +01:00
Simon Rey
0ebfac6420
chore(renderer): apply lint:fix for @typescript-eslint/prefer-optional-chain required for update (#15523)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-31 11:25:54 +01:00
Simon Rey
e7e18ca543
refactor(help-menu): expose interfaces in api to be used by backend (#15509)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-31 09:41:47 +00:00
dependabot[bot]
f271d7cd04 chore(deps): bump mikepenz/action-junit-report from 6.0.1 to 6.1.0
Bumps [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](e08919a3b1...a294a61c90)

---
updated-dependencies:
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-31 08:45:11 +01:00
Simon Rey
bf06a19fed
fix(renderer/help-menu): provide names of font awesome icons (#15513)
fix(renderer/help-menu): provide names of font awesome icons to make it work with JSON

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-30 17:21:59 +00:00
Evžen Gasta
bdc43d6ef5
chore: switched to Icon component instead of Fa (#15498)
* refactor: migrated LoadingIcon component to svelte5

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed linter

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: switched to Icon component instead of Fa

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2025-12-30 17:54:49 +01:00
axel7083
e3d53b8e6c
feat: make kube play cancellable (#15464)
feat(renderer/KubePlay): support cancel action

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-30 17:25:30 +01:00
Simon Rey
910db43f7f
fix(renderer): align string icon (#15518)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-30 15:57:29 +00:00
Simon Rey
7c7df76e6a
feat(ui): allow FontAwesome brands in Icon component (#15511)
* feat(ui): allow FontAwesome brands in Icon component

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* test: add UT

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-29 16:40:21 +00:00
Simon Rey
7b75a07e07
feat(renderer): create empty experimental productized help menu (#15505)
* feat(renderer): create empty experimental productized help menu

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* refactor: remove duplicated mock

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-29 11:53:10 +00:00
Simon Rey
a4d8731536
test(renderer): remove duplicated mock already in beforeEach (#15507)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-29 11:48:17 +00:00
dependabot[bot]
5d0463f10a
chore(deps-dev): bump jsdom from 27.3.0 to 27.4.0 (#15501)
Bumps [jsdom](https://github.com/jsdom/jsdom) from 27.3.0 to 27.4.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/27.3.0...27.4.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 27.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 10:34:02 +01:00
dependabot[bot]
5a588c7312
chore(deps-dev): bump msw from 2.12.4 to 2.12.7 (#15502)
Bumps [msw](https://github.com/mswjs/msw) from 2.12.4 to 2.12.7.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.4...v2.12.7)

---
updated-dependencies:
- dependency-name: msw
  dependency-version: 2.12.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 09:29:09 +01:00
Evžen Gasta
8a154fdb03
refactor: refactored LoadingIcon to svelte5 (#15424)
* refactor: migrated LoadingIcon component to svelte5

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

* chore: fixed linter

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>

---------

Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2025-12-26 20:21:58 +00:00
axel7083
4e106fb40d
fix(renderer): replace Terminal#reset by Terminal#clear (#15463)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-26 18:51:37 +01:00
Florent Benoit
1b0d4ba014 refactor(featured-api): move it from main to api package
move to api
so it can be used by preload, main and renderer

related to #14361
and #15485

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 18:09:09 +01:00
Florent Benoit
bd2f8f0c4c refactor: move api sender type from main to api package
related to #14361
    and #15485
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 18:06:20 +01:00
Florent Benoit
3ef4008a48 refactor(catalog-extension-api): move it from main to api package
so it can be used by preload, main and renderer

related to #14361
and #15485

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 17:33:14 +01:00
Simon Rey
de48e8231e
refactor(renderer): pass items for HelpActions component as a prop (#15443)
* refactor(renderer): pass items for HelpActions component as a prop

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: copyright date

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: use describe

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* refactor(renderer): restore HelpActions name

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: use describe

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* refactor: rename Generic to Items

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* fix: test was badly named

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: update copyright

Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* test: add missing items

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-26 16:30:15 +00:00
Florent Benoit
6c23267efd chore(packages/renderer): replace relative path in vi.mock calls
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 16:59:16 +01:00
Florent Benoit
219a2b59cc chore: move guide API from main to api packages so renderer/preload can use it
related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 16:35:43 +01:00
Florent BENOIT
a8dc0d2594
chore(extension/podman): use alias imports (removing parent relative imports) (#15484)
* chore: use alias imports rather than parent relative imports in podman extension

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 16:34:38 +01:00
Florent Benoit
42f20ff5c6 chore: update js-yaml to recent versions
upgrade to v3.14.2 and v4.1.1 including fixes

fixes https://github.com/advisories/GHSA-mh29-5h37-fv8m
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 16:33:57 +01:00
axel7083
f0e35e813b
feat(ipc): expose cancellableTokenId in window#playKube (#15489)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-26 15:07:53 +00:00
Florent Benoit
9e36ff33d7 chore: move main package to api package so preload can import it as well
for now it was importing main using ../

related to https://github.com/podman-desktop/podman-desktop/pull/15485
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 16:00:56 +01:00
axel7083
62eb463ff8
feat(container-registry): expose abortSignal option (#15487)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-26 15:32:14 +01:00
Florent Benoit
ecaaf4cb43 chore: remove relative import by adding explicit dependency
some imports are done outside of dependency imports

related to https://github.com/podman-desktop/podman-desktop/issues/14361
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 14:43:44 +01:00
Florent Benoit
71b2bb92f2 chore: replace relative imports by alias imports
note: there are still a lot of imports to packages/main that should
be fixed separately

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 14:39:27 +01:00
Florent Benoit
cdb10895d4 chore: update to storybook v9.1.17
fixes security issue at build time
https://github.com/advisories/GHSA-8452-54wp-rmv6
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 13:19:38 +01:00
Florent Benoit
8d53bd3b7d chore: update tmp to v0.2.5
fix security issue
https://github.com/advisories/GHSA-52f5-9888-hmc6
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 13:17:59 +01:00
axel7083
453172f2ce
feat(main/libpod): make playKube cancellable (#15465)
* feat(libpod): make playKube cancellable

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test: simplify logic

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-26 11:13:52 +01:00
Florent Benoit
5e1f57a60f chore: upgrade glob from v10.4.5 to v10.5.0
fixes https://github.com/advisories/GHSA-5j98-mcp5-4vw2
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 11:06:27 +01:00
Florent Benoit
1237e7c570 chore: update node-forge to v1.3.3
fixes security issues

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-26 10:37:38 +01:00
dependabot[bot]
d8b8f5622c chore(deps): bump dawidd6/action-download-artifact from 11 to 12
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 11 to 12.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](ac66b43f0e...0bd50d53a6)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '12'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-26 07:22:36 +01:00
dependabot[bot]
176a212416 chore(deps-dev): bump @testing-library/svelte from 5.3.0 to 5.3.1
Bumps [@testing-library/svelte](https://github.com/testing-library/svelte-testing-library/tree/HEAD/packages/svelte) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/testing-library/svelte-testing-library/releases)
- [Changelog](https://github.com/testing-library/svelte-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/svelte-testing-library/commits/@testing-library/svelte@5.3.1/packages/svelte)

---
updated-dependencies:
- dependency-name: "@testing-library/svelte"
  dependency-version: 5.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-26 07:03:10 +01:00
dependabot[bot]
114e9b33ea chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.3 to 1.6.4
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.3...v1.6.4)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-25 22:28:42 +01:00
dependabot[bot]
abe0e3b773 chore(deps-dev): bump svelte from 5.46.0 to 5.46.1
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.46.0 to 5.46.1.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.46.1/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.46.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-25 22:04:06 +01:00
axel7083
4a4a6a2f10
fix(extension-loader): avoid cascade failure when an extension cannot be loaded (#15404)
* fix(extension-loader): avoid cascade failure when an extension cannot be loaded

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: path resolution

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: use join instead of concat string

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* refactor(tests): use proper type for fs.promises.readdir return type

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: console.error reject promise from analyzeExtension

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-24 14:21:57 +01:00
axel7083
ec934d0de4
feat(main): create a task for podman kube play action (#15459)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-24 10:19:52 +01:00
Florent Benoit
482411d6de chore: abort build if Node.js engine is incorrect
Ensure the Node.js version available is matching the requirement of the build

I noticed that during the test of the PR

related to https://github.com/podman-desktop/podman-desktop/pull/15119
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-24 09:45:43 +01:00
Florent BENOIT
b0aa664265
fix: handle sha in extension image links (#15437)
* fix: handle sha in extension image links

using sha link is not working in "install custom extension..."

fixes https://github.com/podman-desktop/podman-desktop/issues/15434
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-24 09:45:25 +01:00
Florent BENOIT
a3cea8665d
chore: add guidelines for async usage in svelte 5 (#15458)
fixes https://github.com/podman-desktop/podman-desktop/issues/14362

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-23 10:05:18 -05:00
Vladimir Lazar
90684db54a
chore(test): fixing some flakyness issues (#15452)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2025-12-23 13:26:12 +02:00
dependabot[bot]
ece8eb4d61
chore(deps-dev): bump @vitest/eslint-plugin from 1.6.1 to 1.6.3 in the vitest group (#15453)
chore(deps-dev): bump @vitest/eslint-plugin in the vitest group

Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.6.1 to 1.6.3
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.1...v1.6.3)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.6.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 10:26:10 +00:00
dependabot[bot]
70282f6897 chore(deps-dev): bump @testing-library/svelte from 5.2.10 to 5.3.0
Bumps [@testing-library/svelte](https://github.com/testing-library/svelte-testing-library/tree/HEAD/packages/svelte) from 5.2.10 to 5.3.0.
- [Release notes](https://github.com/testing-library/svelte-testing-library/releases)
- [Changelog](https://github.com/testing-library/svelte-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/svelte-testing-library/commits/@testing-library/svelte@5.3.0/packages/svelte)

---
updated-dependencies:
- dependency-name: "@testing-library/svelte"
  dependency-version: 5.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 11:01:53 +01:00
dependabot[bot]
2c4ca8db39 chore(deps): bump js-yaml from 3.14.1 to 4.1.1
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 11:01:38 +01:00
Evžen Gasta
2b83c13578
feat: bumped up to node 24 and electron 40 (#15119)
Signed-off-by: Evzen Gasta <evzen.ml@seznam.cz>
2025-12-23 09:32:13 +00:00
axel7083
0d6bff1677
chore(dependabot): group @xterm updates (#15451)
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-23 09:28:31 +00:00
dependabot[bot]
56679e5bf5
chore(deps-dev): bump @xterm/addon-search from 0.15.0 to 0.16.0 (#15448)
Bumps [@xterm/addon-search](https://github.com/xtermjs/xterm.js) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/0.15...0.16)

---
updated-dependencies:
- dependency-name: "@xterm/addon-search"
  dependency-version: 0.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 10:22:10 +01:00
dependabot[bot]
0c5a0f2860
chore(deps-dev): bump @xterm/addon-serialize from 0.13.0 to 0.14.0 (#15449)
Bumps [@xterm/addon-serialize](https://github.com/xtermjs/xterm.js) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/0.13...0.14)

---
updated-dependencies:
- dependency-name: "@xterm/addon-serialize"
  dependency-version: 0.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 10:17:05 +01:00
dependabot[bot]
a6c2103fdb chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.50.0 to 8.50.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.50.0 to 8.50.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.1/packages/parser)

Updates `typescript-eslint` from 8.50.0 to 8.50.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.50.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.50.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.50.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 08:57:35 +01:00
dependabot[bot]
bfc6270143 chore(deps): bump smol-toml from 1.5.2 to 1.6.0
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.5.2...v1.6.0)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 08:31:58 +01:00
Rujuta Shinde
4522b36001
chore(website): added a blog to cover podman-desktop 2025 journey (#15185)
Signed-off-by: Rujuta Shinde <rushinde@redhat.com>
2025-12-23 01:18:54 -05:00
Simon Rey
e29eccb859
chore(main/statusbar): use single tick without interpolation (#15438)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-22 17:57:08 +01:00
Vladyslav Zhukovskyi
3e849d6fef
refactor(svelte): extract provider action buttons to dedicate component (#15433)
* refactor(svelte): extract provider action buttons to dedicate component

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* refactor(svelte): extract provider action buttons to dedicate component

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* refactor(svelte): extract provider action buttons to dedicate component

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* refactor(svelte): extract provider action buttons to dedicate component

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

* refactor(svelte): extract provider action buttons to dedicate component

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>

---------

Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2025-12-22 18:19:53 +02:00
Charlie Drage
81da2967f6
chore(proxy): improve proxy settings page form layout and spacing (#15391)
### What does this PR do?

While implementing
https://github.com/podman-desktop/podman-desktop/issues/15206 I noticed
numerous issues with the form vs the other parts of PD.

I looked at our other form pages (create container, build container) as
well as Preferences and applied some UI changes which follow our design
pattern and makes
https://github.com/podman-desktop/podman-desktop/issues/15206 easier to
implement.

These are UI/UX changes only and should NOT affect any form submissions,
etc.

- Make dropdown span full width instead of being constrained (it was
  oddly small)
- Use consistent spacing between form groups (space-y-4). Before it was
  wayyyyy to close together.
- Align label styling with other preferences pages (block + font-semibold)
- Fix incorrect "for" attribute on noProxy label (was applied in
  https://github.com/podman-desktop/podman-desktop/pull/15378 but may
  as well do it here..)
- Remove trailing colons from labels for consistency (we don't use this
  anywhere else...)

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Closes https://github.com/podman-desktop/podman-desktop/issues/15390

Part of https://github.com/podman-desktop/podman-desktop/issues/15206

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

Only visual changes, go to Proxy Settings page and see the difference
(or the above screenshots!)

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2025-12-22 11:00:57 -05:00
Simon Rey
9a50ab0338
feat(main/help-menu): new experimental option for working on help menu (#15414)
* feat(main/help-menu): new experimental option for working on help menu

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: update copyright

Co-authored-by: Philippe Martin <feloy1@gmail.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: update copyright

Co-authored-by: Philippe Martin <feloy1@gmail.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: update ticks

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: update ticks

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: remove unused

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Co-authored-by: Philippe Martin <feloy1@gmail.com>
2025-12-22 15:26:02 +00:00
Simon Rey
b13f1fecad
chore(renderer/HelpMenu): update component to Svelte 5 (#15418)
chore(renderer/HelpMenu): update component to svelte 5

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-22 10:32:52 +01:00
Simon Rey
06ea545b82
chore(renderer/HelpActions): update component to svelte 5 (#15420)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-22 10:32:07 +01:00
dependabot[bot]
9ea4aa0833 chore(deps-dev): bump @vitest/eslint-plugin in the vitest group
Bumps the vitest group with 1 update: [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest).


Updates `@vitest/eslint-plugin` from 1.5.2 to 1.5.4
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases)
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.5.2...v1.5.4)

---
updated-dependencies:
- dependency-name: "@vitest/eslint-plugin"
  dependency-version: 1.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 09:05:10 +01:00
Brian M
8b7dd09e97
chore: retrieve networkdriver info dynamically (#15364)
Assisted-by: Cursor opus

Signed-off-by: Brian <bmahabir@bu.edu>
2025-12-22 01:52:13 -05:00
dependabot[bot]
27f97f632e chore(deps-dev): bump svelte-check from 4.3.4 to 4.3.5
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.3.4 to 4.3.5.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.3.4...svelte-check@4.3.5)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 07:18:10 +01:00
dependabot[bot]
dc04b4b2e2 chore(deps-dev): bump @testing-library/svelte from 5.2.9 to 5.2.10
Bumps [@testing-library/svelte](https://github.com/testing-library/svelte-testing-library) from 5.2.9 to 5.2.10.
- [Release notes](https://github.com/testing-library/svelte-testing-library/releases)
- [Changelog](https://github.com/testing-library/svelte-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/svelte-testing-library/compare/@testing-library/svelte@5.2.9...@testing-library/svelte@5.2.10)

---
updated-dependencies:
- dependency-name: "@testing-library/svelte"
  dependency-version: 5.2.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 07:17:42 +01:00
Marcel Bertagnini
1cae7cf132
feat: settings menu icons (#15329)
* feat: added icons to menu settings

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: deleted unnecessary if in template

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: wrong eol in experimental icon

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: wrong alignment in menu settings items

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

* fix: settings-bar test looking for wrong label

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>

---------

Signed-off-by: Marcel Bertagnini <mbertagn@redhat.com>
2025-12-19 14:31:59 +01:00
Roshan A
d5c9f4f4c8 fix: fix visiblity of help menu
Signed-off-by: Roshan A <roshan4nand@gmail.com>
Signed-off-by: Roshan A <roshananand2005@gmail.com>
2025-12-19 12:36:41 +01:00
ROSHAN A
9361f9c572
fix: fix bottom spacing in preferences page (#15401)
Signed-off-by: Roshan A <roshan4nand@gmail.com>
Signed-off-by: Roshan A <roshananand2005@gmail.com>
2025-12-19 11:18:12 +01:00
dependabot[bot]
6681fd1a14 chore(deps-dev): bump eslint-plugin-storybook from 10.1.9 to 10.1.10
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.9 to 10.1.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.10/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 07:29:25 +01:00
dependabot[bot]
01b83215f2 chore(deps): bump inversify from 7.10.6 to 7.10.8
Bumps [inversify](https://github.com/inversify/monorepo) from 7.10.6 to 7.10.8.
- [Release notes](https://github.com/inversify/monorepo/releases)
- [Changelog](https://github.com/inversify/monorepo/blob/main/docs/release.md)
- [Commits](https://github.com/inversify/monorepo/compare/inversify@7.10.6...inversify@7.10.8)

---
updated-dependencies:
- dependency-name: inversify
  dependency-version: 7.10.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 07:28:31 +01:00
dependabot[bot]
a6c4b0732f chore(deps): bump validator from 13.15.23 to 13.15.26
Bumps [validator](https://github.com/validatorjs/validator.js) from 13.15.23 to 13.15.26.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.15.23...13.15.26)

---
updated-dependencies:
- dependency-name: validator
  dependency-version: 13.15.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 07:28:15 +01:00
dependabot[bot]
81bad02a30 chore(deps-dev): bump @biomejs/biome from 2.3.9 to 2.3.10
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.9 to 2.3.10.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.10/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 06:56:48 +01:00
Tim deBoer
14be6f0abf chore: align telemetry text
I noticed the telemetry text on the Welcome page and preferences have diverged slightly.
They should be the same, especially if we may allow it to be customized in the future
(should be one string).

I could have copy/pasted in either direction, but instead I used the best parts of both,
and confirmed with others that this is the most natural and readable version.

Related to #15379.

Signed-off-by: Tim deBoer <git@tdeboer.ca>
2025-12-18 11:00:52 -05:00
ROSHAN A
3c3a9d9afa
docs: fix broken argo ci link in README (#15383)
Signed-off-by: Roshan A <roshan4nand@gmail.com>
Signed-off-by: Roshan A <roshananand2005@gmail.com>
2025-12-18 15:08:47 +00:00
Simon Rey
66e70bc090
chore(guidelines): suggest usage of vitest snapshots (#15375)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-17 16:03:01 +00:00
Simon Rey
b586ae9e67
fix(website): make release notes shorter to fit in podman desktop (#15372)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-17 09:22:34 +00:00
dependabot[bot]
76c2fe728d chore(deps-dev): bump @vitest/coverage-v8 in the vitest group
Bumps the vitest group with 1 update: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-v8` from 4.0.15 to 4.0.16
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.16/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.0.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: vitest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 08:10:55 +01:00
dependabot[bot]
0fb72ee9dd
chore(deps): bump github/codeql-action from 4.31.8 to 4.31.9 (#15370)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.8 to 4.31.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](1b168cd394...5d4e8d1aca)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-17 07:18:03 +01:00
Matt Demyttenaere
d3262b0dc6
chore: fix release notes spacing on dashboard (#15369) 2025-12-16 19:23:57 +00:00
axel7083
04ba72650c
feat(download-extension-remote): stronger validation of product.json (#15274)
* feat(download-extension-remote): stronger validation of product.json

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* fix: typecheck

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-16 19:09:26 +01:00
Simon Rey
e20e593518
fix(website): update release notes with PM comments (#15365)
* fix(website): update release notes with PM comments

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* fix(website): grammar

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-16 17:46:58 +01:00
Dibyendu Sahoo
ddcbf56463
fix: sort Environment column by engineId instead of engineName (#15336)
* fix: sort Environment column by engineId instead of engineName
Signed-off-by: Dibyendu <dibyendusahoo03@gmail.com>

* test: cover environment column comparator in list components
Signed-off-by: Dibyendu <dibyendusahoo03@gmail.com>

* test: verify environment column sorts by engineId in list components
Signed-off-by: Dibyendu <dibyendusahoo03@gmail.com>

* test: waitFor implementation at ImagesList.spec.ts and PodList.spec.ts
Signed-off-by: Dibyendu <dibyendusahoo03@gmail.com>
2025-12-16 17:14:28 +01:00
dependabot[bot]
c2895dd7d5 chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.49.0 to 8.50.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.49.0 to 8.50.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.0/packages/parser)

Updates `typescript-eslint` from 8.49.0 to 8.50.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.50.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.50.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.50.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:44:55 +01:00
dependabot[bot]
fd9acd2a8b chore(deps-dev): bump eslint-plugin-storybook from 10.1.8 to 10.1.9
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.8 to 10.1.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.9/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:42:35 +01:00
dependabot[bot]
cef4d4ce84 chore(deps-dev): bump @biomejs/biome from 2.3.8 to 2.3.9
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) from 2.3.8 to 2.3.9.
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.9/packages/@biomejs/biome)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:16:29 +01:00
dependabot[bot]
b8a1d5106f chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 4.0.2 to 4.0.3
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.0.3/packages/core)

Updates `@argos-ci/playwright` from 6.3.7 to 6.3.8
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.3.8/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.3.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:16:08 +01:00
dependabot[bot]
b94b4c40c0 chore(deps-dev): bump vite from 7.2.7 to 7.3.0
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.2.7 to 7.3.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 07:15:26 +01:00
Florent Benoit
74f5115784 fix(download-remote-extension): exit code 1 in case of error
allow to have callers exiting the process

fixes https://github.com/podman-desktop/podman-desktop/issues/15273
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-15 19:24:13 +01:00
Florent Benoit
6e1ca63c4b chore: bump default buffer size of calling script in electron-builder
it seems default may be too small (maybe 200kB or 1MB)
bump it to 10MB to be safe on most logs

fixes https://github.com/podman-desktop/podman-desktop/issues/15352
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-15 18:30:05 +01:00
Simon Rey
b5f6b4a27e
chore: fix release image 1.23 (#15347)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-15 10:33:31 +01:00
Florent Benoit
42bac8660e chore: update links for linux x64 archive
with #15333 artifact for linux x64 may end with -x64.tar.gz

handle the case on the website
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-15 10:30:21 +01:00
Florent Benoit
c67f47c1c6 chore: define artifact name using product.name
default was to take package.json name
also suffix by arch.

it'll require updates on the website for 1.25.0+

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-15 10:28:11 +01:00
simonrey1
fa3fa4d2a3 chore: Update chocolatey packages for 1.24.2
Signed-off-by: simonrey1 <fbenoit@redhat.com>
2025-12-15 10:04:38 +01:00
Simon Rey
95280233bd
chore(release): release notes for 1.24 (#15223)
* chore(release): release notes 1.24

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore(release): clarify environment

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: remove duplicate

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: fix alt text

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore(website): apply suggestions

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore(website): add a hightlight for default registries

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: add intro

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: case

Co-authored-by: Matt Demyttenaere <matdemy@gmail.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: case

Co-authored-by: Matt Demyttenaere <matdemy@gmail.com>
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: case

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: add release banner

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore: trigger Build
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

* chore(website): apply @cdrage suggestion

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>

---------

Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
Co-authored-by: Matt Demyttenaere <matdemy@gmail.com>
2025-12-15 09:16:21 +01:00
dependabot[bot]
9cbb4fbedb chore(deps): bump github/codeql-action from 4.31.7 to 4.31.8
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.7 to 4.31.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](cf1bb45a27...1b168cd394)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 08:54:17 +01:00
dependabot[bot]
dd82e99c56 chore(deps): bump the eslint group with 2 updates
Bumps the eslint group with 2 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) and [eslint](https://github.com/eslint/eslint).


Updates `@eslint/js` from 9.39.1 to 9.39.2
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.39.2/packages/js)

Updates `eslint` from 9.39.1 to 9.39.2
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.1...v9.39.2)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint
  dependency-version: 9.39.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 08:09:02 +01:00
dependabot[bot]
a151c6ee4e chore(deps-dev): bump autoprefixer from 10.4.22 to 10.4.23
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.22 to 10.4.23.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.22...10.4.23)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-version: 10.4.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:42:17 +01:00
dependabot[bot]
cab3d966a5 chore(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:41:49 +01:00
dependabot[bot]
47e739fee6 chore(deps-dev): bump eslint-plugin-storybook from 10.1.7 to 10.1.8
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.7 to 10.1.8.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.8/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:24:55 +01:00
dependabot[bot]
8e651d5829 chore(deps-dev): bump svelte from 5.45.10 to 5.46.0
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.45.10 to 5.46.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.46.0/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.46.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:22:10 +01:00
dependabot[bot]
97f9de9387 chore(deps-dev): bump @types/node from 22.19.2 to 22.19.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.19.2 to 22.19.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.19.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:21:34 +01:00
dependabot[bot]
0f51ad2e20 chore(deps-dev): bump the argosci group with 2 updates
Bumps the argosci group with 2 updates: [@argos-ci/cli](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/core) and [@argos-ci/playwright](https://github.com/argos-ci/argos-javascript/tree/HEAD/packages/playwright).


Updates `@argos-ci/cli` from 3.2.1 to 4.0.2
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/core/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/cli@4.0.2/packages/core)

Updates `@argos-ci/playwright` from 6.3.4 to 6.3.7
- [Release notes](https://github.com/argos-ci/argos-javascript/releases)
- [Changelog](https://github.com/argos-ci/argos-javascript/blob/main/packages/playwright/CHANGELOG.md)
- [Commits](https://github.com/argos-ci/argos-javascript/commits/@argos-ci/playwright@6.3.7/packages/playwright)

---
updated-dependencies:
- dependency-name: "@argos-ci/cli"
  dependency-version: 4.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: argosci
- dependency-name: "@argos-ci/playwright"
  dependency-version: 6.3.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: argosci
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 07:00:33 +01:00
dependabot[bot]
e7210e6be8 chore(deps-dev): bump electron from 39.2.6 to 39.2.7
Bumps [electron](https://github.com/electron/electron) from 39.2.6 to 39.2.7.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v39.2.6...v39.2.7)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 39.2.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 06:56:56 +01:00
Brian M
76e8142748
fix: rework updateimage error handling (#15294)
* fix: rework updateimage error handling

Image already latest version was an error it should be
a success

Signed-off-by: Brian <bmahabir@bu.edu>

* fix: reworked update image catch error to be type safe

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2025-12-14 15:47:50 -05:00
Simon Rey
43cbe289e3
chore(BuildImage): telemetry when user runs build of image on an intermediate (not final) target (#15327)
Signed-off-by: Simon Rey <51708585+simonrey1@users.noreply.github.com>
2025-12-12 15:59:55 +00:00
Philippe Martin
dd9b4f261a fix: use unplugin-dts
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2025-12-12 13:22:40 +01:00
Florent Benoit
9b149ef85a chore: define executable name
by default electron-builder is using the package.json name and not config.appName
but only on Linux (not macOS or Windows...)

so at the end if we change some values in product.json it's not the one being applied
leading to an error while we try to call an unexisting file

fixes https://github.com/podman-desktop/podman-desktop/issues/15326

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-12 11:24:33 +01:00
Philippe Martin
0669b1c43e
feat: set kubernetes experimental mode by default (#15141)
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2025-12-12 10:56:46 +01:00
dependabot[bot]
62934bdd43
chore(deps-dev): bump svelte from 5.45.8 to 5.45.9 (#15324)
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.45.8 to 5.45.9.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.45.9/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.45.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 10:09:45 +01:00
dependabot[bot]
3c83d1c289 chore(deps-dev): bump the tailwindcss group with 3 updates
Bumps the tailwindcss group with 3 updates: [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite), [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) and [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss).


Updates `@tailwindcss/vite` from 4.1.17 to 4.1.18
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/@tailwindcss-vite)

Updates `tailwindcss` from 4.1.17 to 4.1.18
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/tailwindcss)

Updates `@tailwindcss/postcss` from 4.1.17 to 4.1.18
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/@tailwindcss-postcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.1.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: tailwindcss
  dependency-version: 4.1.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.1.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwindcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 07:19:13 +01:00
dependabot[bot]
d8d27db3aa
chore(deps-dev): bump eslint-plugin-storybook from 10.1.6 to 10.1.7 (#15323)
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.6 to 10.1.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.7/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 07:18:59 +01:00
Vladimir Lazar
916e31e485
chore(test): change POM structure to reflect latest changes (#15320)
Signed-off-by: Vladimir Lazar <vlazar@redhat.com>
2025-12-11 13:42:28 +02:00
Vladyslav Zhukovskyi
8308acec3e
chore(vite): exclude @podman-desktop/api from dependency optimization (#15312)
Signed-off-by: Vladyslav Zhukovskyi <vzhukovs@redhat.com>
2025-12-11 10:30:05 +02:00
dependabot[bot]
7e669c674b chore(deps-dev): bump eslint-plugin-storybook from 10.1.5 to 10.1.6
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.5 to 10.1.6.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.6/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-11 07:17:46 +01:00
github-actions[bot]
983e3e98e0
chore: Bump Podman version to 5.7.1 (#15316)
chore: Update Podman version to v5.7.1

Signed-off-by: rujutashinde <rujutashinde@users.noreply.github.com>
Co-authored-by: rujutashinde <rujutashinde@users.noreply.github.com>
2025-12-10 18:05:40 +00:00
Charlie Drage
b23a1945e1
docs(settings): settings reference fix dir location linux (#15307)
### What does this PR do?

It is: `~/.local/share/containers/podman-desktop/configuration/settings.json` on Linux / same as macOS.

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A, caught this while clicking the tabs between the two!

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

N/A, minor doc change

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2025-12-10 15:18:09 +00:00
ScrewTSW
673fc676ae
chore(test): implement smoke test for managed configuration (#15177)
* chore(test): pre-defining resource files for managed configuration tests

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): adding basic smoke test for settings.json preferences

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(tests): updated PR based on review

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): switching to better locators

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

* chore(test): coderabbit - expose Appearance label from preferences-page

Signed-off-by: Tibor Dancs <tdancs@redhat.com>

---------

Signed-off-by: Tibor Dancs <tdancs@redhat.com>
2025-12-10 08:52:34 +00:00
dependabot[bot]
195c9a1299 chore(deps-dev): bump eslint-plugin-storybook from 10.1.4 to 10.1.5
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 10.1.4 to 10.1.5.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.1.5/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 10.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 07:36:38 +01:00
dependabot[bot]
74eaecfe42 chore(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](5a1091511a...671740ac38)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 07:36:10 +01:00
Philippe Martin
e4f47bf7be
feat: add kubernetesExperimentalMode in telemetry (#15295)
Signed-off-by: Philippe Martin <phmartin@redhat.com>
2025-12-09 09:58:14 +01:00
dependabot[bot]
57b2360c2a
chore(deps-dev): bump @types/node from 22.19.1 to 22.19.2 (#15290)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-09 08:27:17 +01:00
dependabot[bot]
76c08e451f chore(deps-dev): bump the typescript-eslint group with 3 updates
Bumps the typescript-eslint group with 3 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.48.1 to 8.49.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.49.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.48.1 to 8.49.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.49.0/packages/parser)

Updates `typescript-eslint` from 8.48.1 to 8.49.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.49.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.49.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.49.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
- dependency-name: typescript-eslint
  dependency-version: 8.49.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript-eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 07:24:52 +01:00
dependabot[bot]
3a67781a33 chore(deps-dev): bump svelte from 5.45.6 to 5.45.8
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.45.6 to 5.45.8.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.45.8/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.45.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 07:24:03 +01:00
dependabot[bot]
e8257be780 chore(deps-dev): bump jsdom from 27.2.0 to 27.3.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 27.2.0 to 27.3.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/27.2.0...27.3.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 27.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 06:58:23 +01:00
Brian M
b6ca5cc5dd
fix: network create now routes to network summary (#15209)
* fix: network create now routes to network summary

Assited-by: cursor opus
Signed-off-by: Brian <bmahabir@bu.edu>

* chore: fixed nav import and network store func

we dont need to check for name since podman
and docker could have the same name instead
we can check just for engineid and networkid

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2025-12-08 23:54:06 -05:00
Brian M
a4ed8792a0
feat: add update image build to backend (#14905)
* feat: add update image build to backend

this is part of a larger issue to update the image to the latest build
This pr adds the backend components needed to update the image to the latest build

Signed-off-by: Brian <bmahabir@bu.edu>

* fix: updated tests and addressed some bugs

Assisted-by: Cursor claude sonnet 4.5
Signed-off-by: Brian <bmahabir@bu.edu>

* fix: added explicit tag parameter to updateimage

imageid can have references to multiple tags. If a user clicks
on the image for the backend it should have the id and the tag
for the appropriate update. Also removed localhost string lookup
in favor of checking if an image is associated with a remote
registry

Signed-off-by: Brian <bmahabir@bu.edu>

* fix: updated repo tag tests

Assited-by: Cursor opus
Signed-off-by: Brian <bmahabir@bu.edu>

* chore: update mock console for image update

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2025-12-08 22:30:13 -05:00
Brian M
3987c064cb
feat(api): add engineid to networkcreateresult (#15233)
* feat(api): add engineid to networkcreateresult

this is needed to identify what engine created the network
in order to route to the network summary page

Signed-off-by: Brian <bmahabir@bu.edu>

* chore: add/fixed tests to support networkcreateresult id

Signed-off-by: Brian <bmahabir@bu.edu>

---------

Signed-off-by: Brian <bmahabir@bu.edu>
2025-12-08 22:28:41 -05:00
Charlie Drage
4091704044
fix(managed-by): fix macOS paths (#15277)
### What does this PR do?

Uses `/Library/Application
Support/io.podman_desktop.PodmanDesktop/default-settings.json` and
`/Library/Application
Support/io.podman_desktop.PodmanDesktop/default-settings.json`

Instead of:
`/Library/Application Support/Podman Desktop/default-settings.json`
and
`/Library/Application Support/Podman Desktop/locked.json`

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

Fixes https://github.com/podman-desktop/podman-desktop/issues/15276

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

- [X] Tests are covering the bug fix or the new feature

1. Boot PD on **macOS**
2. Confirm that the files are being loaded / checked in the correct
   location:

```sh
main ↪️ [Managed-by]: Loaded managed defaults from: /Library/Application Support/io.podman_desktop.PodmanDesktop/default-settings.json
main ↪️ [Managed-by]: Loaded managed locked from: /Library/Application Support/io.podman_desktop.PodmanDesktop/locked.json
```

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2025-12-08 22:26:23 +00:00
Florent Benoit
9e9138fb93 fix: use custom token to trigger GH actions
by default, default token is not triggering GitHub actions

it means then, than pushing a tag is not starting the job
to publish npmjs packages

fixes https://github.com/podman-desktop/podman-desktop/issues/15279
Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2025-12-08 23:21:07 +01:00
Charlie Drage
c17225d373
docs(managed-by): fix title of json for linux (#15278)
### What does this PR do?

The titles were slightly incorrect (should be
`/usr/share/podman-desktop` not `/usr/share/containers/podman-desktop`

### Screenshot / video of UI

<!-- If this PR is changing UI, please include
screenshots or screencasts showing the difference -->

N/A

### What issues does this PR fix or reference?

<!-- Include any related issues from Podman Desktop
repository (or from another issue tracker). -->

N/A

### How to test this PR?

<!-- Please explain steps to verify the functionality,
do not forget to provide unit/component tests -->

N/A

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
2025-12-08 17:00:06 -05:00
Matt Demyttenaere
4947ece68b
docs: fix path and typo in managed config docs (#15282) 2025-12-08 19:53:36 +00:00
Ondrej Dockal
86bae5a499
chore(ci): update mac images to newer ones for tests (#15269)
Signed-off-by: Ondrej Dockal <odockal@redhat.com>
2025-12-08 19:31:01 +01:00
axel7083
e29a14dc0d
feat(download-extension-remote): auth support through --registry-user & --registry-secret (#15270)
* feat(download-extension-remote): auth support through --registry-user & --registry-secret

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* test(download-extension-remote): cover registry registration

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

* feat(download-extension-remote): support env for auth

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>

---------

Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2025-12-08 17:45:16 +01:00
simonrey1
7785bbbeb6 chore: bump version to 1.25.0
Signed-off-by: simonrey1 <fbenoit@redhat.com>
2025-12-08 16:19:02 +01:00
1619 changed files with 52046 additions and 19070 deletions

View file

@ -0,0 +1,233 @@
---
name: investigate-gh-run
description: Deep investigation of CI/CD test failures - identifies root causes by analyzing logs, artifacts, git history, and source code
---
Investigate CI test failures for the given GitHub Actions run. The user will provide a run URL or run ID as: $ARGUMENTS
## Protocol
This is an adaptive-depth investigation. You gather all surface-level data in one parallel batch, classify the failure, then go only as deep as needed. An infra failure resolves in one round. A clear build error in two. A subtle UI regression gets the full trace analysis pipeline.
Wall-clock time is the enemy. Launch independent work in parallel. Never wait for one API call to decide whether to start another.
---
### Step 1: Gather Everything (one parallel batch)
Extract the run ID from the URL (`https://github.com/{owner}/{repo}/actions/runs/{run-id}`), then launch ALL of these in a single message:
```
# a) Run overview
gh run view {run-id} --repo {owner}/{repo}
# b) Failed job IDs
gh api repos/{owner}/{repo}/actions/runs/{run-id}/jobs --paginate \
--jq '.jobs[] | select(.conclusion == "failure") | "\(.id) \(.name)"'
# c) Failed logs -> temp file (10-100x smaller than full logs)
gh run view {run-id} --repo {owner}/{repo} --log-failed \
> /tmp/ci-logs-{run-id}.txt 2>&1
# d) Artifacts
gh api repos/{owner}/{repo}/actions/runs/{run-id}/artifacts \
--jq '.artifacts[] | "\(.id) \(.name) \(.size_in_bytes)"'
# e) Workflow run history (workflow name unknown, so chain via ID)
WF_ID=$(gh api repos/{owner}/{repo}/actions/runs/{run-id} --jq '.workflow_id') && \
gh api "repos/{owner}/{repo}/actions/workflows/$WF_ID/runs?per_page=10" \
--jq '.workflow_runs[] | "\(.id) \(.conclusion // "running") \(.created_at | split("T")[0])"'
```
Combine the branch-name fetch with the log save to reduce tool calls:
```
# f) Branch name
gh api repos/{owner}/{repo}/actions/runs/{run-id} --jq '.head_branch'
```
**Identify failing tests from the overview first.** The `gh run view` output (call a) already contains `🧪` annotations and `X` markers with test names. Read these before touching any log files — they tell you WHAT failed without any grepping.
Then grep the saved log file for error DETAILS (locator, expected, received):
```
echo "=== SUMMARY ===" && \
grep -E "failed$|🧪|passed \(" /tmp/ci-logs-{run-id}.txt | grep -v "STDERR\|npm warn" | head -15 && \
echo "=== FAILURES ===" && \
grep -B 1 -A 5 "Error:.*expect\|Error:.*Manifest\|Error:.*timeout\|Error encountered\|intercepts pointer\|no such file\|copier subprocess\|layer not known\|unable to copy" /tmp/ci-logs-{run-id}.txt | grep -v "STDERR\|echo\|npm\|curl\|jq\|matcherResult\|endWallTime\|Symbol\|stepId\|boxedStack\|stack:" | head -50
```
**`--log-failed` blind spot:** Many CI setups (podman-desktop/e2e, extension repos) mark the test step as ✓ (passed) even when Playwright reports failures — the exit code is 0 or `continue-on-error: true`. Only the "Publish Test Report" step fails (X). In this case, `--log-failed` captures the Publish step output which may NOT contain Playwright error details. The grep will return empty.
**When the grep returns empty but the overview shows test failures**, fall back immediately — don't retry different grep patterns:
1. **Download the individual job log** (contains ALL step output including the passed test step):
```
gh api repos/{owner}/{repo}/actions/jobs/{job-id}/logs > /tmp/ci-job-{job-id}.txt 2>&1
```
2. **For blob-format logs** (entire output on one line), use `grep -o` with `cut` to extract error snippets:
```
grep -o 'Error:.*expect[^\\]*' /tmp/ci-job-{job-id}.txt | cut -c1-300 | head -5
grep -o 'Locator:.*' /tmp/ci-job-{job-id}.txt | cut -c1-200 | head -5
```
3. **For Testing Farm** (Playwright runs remotely): extract JUnit XML from artifacts:
```
unzip -o ci-results.zip "*.xml" -d /tmp/ci-artifacts && \
grep -A 20 "failure message" /tmp/ci-artifacts/junit*.xml | head -40
```
---
### Step 2: Classify and Route
With all data in hand, classify the failure and choose the investigation depth:
**A) Infra failure -> Report immediately**
Signals: "Create instance" step failed, "Missing file: host", tiny artifact (<10KB), "Artemis resource ended in error", "MAPT container failed", no JUnit results.
Action: Skip everything else. Write the report now. These are provisioning failures with nothing to analyze.
**B) Clear build/process error -> Report after confirming with run history**
Signals: error message is self-explanatory ("no such file or directory", "unable to copy from source docker://...", registry HTTP errors, "copier subprocess" failures). The error context page snapshot would just show a generic page.
Action: Check run history for pattern (isolated vs chronic), then report. Skip artifact download and trace analysis — the CI log error tells the whole story.
**C) UI/test failure -> Full investigation**
Signals: locator timeouts, assertion mismatches, "intercepts pointer events", strict mode violations, `expect(locator).toBeVisible()` failures. The error message says _what_ failed but not _why_.
Action: Continue to Steps 3-5. Download artifacts, read error-context.md, dispatch trace subagent.
**Also decide:**
- **Branch context:** If the run is on a feature branch (not `main`), failures may be expected during development. Check if later runs on the same branch pass — if so, it's a **resolved regression** and the fix is already in. Note this in the report and skip deep investigation.
- **Dedup:** Multiple jobs failing with the same test? Investigate one, note the rest share the root cause.
- **Multi-failure:** Multiple different failures in one job? Check if they cascade from the first (serial test block) or are independent.
- **Run history pattern:** Isolated (transient), regression (code change), chronic (systemic), alternating (flaky/environment), or **resolved** (failed then fixed — later runs pass). For resolved regressions, report what failed and note the fix, but skip deep investigation.
---
### Step 3: Artifacts + Trace Dispatch (Category C only)
Launch artifact download alongside any remaining greps. Pick the smallest artifact from a failed job that ran tests. **Skip artifacts >500MB** (videos, build outputs — will timeout). **If all artifacts show "(expired)"**, skip this entire step — older runs lose artifacts after the retention period (typically 90 days but can be as short as 1 day). You'll have to work with CI logs and run history only. Note this limitation in the report.
```
# Download + list key files in one shot
cd /tmp && gh api repos/{owner}/{repo}/actions/artifacts/{id}/zip > ci-results.zip && \
unzip -l ci-results.zip | grep -E "error-context|trace\.zip|junit" && \
unzip -o ci-results.zip "**/*error-context*" "**/*trace.zip" "*.xml" -d /tmp/ci-artifacts 2>/dev/null
```
**Artifact layouts:**
- **Standard (Azure/MAPT):** `results/podman-desktop/tests-.../error-context.md`, `traces/*_trace.zip`
- **Testing Farm (Fedora):** `results/e2e-test-1/data/traces/*_trace.zip`, `junit-playwright-results.xml` at root. No error-context.md.
- **Extension repos:** `extension-name/junit-results.xml`, `extension-name/...-chromium/error-context.md`
**Read error-context.md** — for UI failures (locator timeouts, assertion mismatches), this page snapshot often reveals the answer immediately. For build/process failures, skip it — the CI log error is more useful.
**Trace analysis** — if trace.zip exists, pre-extract and dispatch a background subagent:
```
mkdir -p /tmp/ci-traces/{name} && cd /tmp/ci-traces/{name} && unzip -o /path/to/trace.zip
```
Read the last 2-3 screenshots from `resources/*.jpeg | sort | tail -3`, then dispatch:
```
Agent(run_in_background=true, prompt="""
Analyze this Playwright trace for a CI test failure.
Trace: /path/to/trace.zip
Extracted: /tmp/ci-traces/{name}/
Failing test: [name from logs]
Error: [message from logs]
Error context: [paste error-context.md if available]
Screenshots: [describe what each shows]
Use the playwright-trace-analysis skill to perform the analysis.
MCP tools if available, otherwise read extracted files.
Return: failure summary, event timeline with step refs, evidence citations,
root cause [Confirmed|Likely|Unknown], failure type, recommended action with file:line.
""")
```
---
### Step 4: Regression Hunt + Source Code (parallel, Category C only)
Skip if the run history shows a chronic or isolated pattern. Launch in parallel:
1. **Verify last passing run:** `gh run view {id} --repo {owner}/{repo}`
2. **Check adjacent failures** for same test: `gh run view {id} --repo ... | grep -E "^X|🧪|❌"`
3. **Fetch test source:** `gh api repos/{owner}/{repo}/contents/{path} --jq '.content' | base64 --decode | sed -n '{start},{end}p'`
(macOS base64 fallback: pipe through `python3 -c "import sys,base64;print(base64.b64decode(sys.stdin.read()).decode())"`)
4. **Commits between pass/fail:** `git log --oneline --since="{date}" --until="{date}" -- {paths}`
---
### Step 5: Report
Collect trace subagent results if dispatched. Correlate all evidence: CI logs, error context, trace findings, test source, regression history, platform comparison. If CI logs and trace disagree, trust traces for UI failures, logs for infra.
```
## CI Failure Investigation
### Summary
One-sentence root cause.
### What Failed
| Job | Test | Error | Duration |
|-----|------|-------|----------|
### Root Cause
- **What:** ...
- **Where:** file:line
- **When introduced:** commit or "N/A — transient"
- **Why:** mechanism
- **Evidence:** screenshot, log, trace step citations
### Classification
[App bug | Test bug | Likely flaky | Environment/infra] — [Confirmed | Likely | Unknown]
### Fix
Specific code change with rationale, or "No code fix — [explanation]".
```
---
## Investigation Playbook
Hard-earned patterns from real investigations. Use these to shortcut analysis.
### Error -> Diagnosis Shortcuts
| Error pattern | Likely cause | Skip to |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------- |
| `Missing file: host` / `MAPT container failed` / `Artemis resource ended in error` | Azure/Testing Farm VM provisioning failure | Report (Category A) |
| `Unable to download docker-compose binary: HttpErr` | GitHub API download failure; test only handles success + rate-limit | Report (Category B) |
| `overlay/.../merged: no such file or directory` / `copier subprocess` | Container storage corruption, often after "Free up disk space" step | Report (Category B) |
| `unable to copy from source docker://...` | Registry pull failure (network/rate limit) | Report (Category B) |
| `intercepts pointer events` + `fade-bg` div | Modal overlay blocking clicks; test doesn't wait for dialog dismissal | Trace analysis (Category C) |
| `strict mode violation: ... resolved to 2 elements` | Locator matches multiple DOM nodes; `.or()` compound locator issue | Error context (Category C) |
| `Expected: "RUNNING"` / `Received: "STOPPED"` | Resource never reached target state within timeout | Platform comparison |
| `Test timeout of N ms exceeded` + `Target page closed` | Long operation exceeded test timeout; browser was killed | Build/process failure |
### Platform Patterns
- **Win10 vs Win11:** Win10 CI runners are consistently slower. K8s deployments, image builds, and cluster operations often timeout on Win10 while passing on Win11 with identical code.
- **x86 vs ARM (macOS-26, Win11-ARM):** ARM runners have different timing characteristics. Tests with tight timeouts (5s) for UI rendering or provider initialization may pass on x86 but fail on ARM. If failures cluster on ARM platforms while x86 passes, suspect timing — increase timeouts.
- **WSL vs Hyper-V:** Different networking and filesystem behavior.
- **Linux (Testing Farm) vs Windows:** Different artifact layouts, auth file paths, filesystem watchers. No error-context.md on Testing Farm — use JUnit XML.
- **GPU vs Default (Testing Farm):** GPU pool has been chronically unavailable. If only GPU jobs fail with provisioning errors, it's infra.
- **Dev vs Prod mode:** Prod binaries may have different startup timing (minified, no sourcemaps, different Electron flags). A test passing in dev but failing in prod (or vice versa) on the same runner suggests mode-specific initialization differences.
### Workflow Patterns
- **✓ Run tests / X Publish Report:** The test step passes but the publish step fails. This means `--log-failed` won't contain Playwright errors — they're in the passed test step's log. Fall back to downloading the full job log. The `gh run view` annotations still show `🧪` with test names. This is the default pattern for podman-desktop/e2e, extension-bootc, and Testing Farm workflows.
- **X Run tests / X Publish Report:** Both fail. `--log-failed` contains Playwright errors from the test step. Grep works normally. This is the pattern for kortex, ai-lab main e2e, and workflows where the test step exits non-zero on failure.
### Noise to Ignore
- `Gtk: gtk_widget_add_accelerator: assertion failed` — Electron/Gtk compat on Linux
- `npm warn Unknown env config` — pnpm/npm config mismatch
- `cpu-features install: Error: Unable to detect compiler type` — optional native module
- `Error trying to run the version on docker-compose. Binary might not be there` — expected when compose isn't installed
- `Error: Failed to execute command: spawn kind ENOENT` — expected when kind isn't installed

View file

@ -0,0 +1,564 @@
---
name: new-extension
description: >-
Scaffold a new Podman Desktop extension as a standalone repository with all
required boilerplate, build config, Containerfile, and Svelte webview. Use
when the user asks to create a new extension, add extension boilerplate,
scaffold an extension, or bootstrap a Podman Desktop extension project.
---
# Create a New Podman Desktop Extension
Scaffold a standalone extension in its own repository. The user provides an extension name and a brief description of what it should do. You produce all required files and verify the extension builds and can be loaded locally into Podman Desktop.
## Inputs
Ask the user (or infer from context):
1. **Extension name** — kebab-case identifier (e.g. `apple-container`). Used as the directory/repo name and the `name` field in `package.json`.
2. **Display name** — human-readable title (e.g. `Apple Container`).
3. **Description** — one-sentence summary shown in the extension list.
4. **Feature scope** — what the extension should do. Common patterns:
- **Minimal** — register a command, show a notification
- **Webview** — display a Svelte UI panel (this is the default for any extension that shows content)
- **Provider** — register a container engine or Kubernetes provider
- **Status bar / Tray** — add status bar entries or tray menu items
- **Configuration** — add extension-specific settings
- Combinations of the above
5. **Publisher** — the org or username that owns the extension (default: the user's GitHub username).
If the extension needs to display any UI beyond simple notifications, **always use the multi-package webview layout** (not inline HTML). This is the standard for all production Podman Desktop extensions.
---
## Where to look in the Podman Desktop codebase
When implementing extension features, you may need to look up API details:
| What you need | Where to look |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| Full extension API types (`createWebviewPanel`, `containerEngine`, `provider`, etc.) | `packages/extension-api/src/extension-api.d.ts` in the podman-desktop repo |
| Extension manifest schema (what `contributes` fields exist) | `packages/main/src/plugin/extension/extension-manifest-schema.ts` |
| How the extension loader discovers and activates extensions | `packages/main/src/plugin/extension/extension-loader.ts` |
| Container operations (`createContainer`, `startContainer`, `pullImage`, `listContainers`) | Search for `export namespace containerEngine` in `extension-api.d.ts` |
| Provider operations (`createProvider`, `getContainerConnections`) | Search for `export namespace provider` in `extension-api.d.ts` |
| Webview types (`WebviewPanel`, `Webview`, `WebviewOptions`) | Search for `interface WebviewPanel` in `extension-api.d.ts` |
| Container create options (`Image`, `Cmd`, `HostConfig`, `PortBindings`, `ExposedPorts`) | Search for `interface ContainerCreateOptions` in `extension-api.d.ts` |
| Existing built-in extensions as examples | `extensions/` directory (e.g. `extensions/registries/`, `extensions/kube-context/`) |
| How extensions are published to OCI registries | `website/docs/extensions/publish/index.md` |
---
## Step 1 — Choose layout
### Minimal (no UI)
For extensions that only register commands, providers, status bar items, or configuration — no webview needed.
```
{name}/
├── .gitignore
├── Containerfile
├── LICENSE
├── README.md
├── icon.png
├── package.json
├── tsconfig.json
└── src/
└── extension.ts
```
### Multi-package with Svelte webview (default for any UI)
**Always use this layout when the extension displays content.** Do not use inline HTML strings. The frontend is a Svelte app built by Vite into static assets that the backend loads into a webview panel.
```
{name}/
├── .gitignore
├── Containerfile
├── LICENSE
├── README.md
├── package.json # root workspace — runs both packages
├── packages/
│ ├── backend/ # the extension entry point (Node.js)
│ │ ├── icon.png
│ │ ├── package.json # has "main": "./dist/extension.js"
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ └── src/
│ │ └── extension.ts
│ ├── frontend/ # Svelte app built into backend/media/
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── svelte.config.js
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ └── src/
│ │ ├── main.ts
│ │ └── App.svelte
│ └── shared/ # (optional) shared types between frontend & backend
│ └── src/
│ └── ...
```
---
## Step 2 — File contents (multi-package webview)
### .gitignore
```
dist/
media/
node_modules/
```
`media/` is a build artifact (frontend output) — do not commit it.
### Root package.json
```json
{
"name": "{name}",
"displayName": "{displayName}",
"description": "{description}",
"version": "0.0.1",
"private": true,
"engines": { "node": ">=22.0.0", "npm": ">=11.0.0" },
"scripts": {
"build": "concurrently \"npm run -w packages/frontend build\" \"npm run -w packages/backend build\"",
"watch": "concurrently \"npm run -w packages/frontend watch\" \"npm run -w packages/backend watch\""
},
"devDependencies": {
"concurrently": "^8.2.2",
"typescript": "^5.9.3",
"vite": "^7.0.0"
},
"workspaces": ["packages/*"]
}
```
> **Vite version constraint:** `@sveltejs/vite-plugin-svelte@6.x` requires Vite 6 or 7. Do not use Vite 8+.
### packages/backend/package.json
This is the **extension manifest** that Podman Desktop reads:
```json
{
"name": "{name}",
"displayName": "{displayName}",
"description": "{description}",
"version": "0.0.1",
"icon": "icon.png",
"publisher": "{publisher}",
"license": "Apache-2.0",
"engines": { "podman-desktop": ">=1.26.0" },
"main": "./dist/extension.js",
"contributes": {},
"scripts": {
"build": "vite build",
"watch": "vite --mode development build -w"
},
"devDependencies": {
"@podman-desktop/api": "^1.26.1",
"@types/node": "^22"
}
}
```
### packages/backend/tsconfig.json
```json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"lib": ["ES2020"],
"sourceMap": true,
"rootDir": "src",
"outDir": "dist",
"skipLibCheck": true,
"types": ["node"],
"strict": true,
"allowSyntheticDefaultImports": true
},
"include": ["src"]
}
```
### packages/backend/vite.config.ts
Use `.ts` for type-safe config. The backend builds as a CJS library entry point with `@podman-desktop/api` and all Node builtins externalized.
```ts
import { join } from 'path';
import { builtinModules } from 'module';
import { defineConfig } from 'vite';
const PACKAGE_ROOT = __dirname;
export default defineConfig({
mode: process.env.MODE,
root: PACKAGE_ROOT,
envDir: process.cwd(),
resolve: {
alias: {
'/@/': join(PACKAGE_ROOT, 'src') + '/',
},
},
build: {
sourcemap: 'inline',
target: 'esnext',
outDir: 'dist',
assetsDir: '.',
minify: process.env.MODE === 'production' ? 'esbuild' : false,
lib: {
entry: 'src/extension.ts',
formats: ['cjs'],
},
rollupOptions: {
external: ['@podman-desktop/api', ...builtinModules.flatMap(p => [p, `node:${p}`])],
output: { entryFileNames: '[name].js' },
},
emptyOutDir: true,
reportCompressedSize: false,
},
});
```
### packages/frontend/package.json
```json
{
"name": "frontend",
"private": true,
"type": "module",
"scripts": {
"build": "vite build",
"watch": "vite --mode development build -w"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^6.1.0",
"svelte": "^5.53.5"
}
}
```
Optionally add `@podman-desktop/ui-svelte` for native Podman Desktop components (Button, EmptyScreen, etc.), and `tailwindcss` + `autoprefixer` + `postcss` if you want Tailwind styling.
### packages/frontend/tsconfig.json
The frontend runs in a browser-like webview environment, so it needs DOM libs and bundler resolution:
```json
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"strict": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"verbatimModuleSyntax": true
},
"include": ["src"]
}
```
### packages/frontend/svelte.config.js
Required for Svelte preprocessing (TypeScript in `.svelte` files):
```js
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
export default {
preprocess: [vitePreprocess()],
};
```
### packages/frontend/vite.config.ts
The key: `outDir: '../backend/media'` — Vite builds the Svelte app into the backend's `media/` folder.
```ts
import { join } from 'path';
import { svelte } from '@sveltejs/vite-plugin-svelte';
import { defineConfig } from 'vite';
import { fileURLToPath } from 'url';
import path from 'path';
const filename = fileURLToPath(import.meta.url);
const PACKAGE_ROOT = path.dirname(filename);
export default defineConfig({
mode: process.env.MODE,
root: PACKAGE_ROOT,
resolve: {
alias: { '/@/': join(PACKAGE_ROOT, 'src') + '/' },
},
plugins: [svelte()],
base: '',
build: {
sourcemap: true,
outDir: '../backend/media',
assetsDir: '.',
emptyOutDir: true,
reportCompressedSize: false,
},
});
```
### packages/frontend/index.html
```html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{displayName}</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="./src/main.ts"></script>
</body>
</html>
```
### packages/frontend/src/main.ts
```ts
import { mount } from 'svelte';
import App from './App.svelte';
const app = mount(App, { target: document.getElementById('app')! });
export default app;
```
### packages/frontend/src/App.svelte
Write the Svelte component for the extension's UI. Use `@podman-desktop/ui-svelte` components (Button, EmptyScreen, etc.) for a native look and feel.
---
## Step 3 — Backend loads the built frontend
In `packages/backend/src/extension.ts`, the backend creates a webview panel and loads the Svelte-built `index.html` from `media/`:
```ts
import type { ExtensionContext } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import fs from 'node:fs';
export async function activate(extensionContext: ExtensionContext): Promise<void> {
const panel = extensionApi.window.createWebviewPanel('{name}-panel', '{displayName}', {
localResourceRoots: [extensionApi.Uri.joinPath(extensionContext.extensionUri, 'media')],
});
extensionContext.subscriptions.push(panel);
const indexHtmlUri = extensionApi.Uri.joinPath(extensionContext.extensionUri, 'media', 'index.html');
let indexHtml = await fs.promises.readFile(indexHtmlUri.fsPath, 'utf8');
// Rewrite asset paths so the webview can load them
const scriptLinks = indexHtml.match(/<script[^>]+src="([^"]+)"/g) ?? [];
for (const link of scriptLinks) {
const src = link.match(/src="([^"]+)"/)?.[1];
if (src) {
const webviewUri = panel.webview.asWebviewUri(
extensionApi.Uri.joinPath(extensionContext.extensionUri, 'media', src),
);
indexHtml = indexHtml.replace(src, webviewUri.toString());
}
}
const cssLinks = indexHtml.match(/<link[^>]+href="([^"]+)"/g) ?? [];
for (const link of cssLinks) {
const href = link.match(/href="([^"]+)"/)?.[1];
if (href) {
const webviewUri = panel.webview.asWebviewUri(
extensionApi.Uri.joinPath(extensionContext.extensionUri, 'media', href),
);
indexHtml = indexHtml.replace(href, webviewUri.toString());
}
}
panel.webview.html = indexHtml;
}
export async function deactivate(): Promise<void> {
console.log('stopping {name} extension');
}
```
**Why this approach?** The webview runs in a sandboxed iframe with its own origin. Local file paths don't resolve — you must convert them with `panel.webview.asWebviewUri()` and set `localResourceRoots` to grant access to the `media/` folder.
### Backend-to-frontend messaging
The backend can send messages to the frontend with `postMessage`, and the frontend listens with `window.addEventListener('message', ...)`:
**Backend** (in extension.ts):
```ts
panel.webview.postMessage({ type: 'status', value: 'running' });
```
**Frontend** (in App.svelte):
```svelte
<script lang="ts">
let status = $state('idle');
window.addEventListener('message', (event: MessageEvent) => {
if (event.data?.type === 'status') {
status = event.data.value;
}
});
</script>
```
The frontend can also send messages back to the backend using `acquirePodmanDesktopApi().postMessage()`, and the backend receives them via `panel.webview.onDidReceiveMessage`. See the [full template](https://github.com/podman-desktop/podman-desktop-extension-full-template) for a complete RPC implementation using `MessageProxy`.
---
## Step 4 — Containerfile (multi-package)
```dockerfile
FROM scratch AS builder
COPY packages/backend/dist/ /extension/dist
COPY packages/backend/package.json /extension/
COPY packages/backend/media/ /extension/media
COPY packages/backend/icon.png /extension/
COPY LICENSE /extension/
COPY README.md /extension/
FROM scratch
LABEL org.opencontainers.image.title="{displayName}" \
org.opencontainers.image.description="{description}" \
org.opencontainers.image.vendor="{publisher}" \
io.podman-desktop.api.version=">= 1.26.0"
COPY --from=builder /extension /extension
```
The OCI image copies from `packages/backend/` (the extension manifest lives there), plus the `media/` folder that contains the built frontend assets.
---
## Step 5 — Build and verify
```bash
npm install
npm run build
```
After building, verify:
- `packages/backend/dist/extension.js` exists (the backend)
- `packages/backend/media/index.html` exists (the built frontend)
---
## Step 6 — Test locally in Podman Desktop
1. Open Podman Desktop
2. Go to **Settings > Preferences > Extensions** and enable **Development mode**
3. Go to **Extensions > Local Extensions** tab
4. Click **Add a local folder extension...** and select the folder containing the extension `package.json`:
- **Multi-package layout:** select `packages/backend/` (not the root)
- **Minimal layout:** select the repository root
5. Verify the extension appears as `ACTIVE`
6. Test the extension's functionality
---
## Step 7 — Package and publish (when ready)
```bash
npm run build
podman build -t quay.io/{publisher}/{name} .
podman push quay.io/{publisher}/{name}
```
To add it to the official catalog, open a PR on [podman-desktop-catalog](https://github.com/podman-desktop/podman-desktop-catalog) adding the extension to `static/api/extensions.json`.
---
## Minimal extension (no webview)
For extensions without a UI panel, use the single-package layout from Step 1. Same `package.json` / `vite.config.ts` patterns as the backend package, minus the `media/` loading.
---
## Quick reference — common API patterns
| Task | API |
| ------------------------------- | --------------------------------------------------------------------- |
| Show info/warning/error message | `extensionApi.window.showInformationMessage(msg)` |
| Register a command | `extensionApi.commands.registerCommand(id, callback)` |
| Create a provider | `extensionApi.provider.createProvider(options)` |
| Create a webview | `extensionApi.window.createWebviewPanel(viewType, title, options)` |
| Send message to webview | `panel.webview.postMessage(data)` |
| Receive message from webview | `panel.webview.onDidReceiveMessage(callback)` |
| Add status bar item | `extensionApi.window.createStatusBarItem()` |
| Add tray menu item | `extensionApi.tray.registerMenuItem(item)` |
| Read configuration | `extensionApi.configuration.getConfiguration(section)` |
| Pull a container image | `extensionApi.containerEngine.pullImage(connection, image, callback)` |
| Create a container | `extensionApi.containerEngine.createContainer(engineId, options)` |
| Start/stop a container | `extensionApi.containerEngine.startContainer(engineId, id)` |
| List containers | `extensionApi.containerEngine.listContainers()` |
| Get running engine connection | `extensionApi.provider.getContainerConnections()` |
| Get engine ID from connection | `extensionApi.containerEngine.listInfos({ provider: connection })` |
| Navigate to webview | `extensionApi.navigation.navigateToWebview(webviewId)` |
---
## Common pitfalls
### Getting the `engineId` for container operations
Many `containerEngine` methods (`createContainer`, `startContainer`, `stopContainer`, `deleteContainer`, `inspectContainer`) require an `engineId` string. This is **not** `connection.name` from `getContainerConnections()` — that will produce a "no engine matching this container" error.
The correct way to obtain the `engineId`:
```ts
const connections = extensionApi.provider.getContainerConnections();
const running = connections.filter(c => c.connection.status() === 'started');
if (running.length === 0) {
throw new Error('No running container engine found');
}
const connection = running[0].connection;
// Use listInfos to get the real engineId
const infos = await extensionApi.containerEngine.listInfos({ provider: connection });
if (infos.length === 0) {
throw new Error('No engine info available');
}
const engineId = infos[0].engineId;
await extensionApi.containerEngine.createContainer(engineId, {
/* ... */
});
```
Alternatively, if you already have containers or images from `listContainers()` or `listImages()`, their `engineId` field can be reused directly.
### `createContainer` auto-starts by default
`ContainerCreateOptions.start` defaults to `true`. If you call `createContainer` followed by `startContainer`, the second call will fail with **HTTP 304** ("container already started"). Either:
- Rely on the default and skip `startContainer`, or
- Pass `start: false` in the create options if you need to configure the container before starting it
For the full API surface, see [`extension-api.d.ts`](https://github.com/podman-desktop/podman-desktop/blob/main/packages/extension-api/src/extension-api.d.ts).
## Official templates
- **Minimal:** [podman-desktop-extension-minimal-template](https://github.com/podman-desktop/podman-desktop-extension-minimal-template)
- **Webview (inline HTML):** [podman-desktop-extension-webview-template](https://github.com/podman-desktop/podman-desktop-extension-webview-template)
- **Full (Svelte + Tailwind + multi-package):** [podman-desktop-extension-full-template](https://github.com/podman-desktop/podman-desktop-extension-full-template) — this is the recommended starting point for any extension with a UI.

View file

@ -0,0 +1,373 @@
---
name: playwright-testing
description: >-
Guide for writing, updating, and maintaining Playwright end-to-end tests for
Podman Desktop using the project's Electron runner, custom fixtures, and Page
Object Model hierarchy. Use when creating new E2E spec files, building or
modifying page objects, updating the test framework or utilities, debugging
test failures, adding smoke tests, or when the user asks about Playwright
tests, test automation, spec files, page models, or the E2E test structure.
---
# Playwright E2E Testing for Podman Desktop
This skill covers the Podman Desktop-specific Playwright framework. It is an
Electron desktop app — tests launch the app via `Runner`, not a browser URL.
## Project Structure
```
playwright.config.ts # At repo root, not under tests/
tests/playwright/
├── package.json # @podman-desktop/tests-playwright
├── tsconfig.json # Path alias: /@/ → src/
├── vite.config.js # Library build config
├── src/
│ ├── specs/ # Test spec files
│ │ ├── *-smoke.spec.ts # Smoke test suites
│ │ ├── *.spec.ts # Other specs
│ │ └── z-*.spec.ts # Ordered-last suites (Podman machine)
│ ├── special-specs/ # Isolated/focused suites
│ │ ├── installation/
│ │ ├── managed-configuration/
│ │ ├── podman-remote/
│ │ └── ui-stress/
│ ├── model/ # Page Object Models
│ │ ├── pages/ # Page POMs (base-page, main-page, details-page, ...)
│ │ │ ├── base-page.ts # Abstract base: holds readonly page
│ │ │ ├── main-page.ts # Abstract: list pages (Images, Containers, Volumes, Pods)
│ │ │ ├── details-page.ts # Abstract: resource detail views
│ │ │ ├── *-page.ts # Concrete page POMs
│ │ │ ├── forms/ # Form-specific POMs
│ │ │ └── compose-onboarding/ # Compose onboarding flow POMs
│ │ ├── workbench/ # App shell POMs
│ │ │ ├── navigation.ts # NavigationBar — sidebar nav, returns page POMs
│ │ │ └── status-bar.ts # StatusBar
│ │ ├── components/ # Reusable widget POMs
│ │ └── core/ # Enums, types, states, settings helpers
│ ├── runner/ # Electron app launcher
│ │ ├── podman-desktop-runner.ts # Runner singleton
│ │ └── runner-options.ts # RunnerOptions config class
│ ├── utility/ # Shared helpers
│ │ ├── fixtures.ts # Custom Playwright test + fixtures
│ │ ├── operations.ts # UI workflow helpers
│ │ ├── wait.ts # waitUntil, waitWhile, waitForPodmanMachineStartup
│ │ ├── kubernetes.ts # K8s helpers
│ │ ├── cluster-operations.ts # Kind cluster helpers
│ │ ├── platform.ts # isLinux, isMac, isWindows, isCI
│ │ └── auth-utils.ts # Browser-based auth flows (Chromium)
│ ├── setupFiles/ # Feature gate helpers
│ └── globalSetup/ # Setup/teardown (exported, not in config)
├── resources/ # Containerfiles, YAML, fixtures
└── output/ # Traces, videos, reports (gitignored)
```
## Imports and Fixtures
**Always** import `test` and `expect` from the project fixtures, not from `@playwright/test`:
```typescript
import { expect as playExpect, test } from '/@/utility/fixtures';
```
All source imports use the `/@/` path alias, which Vite resolves to `src/`.
### Available Test Fixtures
The custom `test` provides these fixtures:
| Fixture | Type | Description |
| --------------- | --------------- | ----------------------------------------------------------- |
| `runner` | `Runner` | Electron app lifecycle (singleton via `Runner.getInstance`) |
| `page` | `Page` | The Electron renderer window (`runner.getPage()`) |
| `navigationBar` | `NavigationBar` | Sidebar navigation POM |
| `welcomePage` | `WelcomePage` | Welcome/onboarding page POM |
| `statusBar` | `StatusBar` | Bottom status bar POM |
| `runnerOptions` | `RunnerOptions` | Configurable option (override with `test.use`) |
Destructure these directly in test hooks and test functions:
```typescript
test.beforeAll(async ({ runner, welcomePage, page }) => { ... });
test('my test', async ({ navigationBar }) => { ... });
```
## Page Object Model Hierarchy
### Three-Level Inheritance
```
BasePage (abstract)
├── MainPage (abstract) — list pages with tables (Images, Containers, Volumes, Pods)
│ ├── ImagesPage
│ ├── ContainersPage
│ ├── VolumesPage
│ └── PodsPage
├── DetailsPage (abstract) — resource detail views with tabs
│ ├── ImageDetailsPage
│ ├── ContainerDetailsPage
│ └── ...
└── Other concrete pages (WelcomePage, DashboardPage, ...)
Workbench classes (not BasePage subclasses):
├── NavigationBar
└── StatusBar
```
### BasePage
All page POMs extend `BasePage`:
```typescript
import type { Page } from '@playwright/test';
export abstract class BasePage {
readonly page: Page;
constructor(page: Page) {
this.page = page;
}
}
```
### MainPage
For list pages with header, search, content regions, and table rows:
```typescript
export abstract class MainPage extends BasePage {
readonly title: string;
readonly mainPage: Locator;
readonly header: Locator;
readonly search: Locator;
readonly content: Locator;
readonly additionalActions: Locator;
readonly heading: Locator;
constructor(page: Page, title: string) {
super(page);
this.title = title;
this.mainPage = page.getByRole('region', { name: this.title });
this.header = this.mainPage.getByRole('region', { name: 'header' });
this.search = this.mainPage.getByRole('region', { name: 'search' });
this.content = this.mainPage.getByRole('region', { name: 'content' });
this.additionalActions = this.header.getByRole('group', { name: 'additionalActions' });
this.heading = this.header.getByRole('heading', { name: this.title });
}
}
```
Concrete pages call `super(page, 'images')`, `super(page, 'containers')`, etc.
### DetailsPage
For resource detail views with tabs, breadcrumb, and control actions:
```typescript
export abstract class DetailsPage extends BasePage {
readonly header: Locator;
readonly tabs: Locator;
readonly tabContent: Locator;
readonly closeButton: Locator;
readonly backLink: Locator;
readonly heading: Locator;
constructor(page: Page, resourceName: string) {
super(page);
this.tabContent = page.getByRole('region', { name: 'Tab Content' });
this.header = page.getByRole('region', { name: 'Header' });
this.tabs = page.getByRole('region', { name: 'Tabs' });
this.heading = this.header.getByRole('heading', { name: resourceName });
// ... breadcrumb, close, back locators
}
}
```
### POM Rules
1. **Extend the correct base class**: `MainPage` for list pages, `DetailsPage` for detail views, `BasePage` for other pages
2. **Declare all locators as `readonly` in the constructor** — eager `Locator` chains, not lazy getters
3. **Wrap every method body in `test.step()`** for trace readability:
```typescript
async pullImage(image: string): Promise<ImagesPage> {
return test.step(`Pull image: ${image}`, async () => {
const pullImagePage = await this.openPullImage();
await playExpect(pullImagePage.heading).toBeVisible();
return await pullImagePage.pullImage(image);
});
}
```
4. **Navigation methods return POM instances** — e.g. `openPullImage()` returns `PullImagePage`
5. **Use `playExpect`** (aliased from `@playwright/test`) inside POM files for assertions
6. **Import `test` from `@playwright/test`** in POM files (for `test.step`), but from `/@/utility/fixtures` in spec files
### NavigationBar
Returns page POMs from sidebar navigation. Each method wraps in `test.step()`:
```typescript
async openImages(): Promise<ImagesPage> {
return test.step('Open Images page', async () => {
await playExpect(this.imagesLink).toBeVisible({ timeout: 10_000 });
await this.imagesLink.click({ force: true });
return new ImagesPage(this.page);
});
}
```
## Writing Spec Files
### Template
```typescript
import { RunnerOptions } from '/@/runner/runner-options';
import { expect as playExpect, test } from '/@/utility/fixtures';
import { waitForPodmanMachineStartup } from '/@/utility/wait';
// Optional: override runner options for isolated profile
test.use({ runnerOptions: new RunnerOptions({ customFolder: 'my-feature' }) });
test.beforeAll(async ({ runner, welcomePage, page }) => {
runner.setVideoAndTraceName('my-feature-e2e');
await welcomePage.handleWelcomePage(true);
await waitForPodmanMachineStartup(page);
});
test.afterAll(async ({ runner }) => {
await runner.close();
});
test.describe.serial('Feature name', { tag: '@smoke' }, () => {
test.describe.configure({ retries: 1 });
test('first test', async ({ navigationBar }) => {
const imagesPage = await navigationBar.openImages();
await playExpect(imagesPage.heading).toBeVisible();
// ... test body
});
});
```
### Key Patterns
- **Serial suites**: Use `test.describe.serial()` — most Podman Desktop E2E tests share Electron state
- **Tags**: `{ tag: '@smoke' }`, `{ tag: '@k8s_e2e' }`, `{ tag: ['@smoke', '@windows_sanity'] }`
- **Retries**: `test.describe.configure({ retries: 1 })` inside the describe block
- **Timeouts**: `test.setTimeout(180_000)` per test or in `beforeAll`
- **Conditional skip**: `test.skip(isLinux, 'Not supported on Linux')`
- **Runner options**: `test.use({ runnerOptions: new RunnerOptions({ ... }) })` for custom profiles
- **Cleanup in afterAll**: Always wrap in `try/finally` with `runner.close()` in `finally`
### Naming Conventions
- Spec files: `kebab-case-smoke.spec.ts` (use `-smoke` suffix for smoke tests)
- Prefix with `z-` for suites that must run last (e.g. `z-podman-machine-tests.spec.ts`)
- POM files: `feature-page.ts` in `model/pages/`, `feature-component.ts` in `model/components/`
## Runner and RunnerOptions
### Runner Lifecycle
`Runner` is a singleton that launches the Electron app:
1. `Runner.getInstance({ runnerOptions })` — creates/reuses the singleton, calls `electron.launch()`
2. `runner.getPage()` — returns the `Page` from `firstWindow()`
3. `runner.setVideoAndTraceName('name')` — sets artifact naming (call in `beforeAll`)
4. `runner.close()` — stops tracing, closes app, saves artifacts
### RunnerOptions
Configure with `test.use()`:
```typescript
test.use({
runnerOptions: new RunnerOptions({
customFolder: 'my-test-profile', // isolated profile directory
extensionsDisabled: ['podman'], // disable specific extensions
autoUpdate: false, // disable auto-update checks
saveTracesOnPass: true, // keep traces even on pass
customSettings: { key: 'value' }, // inject settings.json values
}),
});
```
### Environment Variables
| Variable | Purpose |
| ----------------------- | ----------------------------------------------------------------------- |
| `PODMAN_DESKTOP_BINARY` | Path to packaged binary (mutually exclusive with `PODMAN_DESKTOP_ARGS`) |
| `PODMAN_DESKTOP_ARGS` | Path to repo for dev mode |
| `KEEP_TRACES_ON_PASS` | Retain traces on passing tests |
| `KEEP_VIDEOS_ON_PASS` | Retain videos on passing tests |
## Wait Utilities
Use the project's wait helpers from `/@/utility/wait`, not custom polling:
```typescript
import { waitUntil, waitWhile, waitForPodmanMachineStartup } from '/@/utility/wait';
await waitUntil(() => someCondition(), { timeout: 10_000, diff: 500, message: 'Condition not met' });
await waitWhile(() => dialogIsOpen(), { timeout: 5_000 });
await waitForPodmanMachineStartup(page);
```
Parameters: `timeout` (ms, default 5000), `diff` (polling interval ms, default 500), `sendError` (throw on timeout, default true), `message` (error text).
## Locator Strategy
1. **`getByRole`** — primary choice, use `exact: true` when needed
2. **`getByLabel`** — form inputs and ARIA-labeled elements
3. **`getByText`** — visible text
4. **`getByTestId`** — when no semantic option exists
5. **CSS locators** — last resort
Scope locators to parent regions when possible:
```typescript
this.pullImageButton = this.additionalActions.getByRole('button', { name: 'Pull', exact: true });
```
## Running Tests
Tests execute from the **repo root** (not from `tests/playwright/`):
```bash
# All E2E tests (excluding k8s)
npx playwright test tests/playwright/src/specs/ --grep-invert @k8s_e2e
# Smoke tests only
npx playwright test tests/playwright/src/specs/ --grep @smoke
# Single spec file
npx playwright test tests/playwright/src/specs/image-smoke.spec.ts
# View report
pnpm exec playwright show-report tests/playwright/output/html-results
```
## Troubleshooting
### Podman machine stuck in STARTING
The `waitForPodmanMachineStartup` utility handles this by resetting via CLI. If tests time out waiting for RUNNING state, check that Podman is installed and the machine provider is available.
### No Container Engine
Some POM methods (e.g. `openPullImage`) use `waitWhile(() => this.noContainerEngine())` to gate on engine availability. If tests fail with "No Container Engine", the Podman machine likely didn't start.
### Platform-specific skips
Use helpers from `/@/utility/platform`:
```typescript
import { isLinux, isMac, isWindows, isCI } from '/@/utility/platform';
test.skip(isLinux, 'Not supported on Linux');
```
## Additional Resources
- For the project's wait utilities, operation helpers, and framework API, see [references/reference.md](references/reference.md)
- For concrete examples from actual spec files, see [references/examples.md](references/examples.md)

View file

@ -0,0 +1,397 @@
# Examples
Concrete examples drawn from actual Podman Desktop spec files and POMs.
## Example 1: Minimal Smoke Test Spec
From `welcome-page-smoke.spec.ts` — the simplest spec pattern:
```typescript
import { RunnerOptions } from '/@/runner/runner-options';
import { expect as playExpect, test } from '/@/utility/fixtures';
test.use({ runnerOptions: new RunnerOptions({ customFolder: 'welcome-podman-desktop' }) });
test.beforeAll(async ({ runner }) => {
runner.setVideoAndTraceName('welcome-page-e2e');
});
test.afterAll(async ({ runner }) => {
await runner.close();
});
test.describe.serial(
'Basic e2e verification of podman desktop start',
{
tag: ['@smoke', '@windows_sanity', '@macos_sanity'],
},
() => {
test('Check the Welcome page is displayed', async ({ welcomePage }) => {
await playExpect(welcomePage.welcomeMessage).toBeVisible();
});
test('Telemetry checkbox is present and set to true', async ({ welcomePage }) => {
await playExpect(welcomePage.telemetryConsent).toBeVisible();
await playExpect(welcomePage.telemetryConsent).toBeChecked();
});
test('Redirection from Welcome page to Dashboard works', async ({ welcomePage }) => {
const dashboardPage = await welcomePage.closeWelcomePage();
await playExpect(dashboardPage.heading).toBeVisible();
});
},
);
```
Key points:
- Imports from `/@/utility/fixtures`
- `test.use()` for isolated profile
- `runner.setVideoAndTraceName()` in `beforeAll`
- `runner.close()` in `afterAll`
- `test.describe.serial` with tag array
- Destructures `welcomePage` fixture directly
## Example 2: Full Smoke Test with Podman Machine Setup
From `image-smoke.spec.ts` — standard pattern for tests needing a running engine:
```typescript
import { expect as playExpect, test } from '/@/utility/fixtures';
import { waitForPodmanMachineStartup } from '/@/utility/wait';
const helloContainer = 'ghcr.io/podmandesktop-ci/hello';
test.beforeAll(async ({ runner, welcomePage, page }) => {
runner.setVideoAndTraceName('pull-image-e2e');
await welcomePage.handleWelcomePage(true);
await waitForPodmanMachineStartup(page);
});
test.afterAll(async ({ runner }) => {
await runner.close();
});
test.describe.serial('Image workflow verification', { tag: '@smoke' }, () => {
test.describe.configure({ retries: 1 });
test('Pull image', async ({ navigationBar }) => {
const imagesPage = await navigationBar.openImages();
await playExpect(imagesPage.heading).toBeVisible();
const pullImagePage = await imagesPage.openPullImage();
const updatedImages = await pullImagePage.pullImage(helloContainer);
await playExpect(updatedImages.heading).toBeVisible({ timeout: 10_000 });
await playExpect
.poll(async () => updatedImages.waitForImageExists(helloContainer, 30_000), { timeout: 0 })
.toBeTruthy();
});
test('Delete image', async ({ navigationBar }) => {
let imagesPage = await navigationBar.openImages();
const imageDetailPage = await imagesPage.openImageDetails(helloContainer);
imagesPage = await imageDetailPage.deleteImage();
await playExpect
.poll(async () => await imagesPage.waitForImageDelete(helloContainer, 60_000), { timeout: 0 })
.toBeTruthy();
});
});
```
Key points:
- `welcomePage.handleWelcomePage(true)` dismisses the welcome screen
- `waitForPodmanMachineStartup(page)` ensures engine is ready
- `test.describe.configure({ retries: 1 })` for flaky-tolerant CI
- POM methods chain: `navigationBar.openImages()``imagesPage.openPullImage()``pullImagePage.pullImage()`
- `playExpect.poll()` with `{ timeout: 0 }` wraps methods that have their own internal timeout
## Example 3: Concrete Page Object (MainPage Subclass)
Abridged from `images-page.ts`:
```typescript
import type { Locator, Page } from '@playwright/test';
import test, { expect as playExpect } from '@playwright/test';
import { handleConfirmationDialog } from '/@/utility/operations';
import { waitUntil, waitWhile } from '/@/utility/wait';
import { BuildImagePage } from './build-image-page';
import { ImageDetailsPage } from './image-details-page';
import { MainPage } from './main-page';
import { PullImagePage } from './pull-image-page';
export class ImagesPage extends MainPage {
readonly pullImageButton: Locator;
readonly pruneImagesButton: Locator;
readonly buildImageButton: Locator;
constructor(page: Page) {
super(page, 'images');
this.pullImageButton = this.additionalActions.getByRole('button', { name: 'Pull', exact: true });
this.pruneImagesButton = this.additionalActions.getByRole('button', { name: 'Prune', exact: true });
this.buildImageButton = this.additionalActions.getByRole('button', { name: 'Build', exact: true });
}
async openPullImage(): Promise<PullImagePage> {
return test.step('Open pull image page', async () => {
await waitWhile(() => this.noContainerEngine(), {
timeout: 50_000,
message: 'No Container Engine is available, cannot pull an image',
});
await this.pullImageButton.click();
return new PullImagePage(this.page);
});
}
async pullImage(image: string): Promise<ImagesPage> {
return test.step(`Pull image: ${image}`, async () => {
const pullImagePage = await this.openPullImage();
await playExpect(pullImagePage.heading).toBeVisible();
return await pullImagePage.pullImage(image);
});
}
async openImageDetails(name: string): Promise<ImageDetailsPage> {
return test.step(`Open image details page for image: ${name}`, async () => {
const imageRow = await this.getImageRowByName(name);
if (imageRow === undefined) {
throw Error(`Image: '${name}' does not exist`);
}
const imageRowName = imageRow.getByRole('cell').nth(3);
await imageRowName.click();
return new ImageDetailsPage(this.page, name);
});
}
async waitForImageExists(name: string, timeout = 5_000): Promise<boolean> {
return test.step(`Wait for image: ${name} to exist`, async () => {
await waitUntil(async () => await this.imageExists(name), { timeout });
return true;
});
}
}
```
Key points:
- Extends `MainPage` with `super(page, 'images')`
- Locators scoped to inherited `this.additionalActions`
- Every method wrapped in `test.step()`
- Uses `waitWhile`/`waitUntil` from project utilities
- Navigation methods return new POM instances
- `handleConfirmationDialog` for modal dialogs
## Example 4: NavigationBar Usage
The `NavigationBar` POM provides navigation to all main pages:
```typescript
// In a test — navigationBar comes from fixtures
test('Navigate to containers', async ({ navigationBar }) => {
const containersPage = await navigationBar.openContainers();
await playExpect(containersPage.heading).toBeVisible();
});
// Navigate through multiple pages in sequence
test('Check all main pages', async ({ navigationBar }) => {
const images = await navigationBar.openImages();
await playExpect(images.heading).toBeVisible();
const containers = await navigationBar.openContainers();
await playExpect(containers.heading).toBeVisible();
const volumes = await navigationBar.openVolumes();
await playExpect(volumes.heading).toBeVisible();
const pods = await navigationBar.openPods();
await playExpect(pods.heading).toBeVisible();
});
```
Available navigation methods:
- `openDashboard()``DashboardPage`
- `openImages()``ImagesPage`
- `openContainers()``ContainersPage`
- `openPods()``PodsPage`
- `openVolumes()``VolumesPage`
- `openSettings()``SettingsBar`
- `openKubernetes()``KubernetesBar`
- `openExtensions()``ExtensionsPage`
- `openNetworks()``NetworksPage`
## Example 5: Test with Timeouts and Build Resources
From `image-smoke.spec.ts` — building an image with file paths:
```typescript
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { ArchitectureType } from '/@/model/core/platforms';
import { expect as playExpect, test } from '/@/utility/fixtures';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
test('Build image', async ({ navigationBar }) => {
let imagesPage = await navigationBar.openImages();
await playExpect(imagesPage.heading).toBeVisible();
const buildImagePage = await imagesPage.openBuildImage();
await playExpect(buildImagePage.heading).toBeVisible();
const dockerfilePath = path.resolve(__dirname, '..', '..', 'resources', 'test-containerfile');
const contextDirectory = path.resolve(__dirname, '..', '..', 'resources');
imagesPage = await buildImagePage.buildImage('build-image-test', dockerfilePath, contextDirectory);
playExpect(await imagesPage.waitForImageExists('docker.io/library/build-image-test')).toBeTruthy();
const imageDetailsPage = await imagesPage.openImageDetails('docker.io/library/build-image-test');
await playExpect(imageDetailsPage.heading).toBeVisible();
imagesPage = await imageDetailsPage.deleteImage();
playExpect(await imagesPage.waitForImageDelete('docker.io/library/build-image-test')).toBeTruthy();
});
test('Build with target stage', async ({ navigationBar }) => {
test.setTimeout(180_000);
// ... similar but with stage parameter
});
```
Key points:
- `__dirname` derived from `import.meta.url` (ESM)
- Resources in `tests/playwright/resources/`
- Path resolution relative to the spec file
- `test.setTimeout()` for long-running operations
## Example 6: Conditional Skipping and Platform Checks
```typescript
import { isLinux, isMac, isCI } from '/@/utility/platform';
// Skip at describe level
test.describe.serial('Compose tests', { tag: '@smoke' }, () => {
test.skip(isCI && isLinux, 'Compose not available on Linux CI');
test('deploy compose file', async ({ navigationBar }) => {
// ...
});
});
// Skip individual tests
test('macOS-only feature', async ({ page }) => {
test.skip(!isMac, 'Only runs on macOS');
// ...
});
// Skip based on env var
test('registry push', async ({ page }) => {
test.skip(!process.env.REGISTRY_URL, 'No registry configured');
// ...
});
```
## Example 7: Cleanup Pattern with try/finally
From typical `afterAll` blocks:
```typescript
test.afterAll(async ({ runner, page }) => {
test.setTimeout(90_000);
try {
const imagesPage = await new NavigationBar(page).openImages();
await imagesPage.deleteAllUnusedImages();
} catch (error) {
console.log(`Cleanup error (non-fatal): ${error}`);
} finally {
await runner.close();
}
});
```
`runner.close()` must always be called, even if cleanup fails.
## Example 8: Polling with playExpect.poll
The codebase wraps methods that have internal timeouts with `{ timeout: 0 }`:
```typescript
// The inner method (waitForImageExists) has its own timeout.
// The outer poll with timeout: 0 prevents double-timeout issues.
await playExpect
.poll(async () => updatedImages.waitForImageExists(helloContainer, 30_000), { timeout: 0 })
.toBeTruthy();
// Polling for a count to change
await playExpect
.poll(async () => await imagesPage.countImagesByName('<none>'), { timeout: 60_000 })
.toBeGreaterThan(baselineCount);
```
## Example 9: DetailsPage Subclass
Pattern for a resource details page:
```typescript
import type { Locator, Page } from '@playwright/test';
import test, { expect as playExpect } from '@playwright/test';
import { DetailsPage } from './details-page';
import { ImagesPage } from './images-page';
export class ImageDetailsPage extends DetailsPage {
readonly summaryTab: Locator;
readonly historyTab: Locator;
readonly inspectTab: Locator;
constructor(page: Page, imageName: string) {
super(page, imageName);
this.summaryTab = this.tabs.getByRole('link', { name: 'Summary' });
this.historyTab = this.tabs.getByRole('link', { name: 'History' });
this.inspectTab = this.tabs.getByRole('link', { name: 'Inspect' });
}
async deleteImage(): Promise<ImagesPage> {
return test.step('Delete image from details', async () => {
const deleteButton = this.controlActions.getByRole('button', { name: 'Delete Image' });
await playExpect(deleteButton).toBeEnabled();
await deleteButton.click();
await handleConfirmationDialog(this.page);
return new ImagesPage(this.page);
});
}
}
```
Key points:
- Extends `DetailsPage` with resource name
- Tab locators scoped to inherited `this.tabs`
- Action buttons scoped to inherited `this.controlActions`
- Returns parent list page POM after destructive actions
## Example 10: Using test.use for Custom Runner Options
```typescript
import { RunnerOptions } from '/@/runner/runner-options';
import { test } from '/@/utility/fixtures';
// Disable specific extensions for this test file
test.use({
runnerOptions: new RunnerOptions({
customFolder: 'extension-test',
extensionsDisabled: ['compose', 'kind'],
autoUpdate: false,
autoCheckUpdates: false,
}),
});
// Tests in this file get an isolated Podman Desktop profile
// with compose and kind extensions disabled
```

View file

@ -0,0 +1,266 @@
# Framework Reference
Detailed reference for the Podman Desktop Playwright test framework internals.
## Runner Internals
### Singleton Pattern
`Runner` enforces a single Electron instance across all tests in a worker:
```typescript
const runner = await Runner.getInstance({ runnerOptions });
```
Internally this calls `electron.launch()` with options derived from `RunnerOptions`
and environment variables, then stores `firstWindow()` as the `page`.
### Launch Options
The runner resolves its launch configuration from:
1. `PODMAN_DESKTOP_BINARY` env var — packaged app path
2. `PODMAN_DESKTOP_ARGS` env var — path to repo root (dev mode, uses `node_modules/.bin/electron`)
3. `RunnerOptions` — profile directory, settings, extensions, DevTools
These are mutually exclusive: `PODMAN_DESKTOP_BINARY` takes precedence.
### Tracing and Video
- `runner.setVideoAndTraceName('feature-e2e')` — call in `beforeAll` to name artifacts
- On `runner.close()`: tracing stops, video saves, process terminates
- By default, traces and videos are deleted on pass unless `KEEP_TRACES_ON_PASS` / `KEEP_VIDEOS_ON_PASS` env vars are set, or `RunnerOptions` has `saveTracesOnPass: true` / `saveVideosOnPass: true`
### Browser Window Access
For Electron-specific checks:
```typescript
const browserWindow = await runner.getBrowserWindow();
const state = await runner.getBrowserWindowState();
// state: { isVisible, isDevToolsOpened, isCrashed, isFocused }
```
## RunnerOptions Full API
```typescript
new RunnerOptions({
profile: '', // Profile suffix
customFolder: 'podman-desktop', // Home directory subfolder
customOutputFolder: 'tests/playwright/output/',
openDevTools: 'none', // 'none' | 'right' | 'bottom' | 'undocked'
autoUpdate: true,
autoCheckUpdates: true,
extensionsDisabled: [], // Array of extension IDs to disable
aiLabModelUploadDisabled: false,
binaryPath: undefined, // Override binary path
saveTracesOnPass: false,
saveVideosOnPass: false,
customSettings: {}, // Injected into settings.json
});
```
The `createSettingsJson()` method serializes these into the settings file that
Runner writes to the profile directory before launch.
## Fixtures Internals
### How Fixtures Wire Together
```
runnerOptions (option, overridable via test.use)
└─→ runner (Runner.getInstance)
└─→ page (runner.getPage())
├─→ navigationBar (new NavigationBar(page))
├─→ welcomePage (new WelcomePage(page))
└─→ statusBar (new StatusBar(page))
```
### Overriding RunnerOptions
Use `test.use()` at the file level for custom profiles:
```typescript
import { RunnerOptions } from '/@/runner/runner-options';
import { test } from '/@/utility/fixtures';
test.use({
runnerOptions: new RunnerOptions({
customFolder: 'my-isolated-test',
extensionsDisabled: ['podman'],
}),
});
```
## Wait Utilities API
### waitUntil
Polls until a condition becomes `true`:
```typescript
await waitUntil(() => someAsyncCheck(), {
timeout: 5_000, // max wait (ms), default 5000
diff: 500, // polling interval (ms), default 500
sendError: true, // throw on timeout, default true
message: '', // custom error message
});
```
### waitWhile
Polls until a condition becomes `false`:
```typescript
await waitWhile(() => dialogIsStillOpen(), { timeout: 10_000, message: 'Dialog did not close' });
```
### waitForPodmanMachineStartup
Ensures Podman machine is running before tests proceed:
```typescript
await waitForPodmanMachineStartup(page, timeout);
```
This:
1. Creates a Podman machine via CLI if needed
2. Opens the Dashboard page
3. Waits for the status label to show "RUNNING"
4. If stuck in "STARTING", resets and retries once
## Operations Utility
`/@/utility/operations` provides workflow helpers used across specs:
- `handleConfirmationDialog(page, title?, confirm?, buttonName?, inputText?, timeout?, waitForClose?)` — handles modal confirmation dialogs
- `untagImagesFromPodman(imageName)` — CLI-based image untagging
- `deleteContainer(page, name)`, `deleteImage(page, name)` — cleanup helpers
- `createPodmanMachineFromCLI()`, `resetPodmanMachinesFromCLI()` — machine management
## Platform Utilities
```typescript
import { isLinux, isMac, isWindows, isCI } from '/@/utility/platform';
```
These are boolean constants, not functions. Use directly in `test.skip()`:
```typescript
test.skip(isLinux, 'Compose not supported on Linux CI');
test.skip(isCI && isMac, 'Flaky on macOS CI');
```
## Playwright Configuration
The config lives at the **repo root** (`playwright.config.ts`), not under `tests/playwright/`:
```typescript
export default defineConfig({
outputDir: 'tests/playwright/output/',
workers: 1,
timeout: 90_000,
reporter: [
['list'],
['junit', { outputFile: 'tests/playwright/output/junit-results.xml' }],
['json', { outputFile: 'tests/playwright/output/json-results.json' }],
['html', { open: 'never', outputFolder: 'tests/playwright/output/html-results/' }],
],
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
],
});
```
The `chromium` project is declared for tooling compatibility (`auth-utils.ts`).
The actual app under test is Electron, launched by `Runner` — not by Playwright's
project configuration.
Tracing and video are managed by `Runner`, not the config's `use` block.
## MainPage Shared Methods
`MainPage` provides methods inherited by all list pages:
- `pageIsEmpty()` — checks for "No Container Engine" or "No {title}" headings
- `noContainerEngine()` — checks engine availability
- `getAllTableRows()` — returns all `row` locators from the content table
- `getRowByName(name, exact?)` — finds a row by its ARIA label
- `waitForRowToExists(name, timeout?)` — polls until a row appears
- `waitForRowToBeDelete(name, timeout?)` — polls until a row disappears
- `countRowsFromTable()` — counts data rows (excludes header)
- `getRowsFromTableByStatus(status)` — filters rows by status cell content
- `checkAllRows()` / `uncheckAllRows()` — toggle selection checkbox
## DetailsPage Shared Methods
`DetailsPage` provides:
- `activateTab(tabName)` — clicks a tab in the detail view
- `closeButton` / `backLink` — breadcrumb navigation locators
- `heading` — scoped to the resource name
- `controlActions` — action button group in the header
## Locator Patterns in This Codebase
### Region-Scoped Locators
The Podman Desktop UI uses ARIA regions extensively. POMs scope locators to
their containing region:
```typescript
this.mainPage = page.getByRole('region', { name: 'images' });
this.header = this.mainPage.getByRole('region', { name: 'header' });
this.additionalActions = this.header.getByRole('group', { name: 'additionalActions' });
this.pullImageButton = this.additionalActions.getByRole('button', { name: 'Pull', exact: true });
```
### Row-Based Locators
Table rows are found by intersecting `getByRole('row')` with `getByLabel(name)`:
```typescript
const locator = this.page
.getByRole('row')
.and(this.page.getByLabel(name, { exact: true }))
.first();
```
### Force Clicks
Navigation links use `click({ force: true })` to bypass actionability checks
when the Electron app's focus state can be unreliable:
```typescript
await this.imagesLink.click({ force: true });
```
## Test Tags
Tags control which tests run in CI:
| Tag | Meaning |
| ----------------- | --------------------------------------------- |
| `@smoke` | Core smoke tests — always run |
| `@k8s_e2e` | Kubernetes tests — excluded from default runs |
| `@windows_sanity` | Windows-specific sanity checks |
| `@macos_sanity` | macOS-specific sanity checks |
Filter with `--grep` / `--grep-invert`:
```bash
npx playwright test --grep @smoke
npx playwright test --grep-invert @k8s_e2e
```
## CI/CD Patterns
- Tests run from the monorepo root with `xvfb-maybe` on Linux
- Single worker (`workers: 1`) — Electron app is a singleton
- `PODMAN_DESKTOP_BINARY` env var points to the packaged app in CI
- Output directory archived for traces, screenshots, and JUnit results
- Retries configured per-describe: `test.describe.configure({ retries: 2 })`

View file

@ -0,0 +1,474 @@
---
name: playwright-trace-analysis
description: >-
Analyzes Playwright trace archives (`trace.zip`) to diagnose test failures,
flaky behavior, and unexpected UI states using trace steps, console output,
network activity, and screenshots. Use when the user provides a trace path or
trace artifact, asks why a Playwright or E2E test failed, wants root-cause
analysis from CI artifacts, mentions the trace viewer, or asks whether a
failure is flaky or an application bug.
---
# Playwright Trace Analysis
## When to use
Apply when the user provides:
- A `trace.zip` path
- A trace artifact to inspect
- A failing Playwright/E2E test and asks for root-cause analysis from the trace
- Two traces to compare, such as passing vs failing or retry-0 vs retry-1
## Immediate behavior
If the user already provided a usable trace path or attached trace artifact, start analysis immediately.
Do **not** ask for extra context up front unless one of these is true:
- The trace path is missing
- The path is ambiguous or unresolved
- The user supplied multiple traces and did not say which one to analyze
Optional context like test title, CI log, expected behavior, or retry history can help, but it is not required for the first analysis pass.
## Inputs
- Absolute path to `trace.zip`
- Or a workspace-relative path you can resolve safely
- Optional: test title, spec file, CI snippet, expected behavior, retry history, second trace
If the user points to a directory instead of a zip, locate the trace archive inside it before analyzing. If multiple candidate zips exist, ask one focused follow-up question.
## MCP tools
Use the `user-playwright-analyzer` MCP server.
Before the first MCP call in a session, read the server tool descriptors from the Cursor MCP directory and use the schema exactly as written. Do not guess parameter names.
All current tools require `traceZipPath`.
| toolName | Use | Important parameters |
| --------------------------- | ------------------------------------------------------- | ---------------------------------- |
| `analyze-trace` | Combined first-pass overview. **Start here.** | — |
| `get-trace` | Step-by-step actions and console context | `filterPreset`, `raw` |
| `get-network-log` | Request/response details | `raw` |
| `get-screenshots` | Relevant screenshots around errors and critical actions | — |
| `view-screenshot` | Inspect one screenshot by filename | `filename` |
| `get-raw-trace-paginated` | Raw trace when filtered output is insufficient | `browserIndex`, `page`, `pageSize` |
| `get-raw-network-paginated` | Raw network when filtered output is insufficient | `browserIndex`, `page`, `pageSize` |
### MCP fallback — manually-created traces
Some test frameworks create traces manually using Playwright's tracing API (`tracing.start()` / `tracing.stop()`) rather than relying on Playwright's built-in per-test trace mechanism. These traces are structurally valid but may use naming conventions or internal layouts that the MCP tool does not recognize.
**When the MCP tool returns "No trace files found" or similar errors but the zip does contain `trace.trace` / `trace.network` files, fall back to manual analysis.** Do not assume the trace is empty or broken — verify by listing the zip contents first.
See the [Manual trace parsing](#manual-trace-parsing) section below and [reference.md](reference.md) for the detailed file format and parsing scripts.
### Escalation rules
Prefer the smallest useful call sequence:
1. `analyze-trace`
2. If the MCP tool returns errors or empty results, verify the zip contents (`unzip -l`) and fall back to [manual trace parsing](#manual-trace-parsing)
3. `get-trace` with `filterPreset: "minimal"` if the overview is not enough
4. One or more corroborating calls based on the failure signal:
- `get-screenshots` for locator, visibility, or wrong-page problems
- `get-network-log` for failed or missing requests
- `get-trace` with `filterPreset: "moderate"` for console-heavy or sequence-heavy failures
5. `get-trace` with `filterPreset: "conservative"` only if prior calls are still inconclusive
6. Raw paginated tools only as a last resort
Avoid jumping to `raw: true` early. Large raw payloads are harder to reason about and more likely to be truncated.
### Parallel tool calls
When the overview suggests you need multiple corroborating signals, call them in parallel rather than sequentially. For example, if a locator timed out and you suspect both a visual issue and a network issue, call `get-screenshots` and `get-network-log` in the same tool-call batch.
Good parallel combinations:
- `get-screenshots` + `get-network-log` — locator timeout with possible data-loading cause
- `get-screenshots` + `get-trace` (moderate) — wrong visual state with unknown trigger
- `get-network-log` + `get-trace` (moderate) — API failure with unclear console context
Do not parallelize calls that depend on each other's output (e.g., don't call `view-screenshot` until you know the filename from `get-screenshots`).
## Standard workflow
### Step 1: Run the overview
Call `analyze-trace` first and extract:
- The failing test or action if available
- The exact error text
- The first meaningful failing step
- Any obvious screenshot or network clues
- Action durations — note any step that took significantly longer than its peers
### Step 2: Read the test source
Once you know the failing test file and approximate line, read the relevant spec file and any page objects it uses. This gives you:
- **Intent**: what the test was trying to verify
- **Locator context**: whether the locator is reasonable or brittle
- **Assertion context**: whether the expected value still makes sense
- **Flow context**: what earlier steps should have set up the state for the failing assertion
If the test file path is not in the trace output, search the workspace for the test name or assertion text.
### Step 3: Find the first meaningful failure
Prioritize the earliest causal failure, not the later cascade.
Build a mental timeline by mapping:
1. The last successful action before the failure
2. Any console errors or warnings between success and failure
3. Any network requests initiated or completed in that window
4. The screenshot state at the moment of failure
Examples of likely causal signals:
- Assertion mismatch
- Locator timeout or actionability failure
- Navigation timeout or unexpected URL
- Console exception before the failing assertion
- 4xx/5xx request or a required request never being sent
- Action duration spike (a step taking 10x longer than similar steps)
### Step 4: Corroborate with additional signals
Before concluding, check at least one additional source unless the trace already contains a direct smoking gun.
Recommended pairings:
| Primary signal | Best corroboration |
| ----------------------------- | ------------------------------------------ |
| Locator timeout | Screenshots |
| Assertion mismatch | Network or console |
| Wrong page / navigation issue | Screenshots and network |
| Console exception | Trace step immediately before it |
| API failure | Network details and screenshot state |
| Slow action duration | Network log (pending request?) and console |
### Step 5: Correlate with code changes (when useful)
If the failure looks like a regression (test was previously passing), check recent changes:
- Run `git log --oneline -10 -- <failing-source-file>` on the app code the trace points to
- Run `git log --oneline -10 -- <spec-file>` on the test itself
- Check if the locator targets something that was recently renamed or restructured
This is especially valuable when the failure classification is "app bug" or "test bug" — it often reveals the introducing commit.
### Step 6: Classify the failure
Use one of these buckets:
- **App bug**: the trace shows the application produced the wrong state or errored
- **Test bug**: the trace shows the app behaved correctly but the test asserted the wrong thing or used a bad locator
- **Likely flaky**: the trace shows a timing-sensitive race, loading state, animation, or ordering issue
- **Environment / infra**: the failure is caused by CI runner state, missing dependencies, or external service unavailability
- **Unknown**: the available trace data is insufficient
Do not classify unless the trace supports it. State your confidence level explicitly.
### Step 7: Report
See the reporting contract below. Lead with the root cause, back every claim with trace evidence, and propose a specific fix.
## Decision guide
| What you see | What to do next |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| MCP returns "No trace files found" or similar error | List zip contents with `unzip -l`; if `trace.trace` exists, use [manual trace parsing](#manual-trace-parsing) |
| Clear assertion mismatch and obvious cause in overview | Report it; extra MCP calls may be unnecessary |
| Locator timeout or hidden element | Run `get-screenshots` |
| Overview mentions console errors but not enough context | Run `get-trace` with `filterPreset: "minimal"` or `"moderate"` |
| Network summary shows 4xx/5xx or missing response | Run `get-network-log` |
| Screenshot looks wrong but not enough detail | Run `view-screenshot` for the named frame |
| Filtered output omits the needed detail | Escalate to `conservative`, then raw paginated tools |
| Multiple browser sessions exist | Use `browserIndex` on paginated raw tools |
| Failure looks like a regression | Check git history for the affected file |
| Test source uses a brittle locator | Read the spec file and propose a resilient alternative |
| CI artifact is a nested zip (not a direct trace zip) | Extract the inner trace zip first, then analyze |
| Multiple runs fail the same way | Do **not** default to flaky; run [exhaustive console analysis](#exhaustive-console-analysis) across all traces |
## Common patterns
### Locator and actionability failures
- `waiting for locator(...)` then timeout: element never appeared, selector changed, or page never reached the expected state
- `not visible` / `not enabled`: overlay, modal, disabled control, or incomplete render
- `strict mode violation`: selector is too broad and matched multiple elements
Check screenshots first, then console or network if the UI looks incomplete.
### Assertion failures
- Expected text/value/count differs from actual: stale data, wrong element, race with data loading, or changed product behavior
- Expected visible but got hidden: render failure, delayed data, or transient UI state
Check whether the expected state arrives later than the assertion window before calling it flaky.
### Navigation failures
- `goto` or `waitForURL` timeout: redirect loop, app crash, auth redirect, slow load, or wrong expectation
- Unexpected page in screenshot: navigation intercepted or user flow diverged earlier
Check network and screenshots together.
### Network failures
- 4xx before assertion: auth/session/request contract issue
- 5xx: backend failure
- Request never sent: frontend logic never fired, earlier JS error blocked it, or user action failed
- CORS/preflight issue: cross-origin misconfiguration
### Timing and duration anomalies
- A single action taking 5-10x longer than peers: likely waiting on a network response, animation, or resource load
- Gradual slowdown across steps: possible memory leak or resource exhaustion
- Timeout at exactly the configured limit (e.g., 30000ms): the condition was never met, not just slow
### Electron-specific patterns
- **IPC failures**: console errors mentioning `ipcRenderer`, `ipcMain`, or channel names indicate broken communication between main and renderer processes
- **Webview loading**: if the test interacts with a webview, check whether the webview's `document` loaded (look for webview-related console messages or navigation events)
- **Multi-window issues**: Electron apps can have multiple `BrowserWindow` instances; verify the trace is from the correct window
- **Preload script errors**: errors during preload indicate the renderer lacks expected APIs — check console output for preload-related messages
### Flakiness indicators
Treat as likely flaky only when the trace suggests timing or nondeterminism, for example:
- Screenshot shows spinner/loading/skeleton instead of final UI
- Expected state appears after the timeout window
- Animation or transition seems to block the action
- Request ordering matters and looks variable
- Retry history or CI context indicates pass-on-retry behavior
If you suspect flakiness, say why and recommend the stabilization point, such as waiting for a specific response, element state, or post-animation condition.
### Deterministic failures across multiple runs
When multiple traces from separate CI runs are provided and they all fail the same way, **raise the bar significantly before classifying as flaky**. A failure that reproduces N/N times across independent runs is almost certainly deterministic. Even if the test has `continue-on-error: true` or is known to be occasionally flaky, consistent reproduction points to an app bug or environment regression — not timing luck.
In this scenario:
1. **Do not default to "likely flaky"** — consistent reproduction is strong counter-evidence against flakiness.
2. **Perform an exhaustive console log scan** (see [Exhaustive console analysis](#exhaustive-console-analysis) below) before drawing conclusions. The root cause often hides in a log-level message that a severity-filtered search misses.
3. **Look for a common causal event** across all traces rather than analyzing each in isolation. If the same console error, network failure, or UI state appears in every trace, that is almost certainly the root cause.
4. Classify as flaky only if the traces show genuinely different failure modes or if some runs pass and others fail.
## Reporting contract
Every analysis must include all of the sections below. The report should be structured so a developer can read it top-to-bottom in under 2 minutes and know exactly what happened, why, and what to do.
### Required sections
1. **Failure summary** — One or two sentences: what failed and the most likely cause.
2. **Event timeline** — A compact chronological sequence of the key events leading to the failure. Include timestamps or step numbers when available. This gives the reader the narrative arc.
3. **Evidence** — Each claim must cite a specific artifact from the trace. Use this format:
- `[trace step N]` — reference to a specific action or event in the trace
- `[screenshot: filename]` — reference to a screenshot, with a brief description of what it shows
- `[network: METHOD url → status]` — reference to a specific request
- `[console: level] message` — reference to a console log entry
4. **Root cause** — A confidence-labeled explanation. Format: `[Confirmed|Likely|Unknown] explanation`. If `Likely` or `Unknown`, briefly state what additional evidence would upgrade the confidence.
5. **What was ruled out** — Briefly list alternative hypotheses you investigated and why they don't fit. This builds trust in the conclusion and saves the developer from re-investigating dead ends.
6. **Recommended action** — A specific, actionable fix. When the fix is in test code, include the file path, the problematic line or locator, and the suggested replacement. When the fix is in application code, point to the relevant source file and describe the expected behavior change.
### Report template
Use markdown headers matching the required sections above. Cite evidence with these prefixes: `[trace step N]`, `[screenshot: filename]`, `[network: METHOD url → status]`, `[console: level] message`. See [reference.md](reference.md) for the full citation format reference.
For test code fixes, include the file path, problematic line/locator, and suggested replacement. For app code fixes, point to the relevant source file and describe the expected behavior change.
### Severity annotation (optional but encouraged)
When context is available, annotate the failure with severity:
- **Blocking**: test suite cannot proceed, or the failure indicates a critical app regression
- **Significant**: test fails reliably, indicating a real but non-critical issue
- **Minor**: cosmetic or low-impact, or the test itself is overly strict
- **Infra-only**: failure is caused by CI environment, not application or test code
## Multi-trace comparison
When two traces are provided:
1. Run `analyze-trace` on both (in parallel)
2. Find where their step sequences diverge
3. Compare screenshots and network behavior at the divergence point
4. Report the **delta**, not two separate full summaries
Focus on: "the failing trace diverges here, and this is the first difference that plausibly explains the failure."
### Retry-trace comparison
When Playwright retries produce multiple traces for the same test:
1. Compare the traces to determine whether the failure is consistent or intermittent
2. If the retry passes, focus on what differs — typically network timing, element ordering, or data availability
3. A consistent failure across retries is likely deterministic; a pass-on-retry is likely flaky
4. Report the specific divergence point and the stabilization needed
### Batch analysis
When multiple traces from a CI run are provided:
1. Run `analyze-trace` on each (in parallel, up to 3-4 at a time)
2. Look for common failure patterns — same error message, same failing API endpoint, same console exception
3. Group failures by root cause rather than reporting each individually
4. If a single root cause explains multiple failures, say so explicitly and list the affected tests
## If the trace is insufficient
State that directly. Good examples:
- "The trace shows the assertion timing out, but not why the data never loaded."
- "I can confirm the UI was still loading, but I cannot tell from this trace alone whether the delay came from the app or the test environment."
Then name the single best next action:
- Escalate `get-trace` to `moderate` or `conservative`
- Inspect `get-network-log` (possibly with `raw: true` if the filtered version omits relevant requests)
- Compare with a passing trace
- Review the failing locator or assertion in the test source
- Check for a video artifact alongside the trace
- Look at CI runner logs for environment issues (OOM, disk, network)
Do not leave the analysis open-ended. Always propose a concrete next step even when the trace is insufficient.
## Exhaustive console analysis
Console messages in Playwright traces carry a `messageType` field (`log`, `debug`, `info`, `warning`, `error`). **Do not filter solely by `error` or `warning` severity.** Application code frequently logs critical errors at `log` or `info` level — for example, a `catch` block that calls `console.log(\`Error while ...: ${err}\`)`instead of`console.error(...)`. Filtering only by severity will miss these, potentially causing you to misdiagnose the failure entirely.
### Required console scanning procedure
When performing manual trace parsing, always run **two passes** over console messages:
1. **Severity pass** — collect all `error` and `warning` messages.
2. **Keyword pass** — collect messages at **any** severity level whose text matches failure-related patterns. Use a broad keyword set:
```
error, fail, TypeError, ReferenceError, SyntaxError, reject, crash,
abort, ECONNREFUSED, ENOTFOUND, ETIMEDOUT, fetch failed, tls, cert,
ssl, socket, refused, timeout, 4xx, 5xx, unauthorized, forbidden,
not found, unreachable, cannot, unable
```
Report the union of both passes. When a message appears at an unexpected severity (e.g., an error message at `log` level), flag the mismatch explicitly — it often indicates a swallowed error in the application code that is central to the failure.
### Why this matters
A real-world example: `TypeError: fetch failed` from the Kubernetes client was logged via `console.log()` (not `console.error()`). Filtering only for `error`-level messages missed it entirely, leading to a misdiagnosis of "test flakiness / timing issue" when the actual root cause was the app's `fetch()` calls failing due to a build configuration change. The error was present in all traces and was the direct cause of "Cluster not reachable" — but it was invisible to a severity-only filter.
## Manual trace parsing
When the MCP tool cannot parse the trace (common with manually-created traces), analyze the files directly. The trace zip typically contains three components: `trace.trace`, `trace.network`, and `resources/` with screenshots.
### Step 1: Verify zip contents and extract
```bash
unzip -l /path/to/trace.zip | head -20
```
Look for `trace.trace`, `trace.network`, and `resources/*.jpeg`. If the trace zip is nested inside a CI artifact archive, extract the inner zip first.
### Step 2: Parse actions and locator resolutions from trace.trace
The `trace.trace` file is newline-delimited JSON. Each line is an object with a `type` field. The key types for failure analysis are `before` (action start), `after` (action result), `log` (Playwright internal logs), and `console` (browser console output). See [reference.md](reference.md) for the full format specification and ready-to-use parsing scripts.
Extract the action timeline and errors:
```bash
python3 -c "
import json
with open('trace.trace') as f:
for line in f:
obj = json.loads(line.strip())
t = obj.get('type', '')
if t == 'before':
cid = obj.get('callId', '')
api = obj.get('apiName', '')
sel = obj.get('params', {}).get('selector', '')[:100]
print(f'[{cid}] {api} selector={sel}')
elif t == 'after' and obj.get('error'):
print(f'[{obj[\"callId\"]}] ERROR: {obj[\"error\"]}')
elif t == 'log':
msg = obj.get('message', '')[:200]
if any(k in msg.lower() for k in ['error', 'fail', 'timeout', 'locator resolved']):
print(f' LOG: {msg}')
elif t == 'console':
args = obj.get('args', [])
text_parts = [a.get('preview', '') or a.get('value', '') for a in args]
text = ' '.join(str(p) for p in text_parts if p)[:300]
msg_type = obj.get('messageType', '')
# Always show error/warning level
if msg_type in ('error', 'warning'):
print(f' CONSOLE [{msg_type}]: {text}')
# Also show ANY level if text matches failure keywords
elif text and any(k in text.lower() for k in [
'error', 'fail', 'typeerror', 'referenceerror', 'reject',
'crash', 'abort', 'econnrefused', 'enotfound', 'etimedout',
'fetch failed', 'tls', 'cert', 'ssl', 'socket', 'refused',
'timeout', 'unauthorized', 'forbidden', 'unreachable',
'cannot', 'unable']):
print(f' CONSOLE [{msg_type}]: {text}')
"
```
**Important:** The console extraction above scans messages at **all** severity levels for failure-related keywords, not just `error`/`warning`. This is essential — application code may log critical errors via `console.log()` rather than `console.error()`. See [Exhaustive console analysis](#exhaustive-console-analysis) for the rationale.
The `log` entries with "locator resolved to" are critical — they show exactly which DOM element Playwright matched for each retry of an assertion. Repeated resolution to a hidden or wrong element (as seen in `.first()` matching a `class="hidden"` span) is a strong signal for locator bugs.
### Step 3: View screenshots at specific timestamps
Screenshot filenames encode timestamps: `page@<hash>-<timestamp>.jpeg`. Use the timestamps to correlate with trace events, or use `view-screenshot` from the MCP tool (which still works even when trace parsing fails).
### Step 4: Check network log
```bash
python3 -c "
import json
with open('trace.network') as f:
for line in f:
obj = json.loads(line.strip())
snap = obj.get('snapshot', {})
url = snap.get('request', {}).get('url', '')
status = snap.get('response', {}).get('status', '')
if not url.startswith('file://'):
print(f'{snap[\"request\"][\"method\"]} {url} -> {status}')
"
```
For Electron apps, the network log typically only captures renderer-process requests (local `file://` resource loads). API calls made by the main process (e.g., Octokit calls to GitHub) are not captured in the trace.
## CI artifact structure
CI artifacts nest traces inside larger archives. Extract the inner trace zip before analyzing. See [reference.md](reference.md) for the full layout, `json-results.json` parsing scripts, and `error-context.md` usage.
```bash
unzip -l artifact.zip | grep trace.zip
unzip artifact.zip "path/to/trace.zip" -d /tmp/analysis
```
## If MCP is unavailable
Fall back to the Playwright CLI viewer. See [reference.md](reference.md) for details.
```bash
pnpm exec playwright show-trace /absolute/path/to/trace.zip
```
## After analysis
- If the likely issue is in the Playwright spec, page object, or test config, follow the [playwright-testing skill](../playwright-testing/SKILL.md).
- If the trace points to application code, navigate to the relevant source and propose a fix grounded in the trace evidence.
- When proposing fixes, always include the specific file path and line reference — never leave the developer to hunt for the right location.
## Additional resources
- Extended tool details, signal correlation, and Electron-specific guidance: [reference.md](reference.md)

View file

@ -0,0 +1,516 @@
# Playwright Trace Analysis — Reference
## Agent behavior
If the user already supplied a usable `trace.zip` path or attached artifact, begin analysis immediately.
Ask a follow-up question only when:
- No trace path or artifact was provided
- The path cannot be resolved
- Multiple candidate trace archives exist and the target is unclear
Do not block the first pass on optional context like test name, CI logs, or expected behavior.
## Path handling
- Prefer absolute paths when calling MCP tools
- Resolve workspace-relative paths before the call
- If the user provides a directory, locate the relevant `trace.zip` inside it
- If more than one matching archive is present, ask one targeted clarification instead of guessing
## Trace archive layout
A `trace.zip` typically contains (layout varies by Playwright version):
| File/directory | Contents |
| --------------- | -------------------------------------------------------------------- |
| `trace.trace` | Newline-delimited JSON — actions, events, console logs, snapshots |
| `trace.network` | Newline-delimited JSON — HAR-like network request/response data |
| `resources/` | Screenshots (JPEG), snapshot HTML, and media referenced by the trace |
When MCP tools can parse the trace, use them. When they cannot (common with manually-created traces — see below), parse the files directly using the format specification in this section.
## Manually-created vs automatic traces
Playwright supports two trace creation modes:
1. **Automatic** (per-test): configured via `playwright.config.ts` with `trace: 'on'` or `trace: 'retain-on-failure'`. Playwright creates one trace per test with rich metadata (test name, step annotations, source locations). MCP tools are designed for this format.
2. **Manual** (API-driven): the test framework calls `page.context().tracing.start()` and `tracing.stop({ path })` explicitly. This produces a valid trace zip but may lack per-test metadata, use continuous recording across multiple tests, or use non-standard file naming. The MCP tool may report "No trace files found" for these.
**Always verify the zip contents with `unzip -l` before concluding a trace is empty.** If `trace.trace` and `trace.network` exist, the data is there — it just needs manual parsing.
## trace.trace file format
Newline-delimited JSON. Each line is a self-contained JSON object with a `type` field.
### Entry types
| Type | Description | Key fields |
| ------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------- |
| `context-options` | First line. Browser/Playwright config, env vars, launch args | `browserName`, `playwrightVersion`, `options.env` |
| `before` | Action started (click, fill, expect, etc.) | `callId`, `apiName`, `params.selector`, `wallTime` |
| `after` | Action completed | `callId`, `error` (present only on failure) |
| `log` | Playwright internal log (locator resolution, wait status) | `message` |
| `console` | Browser console output | `messageType` (`log`, `error`, `warning`, `debug`), `args[].preview` |
| `frame-snapshot` | DOM snapshot reference | `sha1` (references a file in `resources/`) |
| `screencast-frame` | Screenshot frame reference | `sha1`, `timestamp` |
| `input` | User input event | `type` (e.g., `mousedown`), coordinates |
### Critical fields for failure analysis
**`before` entries:**
```json
{
"type": "before",
"callId": "call@1716",
"apiName": "expect.toBeVisible",
"params": {
"selector": "internal:role=region[name=\"Onboarding Body\"i] >> internal:label=\"Onboarding Status Message\"i >> ...",
"isNot": false
},
"wallTime": 1774063988000
}
```
**`after` entries (with error):**
```json
{
"type": "after",
"callId": "call@1716",
"error": { "name": "Expect", "message": "Expect failed" }
}
```
**`log` entries — locator resolution:**
```
locator resolved to <span contenteditable="false" class="hidden s-qNHuh0m3pQVo">...</span>
```
These entries are the most diagnostic for locator bugs. When the same `callId` produces repeated `log` entries showing resolution to the same element, it means Playwright is retrying the assertion and consistently matching that element. If the element is hidden or wrong, this reveals the root cause.
**`console` entries:**
```json
{
"type": "console",
"messageType": "error",
"args": [{ "preview": "main ↪️", "type": "string" }]
}
```
Note: in Electron apps, console messages from the main process are forwarded to the renderer with a `main ↪️` prefix. These are often truncated in the `preview` field.
### Parsing scripts
**Full action timeline with errors and key logs:**
```python
import json
with open('trace.trace') as f:
for line in f:
obj = json.loads(line.strip())
t = obj.get('type', '')
if t == 'before':
cid = obj.get('callId', '')
api = obj.get('apiName', '')
sel = obj.get('params', {}).get('selector', '')[:120]
print(f'[{cid}] BEFORE {api} selector={sel}')
elif t == 'after':
cid = obj.get('callId', '')
err = obj.get('error')
if err:
print(f'[{cid}] AFTER error={err}')
elif t == 'log':
msg = obj.get('message', '')[:200]
if any(k in msg.lower() for k in ['error', 'fail', 'timeout', 'locator resolved']):
print(f' LOG: {msg}')
elif t == 'console':
args = obj.get('args', [])
text = args[0].get('preview', '')[:200] if args else ''
msgtype = obj.get('messageType', '')
if msgtype == 'error' or 'rate limit' in text.lower():
print(f' CONSOLE [{msgtype}]: {text}')
```
**Summary of entry types (useful for orientation):**
```python
import json
from collections import Counter
types = Counter()
with open('trace.trace') as f:
for line in f:
obj = json.loads(line.strip())
types[obj.get('type', 'unknown')] += 1
for t, c in types.most_common():
print(f'{t}: {c}')
```
## trace.network file format
Newline-delimited JSON. Each line is a `resource-snapshot` entry with HAR-like structure:
```json
{
"type": "resource-snapshot",
"snapshot": {
"pageref": "page@<hash>",
"startedDateTime": "2026-03-21T03:33:03.269Z",
"request": {
"method": "GET",
"url": "file:///path/to/resource.css",
"headers": [...]
},
"response": {
"status": 200,
"statusText": "OK",
"content": { "size": 168765, "mimeType": "text/css" }
}
}
}
```
**Electron caveat:** For Electron apps, the network log typically only captures renderer-process requests — local `file://` loads for CSS, JS, fonts, and images. API calls made by the main process (e.g., Octokit calls to GitHub, Docker API calls) are **not** captured because they run in Node.js, not the browser context. Do not expect to find external HTTP traffic here.
## Screenshot naming and timestamps
Screenshots in `resources/` follow the pattern:
```
page@<context-hash>-<unix-timestamp-ms>.jpeg
```
The timestamp is a Unix epoch in milliseconds. Use it to:
- Correlate screenshots with trace events (match against `wallTime` in `before` entries)
- Calculate elapsed time between screenshots
- Identify the visual state at any point during the test
To find screenshots around a specific event, compute the target timestamp from the trace and select the nearest screenshot filenames.
## CI artifact structure
CI runs typically package results in an outer archive containing multiple files. The trace zip is nested inside:
```
ci-artifact.zip
└── results/
└── podman-desktop/
├── traces/<name>_trace.zip ← the Playwright trace
├── videos/<name>.webm ← screen recording
├── html-results/ ← Playwright HTML report
├── json-results.json ← structured test results with errors
├── junit-results.xml ← JUnit XML for CI
├── output.log ← CI build/test output
└── <test-hash>/error-context.md ← page accessibility snapshot at failure
```
### json-results.json
Contains structured test results with the exact error message and locator call log. Parse it to extract failure details:
```python
import json
with open('json-results.json') as f:
data = json.load(f)
def walk(suites):
for suite in suites:
for spec in suite.get('specs', []):
for test in spec.get('tests', []):
for result in test.get('results', []):
if result.get('status') not in ('passed', 'skipped'):
error = result.get('error', {})
print(f"FAILED: {spec['title']}")
print(f" {error.get('message', '')[:500]}")
walk(suite.get('suites', []))
walk(data.get('suites', []))
```
The error message often contains the exact locator used, the element it resolved to, and the retry count — which can directly reveal the root cause without needing to parse the trace at all.
### error-context.md
Contains the page's accessibility tree (ARIA snapshot) at the moment of failure. This shows what Playwright "saw" in the DOM, which may differ from what was visually rendered. Key uses:
- Verify whether an expected element exists in the DOM
- Check element text content and ARIA attributes
- Identify whether a dialog or overlay is present in the DOM tree
- Compare against screenshots to find discrepancies between DOM state and visual state
## MCP tool parameter reference
All tools require `traceZipPath` (string): the absolute path to the trace zip.
### analyze-trace
No additional parameters. Returns a combined overview of execution steps, network summary, and key screenshots. Always call this first.
### get-trace
| Parameter | Type | Default | Description |
| -------------- | ----------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filterPreset` | `"minimal"` \| `"moderate"` \| `"conservative"` | `"minimal"` | Controls how much trace data is retained (see escalation below) |
| `raw` | boolean | `false` | When `true`, returns the complete unfiltered trace including all DOM snapshots. Overrides `filterPreset`. Use only as a last resort — output can be very large. |
**Filter preset escalation:**
1. `minimal` — maximum filtering. Removes DOM snapshots and redundant entries. Retains error logs, action steps, and basic console output. Start here.
2. `moderate` — retains more console logs, context around actions, and additional event metadata. Use when `minimal` doesn't show enough detail around the failure.
3. `conservative` — retains almost everything except raw DOM snapshots. Use for complex failures where prior levels are inconclusive.
4. `raw: true` — completely unfiltered. Only use when even `conservative` is insufficient. Prefer the paginated tool instead to avoid output truncation.
### get-network-log
| Parameter | Type | Default | Description |
| --------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------- |
| `raw` | boolean | `false` | When `true`, includes analytics, third-party services, and verbose metadata that are filtered out by default. |
The filtered (default) view removes noise from analytics trackers and third-party scripts, focusing on app-relevant HTTP traffic.
### get-screenshots
No additional parameters. Returns screenshots around errors and critical actions, intelligently filtered to avoid timeout-duplicate frames.
### view-screenshot
| Parameter | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------------------------------------------------- |
| `filename` | string | yes | Screenshot filename from the trace, e.g., `page@hash-timestamp.jpeg` |
Use when `get-screenshots` omitted a frame you need, or when `analyze-trace` references a filename you want to inspect closely.
### get-raw-trace-paginated
| Parameter | Type | Default | Description |
| -------------- | ------ | ------- | ------------------------------------------------ |
| `browserIndex` | number | `0` | Browser session index (for multi-browser traces) |
| `page` | number | `1` | Page number (1-based) |
| `pageSize` | number | `50` | Number of trace entries per page |
Use when filtered trace tools lack the detail you need. Paginate through the full raw trace without hitting output size limits. Start at page 1 and increment until you find the relevant section, or jump to later pages if you know the failure occurred late in the test.
### get-raw-network-paginated
| Parameter | Type | Default | Description |
| -------------- | ------ | ------- | ----------------------------------- |
| `browserIndex` | number | `0` | Browser session index |
| `page` | number | `1` | Page number (1-based) |
| `pageSize` | number | `20` | Number of network requests per page |
Same pagination approach as the raw trace tool. Useful when the filtered network log omits requests you suspect are relevant (e.g., requests to third-party auth providers).
## Signal correlation matrix
When diagnosing a failure, cross-reference signals from multiple sources:
| Primary signal | Secondary signal to check | What the combination reveals |
| ------------------------------- | -------------------------- | ----------------------------------------------------------------------- |
| Locator timeout (trace step) | Screenshot at failure time | Whether the page rendered at all, or rendered wrong content |
| Locator timeout (trace step) | Network log | Whether a required data-fetching call failed or is still pending |
| Assertion mismatch (trace step) | Console output | Whether a JS error prevented correct rendering |
| Assertion mismatch (trace step) | Network response body | Whether the API returned unexpected data |
| Console error/exception | Trace step before it | Which user action or navigation triggered the error |
| Network 4xx/5xx | Trace steps after it | Whether the test continued despite the failure (missing error handling) |
| Network timeout/no response | Screenshot | Whether the UI shows a loading state or error message |
| Blank page in screenshot | Console output | Whether there's an uncaught exception or module load failure |
| Wrong URL in trace step | Network log | Whether a redirect occurred or navigation was intercepted |
| Slow action duration | Network log at same time | Whether a pending request is blocking the UI |
| Slow action duration | Console output | Whether a heavy computation or error-retry loop is running |
| IPC/preload error in console | Trace steps around it | Which renderer action triggered the IPC failure |
## Minimal sufficient analysis
Unless the overview is already conclusive, a good first-pass analysis usually contains:
1. One `analyze-trace` result
2. The test source code read and understood
3. One or two corroborating signals from screenshots, console/steps, or network
4. A confidence-labeled conclusion with a concrete next step
Avoid dumping all available artifacts when one or two focused follow-up calls are enough.
## Source code correlation
After identifying the failing step, always read the test source to understand intent:
1. **Spec file**: read the test function containing the failure. Check whether the assertion and locator are reasonable given the current app state.
2. **Page objects**: if the failing action is in a POM method, read that method to understand what it does and what locators it uses.
3. **App source**: if the trace points to an app-side issue (wrong rendering, missing data, console exception), navigate to the relevant component or module.
This step prevents misdiagnosis. A locator timeout might look like an app bug from the trace alone, but reading the test source reveals the locator targets a removed element (test bug).
## Timing and duration analysis
Trace steps include duration information. Use it to identify:
| Duration pattern | Likely cause | Investigation |
| --------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
| Single step 5-10x slower than peers | Waiting on network, animation, or resource | Check network log for pending request at that time |
| Gradual slowdown across all steps | Memory leak, DOM bloat, or resource exhaustion | Check console for warnings; compare early vs late step durations |
| Step hits exact timeout (e.g., 30000ms) | Condition was never met | Focus on _why_ it wasn't met, not the timeout itself |
| All steps slow | CI runner under load, or app startup not complete | Check if the first action also took unusually long |
| Click takes >2s | Element not yet actionable, or animation in progress | Check screenshot for overlay, spinner, or disabled state |
## Interpreting screenshots
When viewing screenshots from `get-screenshots` or `view-screenshot`, look for:
| Visual signal | Implication |
| ------------------------------------- | ----------------------------------------------------------- |
| Blank/white page | App crashed, failed to load, or navigated to wrong URL |
| Loading spinner or skeleton UI | Data not loaded yet — timing issue, test asserted too early |
| Error dialog or toast notification | App-level error — read the message text |
| Modal or overlay blocking content | Locator is targeting an element behind the overlay |
| Different page than expected | Navigation didn't complete, or redirected elsewhere |
| Partial render (missing sections) | Component error or failed data dependency |
| Stale/old data displayed | Cache issue or API returned outdated response |
| Element present but visually obscured | CSS overlap, z-index issue, or off-screen position |
### Sequential screenshot comparison
When `get-screenshots` returns multiple frames, compare consecutive screenshots to understand state transitions:
- **What changed** between action N and action N+1? A new element appearing, data loading, a navigation.
- **What didn't change** when it should have? A click that didn't navigate, a form submission that didn't update the UI.
- **What disappeared** unexpectedly? An element that was present then removed by a re-render.
This before/after comparison is often the fastest way to pinpoint the exact moment things went wrong.
## Flakiness investigation
### Common flakiness patterns
| Pattern | How it manifests in trace | Stabilization approach |
| ------------------------------------ | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Race between data load and assertion | Assertion step fires while network request is still pending | Wait for the network response or use `expect` with auto-retry |
| Animation/transition timing | Click targets an element that's mid-animation | Add `waitFor({ state: 'stable' })` or wait for animation class removal |
| Non-deterministic list ordering | `toHaveText` fails because items rendered in different order | Sort before comparing, or use `toContainText` for individual items |
| Websocket reconnection | Console shows disconnect/reconnect around failure | Wait for connection re-establishment before asserting |
| Shared state between tests | Test passes in isolation but fails in suite | Check for missing cleanup in `afterEach`/`afterAll` |
| Viewport-dependent rendering | Element off-screen on CI runner's viewport size | Check viewport config; use `scrollIntoViewIfNeeded` |
| Stale Electron IPC state | First test passes, later test sees stale data from previous test's IPC calls | Ensure proper state reset between tests |
### Confirming flakiness vs deterministic failure
A failure is more likely **deterministic** if:
- It reproduces on every retry (check CI retry history).
- The trace shows a clear app error (500 response, unhandled exception).
- The expected value in the assertion is fundamentally wrong (code change broke the contract).
A failure is more likely **flaky** if:
- It passes on retry without code changes.
- The trace shows the correct state arriving _after_ the assertion timeout.
- Network response times vary significantly between runs.
### Retry trace analysis
When multiple trace files exist for the same test (retry-0, retry-1, etc.):
1. Run `analyze-trace` on each retry's trace in parallel
2. Identify whether the failure is identical across retries (same step, same error, same screenshot state)
3. If the failure differs between retries, focus on what varies — this points to the nondeterministic factor
4. If a later retry passes, the failing retry's trace shows the flaky window — identify the timing-sensitive point
## Electron and Podman Desktop patterns
### IPC communication failures
- Console messages containing `ipcRenderer`, `ipcMain`, or channel name strings indicate IPC issues
- A missing or undefined return value from an IPC call causes downstream rendering failures
- Check whether the preload script exposed the expected API by looking for preload-related console errors
### Webview interactions
- Webviews in Electron have separate document contexts; a locator targeting the main page won't find webview content
- If the trace shows a click on a webview element that doesn't respond, the webview may not have finished loading
- Look for webview navigation events and `dom-ready` signals in console output
### Extension loading
- Extensions load asynchronously; tests that depend on extension-provided UI must wait for the extension to activate
- Console messages about extension activation, provider registration, or extension errors are key signals
- A missing provider or command often means the extension failed to load rather than an app bug
### Multi-window
- Electron apps can spawn multiple `BrowserWindow` instances
- Verify the trace corresponds to the correct window (check URL, page title, or content in screenshots)
- If the trace shows actions on the wrong window, the test's page reference may have shifted
## Git history correlation
When a failure looks like a regression, use git history to narrow the cause:
```bash
git log --oneline -10 -- path/to/affected/file
git log --oneline --since="3 days ago" -- path/to/affected/directory/
```
Useful when:
- The test was previously passing and started failing without test code changes
- The locator targets something that may have been renamed or restructured
- The assertion's expected value may be outdated after a product change
Include the relevant commit in the report when it strengthens the root cause explanation.
## CI artifact locations
Traces from this project's CI are typically stored at:
```
tests/playwright/output/traces/<test-name>_trace.zip
```
The naming pattern is `{videoAndTraceName}_trace.zip`, set by the test runner. Traces for passing tests are removed by default unless `KEEP_TRACES_ON_PASS` is set.
Other CI artifacts that may complement trace analysis:
| Artifact | Location | Use |
| ----------- | ------------------------------------------- | ------------------------------------------------------------ |
| Video | `tests/playwright/output/videos/` | Shows real-time playback; useful for animation/timing issues |
| HTML report | `tests/playwright/output/html-results/` | Provides test-level pass/fail summary and embedded traces |
| JUnit XML | `tests/playwright/output/junit-results.xml` | Machine-readable results for CI integration |
| Screenshots | `tests/playwright/output/screenshots/` | Failure screenshots captured by Playwright config |
## CLI viewer
When MCP tools are unavailable:
```bash
pnpm exec playwright show-trace /absolute/path/to/trace.zip
```
The viewer provides:
- **Timeline**: visual step-by-step with duration bars
- **Actions**: each Playwright action with before/after screenshots
- **Console**: browser console output
- **Network**: request waterfall with timing
- **Source**: test source code highlighting the current line
Navigate to the failing step and work backwards from there.
## Evidence citation format
When writing the report, cite trace evidence consistently:
| Prefix | Format | Example |
| ---------- | -------------------------------- | ----------------------------------------------------------------------------------------- |
| Trace step | `[trace step N]` | `[trace step 14]: click on "Submit" button timed out after 30s` |
| Screenshot | `[screenshot: filename]` | `[screenshot: page@abc-1234.jpeg]: shows empty data table with loading spinner` |
| Network | `[network: METHOD url → status]` | `[network: GET /api/containers → 500]: server returned internal error` |
| Console | `[console: level] message` | `[console: error] "TypeError: Cannot read property 'map' of undefined"` |
| Duration | `[duration: step → time]` | `[duration: step 14 → 28500ms]: approaching 30s timeout, element never became actionable` |
| Source | `[source: file:line]` | `[source: containers.spec.ts:42]: assertion expects 3 rows but API returned empty array` |
This format makes it easy for the reader to trace each claim back to its evidence and re-inspect if needed.

View file

@ -3,7 +3,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>podman-desktop</id>
<version>1.23.1</version>
<version>1.26.2</version>
<title>Podman Desktop</title>
<authors>Florent Benoit</authors>
<owners>https://github.com/containers</owners>
@ -32,7 +32,7 @@
### You can also bring new features with Podman Desktop plug-ins or Docker Desktop extensions
</description>
<summary>Manage Podman and other container engines from a single UI and tray.</summary>
<releaseNotes>https://github.com/containers/podman-desktop/releases/expanded_assets/v1.23.1</releaseNotes>
<releaseNotes>https://github.com/podman-desktop/podman-desktop/releases/tag/v1.26.2</releaseNotes>
<copyright>2022 Red Hat, Inc</copyright>
<tags>podman desktop podman-machine containers ui</tags>
<packageSourceUrl>https://github.com/containers/podman-desktop/tree/main/.chocolatey</packageSourceUrl>

View file

@ -5,9 +5,9 @@ $packageArgs = @{
fileType = 'exe'
softwareName = 'PodmanDesktop'
url64bit = 'https://github.com/podman-desktop/podman-desktop/releases/download/v1.23.1/podman-desktop-1.23.1-setup.exe'
url64bit = 'https://github.com/podman-desktop/podman-desktop/releases/download/v1.26.2/podman-desktop-1.26.2-setup.exe'
checksumType = 'sha256'
checksum64 = '072a526c0adde75846e23202df75bb35f0241f1c73353d1da3ee02b9802ae974'
checksum64 = '6542e94a998e66309951b2dc7bfb26e54c8a9c92666f3209a478d9933a8ad523'
silentArgs = '/S'
validExitCodes = @(0)

View file

@ -1,7 +1,7 @@
import-module au
$version = $env:VERSION
$releases = 'https://github.com/containers/podman-desktop/releases/expanded_assets/v' + $version
$apiUrl = 'https://api.github.com/repos/containers/podman-desktop/releases/tags/' + 'v' + $version
function global:au_SearchReplace {
@{
@ -17,15 +17,21 @@ function global:au_SearchReplace {
}
function global:au_GetLatest {
$download_page = Invoke-WebRequest -Uri $releases
$release = Invoke-RestMethod -Uri $apiUrl -Headers @{ 'User-Agent' = 'PowerShell' }
$url64 = $download_page.links | ? href -match '-setup.exe$' | % href | select -First 1
$version = (Split-Path ( Split-Path $url64 ) -Leaf).Substring(1)
$asset = $release.assets | Where-Object { $_.name -match '-setup\.exe$' } | Select-Object -First 1
if (-not $asset) {
throw "no -setup.exe asset found for $version"
}
$url64 = $asset.browser_download_url
$releaseNotes = $release.html_url
@{
URL64 = 'https://github.com' + $url64
URL64 = $url64
Version = $version
ReleaseNotes = $releases
ReleaseNotes = $releaseNotes
}
}

1
.claude/skills Symbolic link
View file

@ -0,0 +1 @@
../.agents/skills

View file

@ -73,7 +73,7 @@ async function addElectronFuses(context) {
*
* @remarks it should be called in the beforePack to populate the folder extensions-extra before electron builder pack them
*/
async function packageRemoteExtensions() {
async function packageRemoteExtensions(context) {
const downloadScript = path.join('packages', 'main', 'dist', 'download-remote-extensions.cjs');
if (!fs.existsSync(downloadScript)) {
console.warn(`${downloadScript} not found, skipping remote extension download`);
@ -82,17 +82,23 @@ async function packageRemoteExtensions() {
const destination = path.resolve('./extensions-extra');
return new Promise((resolve, reject) => {
execFile('node', [downloadScript, `--output=${destination}`], (error, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error) {
reject(error);
} else {
resolve();
}
});
await new Promise((resolve, reject) => {
execFile(
'node',
[downloadScript, `--output=${destination}`],
{ maxBuffer: 10 * 1024 * 1024 }, // use 10MB else default size is too small and we get stdout maxBuffer length exceeded
(error, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error) {
reject(error);
} else {
resolve();
}
},
);
});
context.packager.config.extraResources.push('./extensions-extra/**');
}
/**
@ -114,7 +120,7 @@ const config = {
context.packager.config.extraResources = DEFAULT_ASSETS;
// download & package remote extensions
await packageRemoteExtensions();
await packageRemoteExtensions(context);
// include product.json
context.packager.config.extraResources.push({
@ -151,11 +157,11 @@ const config = {
});
// add podman installer
if (context.arch === Arch.x64) {
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-installer-windows-amd64.exe`);
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-installer-windows-amd64.msi`);
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-image-x64.zst`);
}
if (context.arch === Arch.arm64) {
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-installer-windows-arm64.exe`);
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-installer-windows-arm64.msi`);
context.packager.config.extraResources.push(`${PODMAN_EXTENSION_ASSETS}/podman-image-arm64.zst`);
}
}
@ -163,12 +169,7 @@ const config = {
afterPack: async context => {
await addElectronFuses(context);
},
files: [
'packages/**/dist/**',
'extensions-extra/**',
'extensions/**/builtin/*.cdix/**',
'packages/main/src/assets/**',
],
files: ['packages/**/dist/**', 'extensions/**/builtin/*.cdix/**', 'packages/main/src/assets/**'],
portable: {
artifactName: `${product.artifactName}${artifactNameSuffix}-\${version}-\${arch}.\${ext}`,
},
@ -205,6 +206,12 @@ const config = {
'--device=dri',
// Read/write home directory access
'--filesystem=home',
// Read-only access to /usr and /etc for managed-configuration support.
// Flatpak sandboxes these directories, so we can't use --filesystem=/usr/share/podman-desktop:ro directly.
// host-os:ro only exposes /usr and parts of /etc (not the full filesystem).
// See: https://github.com/flatpak/flatpak/issues/5575
// See: https://man7.org/linux/man-pages/man5/flatpak-metadata.5.html (host-os section)
'--filesystem=host-os:ro',
// Read podman socket
'--filesystem=xdg-run/podman:create',
// Read/write containers directory access (ability to save the application preferences)
@ -225,6 +232,8 @@ const config = {
'--talk-name=org.kde.StatusNotifierWatcher',
// Allow to interact with Flatpak system to execute commands outside the application's sandbox
'--talk-name=org.freedesktop.Flatpak',
// required to fix cursor scaling on wayland https://github.com/electron/electron/issues/19810 when the user uses --socket=wayland in their flatpak run
'--env=XCURSOR_PATH=/run/host/user-share/icons:/run/host/share/icons',
'--env=XDG_SESSION_TYPE=x11',
],
useWaylandFlags: 'false',
@ -239,19 +248,22 @@ const config = {
linux: {
category: 'Development',
icon: './buildResources/icon-512x512.png',
executableName: product.artifactName,
artifactName: `${product.artifactName}${artifactNameSuffix}-\${version}-\${arch}.\${ext}`,
target: ['flatpak', { target: 'tar.gz', arch: ['x64', 'arm64'] }],
},
mac: {
artifactName: `${product.artifactName}${artifactNameSuffix}-\${version}-\${arch}.\${ext}`,
hardenedRuntime: true,
entitlements: './node_modules/electron-builder-notarize/entitlements.mac.inherit.plist',
x64ArchFiles: 'Contents/Resources/app.asar.unpacked/**/*.node',
target: {
target: 'default',
arch: macosArches,
},
},
dmg: {
background: 'buildResources/dmg-background@2x.png',
background: 'buildResources/dmg-background.png',
window: {
width: 540,
height: 380,

View file

@ -1,4 +1,4 @@
{
"chrome": "98",
"node": "22"
"node": "24"
}

View file

@ -110,6 +110,10 @@
<content_rating type="oars-1.1" />
<update_contact>fbenoit_at_redhat_com</update_contact>
<releases>
<release version="1.27.0" date="2026-04-20"/>
<release version="1.26.0" date="2026-03-16"/>
<release version="1.25.0" date="2026-01-19"/>
<release version="1.24.0" date="2025-12-08"/>
<release version="1.23.0" date="2025-11-12"/>
<release version="1.22.0" date="2025-09-29"/>
<release version="1.21.0" date="2025-08-19"/>

View file

@ -1,5 +1,6 @@
name: UX Request
description: UX Request Form
type: UX (design spec)
labels: [UX/UI Issue, Graphic design]
projects: ["podman-desktop/4"]

View file

@ -1,7 +1,6 @@
name: Bug 🐞
description: Report a bug report
type: bug
labels: [kind/bug 🐞]
projects: ["podman-desktop/4"]
body:
@ -51,8 +50,12 @@ body:
label: Version
description: What version of the software are you running?
options:
- "1.23.0"
- "1.27.0"
- "next (development version)"
- "1.26.0"
- "1.25.0"
- "1.24.0"
- "1.23.0"
- "1.22.0"
- "1.21.x"
- "1.20.x"

View file

@ -1,7 +1,6 @@
name: Epic ⚡
description: A high-level feature
type: epic
labels: [kind/epic ⚡]
projects: ["podman-desktop/4","podman-desktop/7"]
body:

View file

@ -1,7 +1,6 @@
name: Feature 💡
description: A request, idea, or new functionality
type: feature
labels: [kind/feature 💡]
projects: ["podman-desktop/4"]
body:

View file

@ -67,4 +67,8 @@ updates:
- "typedoc"
- "typedoc-plugin-markdown"
- "docusaurus-plugin-typedoc"
xterm:
applies-to: version-updates
patterns:
- "@xterm/*"

32
.github/labeler.yml vendored
View file

@ -1,32 +0,0 @@
#
# Copyright (C) 2025 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# Visual changes
"area/ui":
- changed-files:
- any-glob-to-any-file:
- "packages/renderer/**/*"
- "packages/ui/**/*"
- "storybook/**/*"
- "**/*.svelte"
- "**/*.css"
# Website changes
"area/website":
- changed-files:
- any-glob-to-any-file:
- "website/**/*"

View file

@ -49,15 +49,15 @@ jobs:
# disable on forks as secrets are not available
if: github.event.repository.fork == false
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm

View file

@ -34,15 +34,15 @@ jobs:
if: github.event.repository.fork == false
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -52,6 +52,6 @@ jobs:
run: pnpm test:unit:coverage
- name: publish codecov report
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}

View file

@ -42,7 +42,7 @@ jobs:
releaseId: ${{ steps.create_release.outputs.id }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
token: ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
fetch-depth: 0
@ -92,7 +92,7 @@ jobs:
- name: Create Release
id: create_release
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0
with:
tag: ${{ steps.TAG_UTIL.outputs.githubTag }}
name: ${{ steps.TAG_UTIL.outputs.githubTag }}
@ -117,19 +117,19 @@ jobs:
os: [ubuntu-24.04, windows-2025, macos-15]
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: podman-desktop/testing-prereleases
ref: ${{ needs.tag.outputs.githubTag }}
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm

View file

@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
id: process-downloads
with:
script: |

View file

@ -58,13 +58,13 @@ jobs:
permissions:
checks: write # required for mikepenz/action-junit-report
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.organization }}/${{ github.event.inputs.repositoryName }}
ref: ${{ github.event.inputs.branch }}
if: github.event_name == 'workflow_dispatch'
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: github.event_name == 'push'
- name: Set the default provider type variable
@ -82,14 +82,14 @@ jobs:
- name: Setup testenv using external action
uses: podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -111,7 +111,7 @@ jobs:
pnpm test:e2e:k8s
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -121,7 +121,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: k8s-e2e-tests

View file

@ -28,14 +28,9 @@ on:
type: string
required: true
npm_target:
description: npm tests target
type: choice
default: 'all'
options:
- e2e
- kubernetes
- smoke
- all
description: 'TMT plan target to run (e.g. smoke, e2e, kubernetes, all)'
type: string
default: 'e2e'
jobs:
pd-e2e-testing-farm-ci:
@ -51,9 +46,11 @@ jobs:
env:
DEFAULT_NPM_TARGET: 'all'
DEFAULT_PODMAN_VERSION: 'latest'
DEFAULT_NODE_VERSION: 'v24.11.1'
run: |
echo "NPM_TARGET=${{ github.event.inputs.npm_target || env.DEFAULT_NPM_TARGET }}" >> $GITHUB_ENV
echo "PODMAN_VERSION=${{ github.event.inputs.podman_version || env.DEFAULT_PODMAN_VERSION }}" >> $GITHUB_ENV
echo "NODE_VERSION=${{ env.DEFAULT_NODE_VERSION }}" >> $GITHUB_ENV
- name: Run Podman Desktop Playwright E2E tests on Testing Farm CI
id: run-e2e-tf
@ -63,7 +60,7 @@ jobs:
create_github_summary: "false"
compose: ${{ matrix.fedora-version }}
tmt_plan_filter: 'name:/tests/tmt/plans/pd-e2e-plan/${{ env.NPM_TARGET }}'
variables: COMPOSE=${{ matrix.fedora-version }};ARCH=x86_64;PODMAN_VERSION=${{ env.PODMAN_VERSION }}
variables: COMPOSE=${{ matrix.fedora-version }};ARCH=x86_64;PODMAN_VERSION=${{ env.PODMAN_VERSION }};NODE_VERSION=${{ env.NODE_VERSION }}
- name: Extract Testing Farm work ID and base URL
if: always()
@ -85,7 +82,7 @@ jobs:
- name: Publish test report to PR
if: always()
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386
with:
fail_on_failure: true
include_passed: true
@ -125,7 +122,7 @@ jobs:
- name: Upload test artifacts
if: always()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7.0.1
with:
name: testing-farm-artifacts-${{ matrix.fedora-version }}
path: |

View file

@ -81,20 +81,24 @@ permissions:
jobs:
e2e-tests:
name: Run All E2E tests
name: Run E2E tests - ${{ matrix.installation }}
runs-on: ubuntu-24.04
# disable on forks as secrets are not available
if: github.event.repository.fork == false
permissions:
checks: write # required for mikepenz/action-junit-report
strategy:
fail-fast: false
matrix:
installation: [source-build, flatpak-build]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.organization }}/${{ github.event.inputs.repositoryName }}
ref: ${{ github.event.inputs.branch }}
if: github.event_name == 'workflow_dispatch'
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: github.event_name == 'push'
- name: Set the default env. variables
@ -114,20 +118,29 @@ jobs:
- name: Setup testenv using external action
uses: podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
run: pnpm install
- name: Install flatpak build dependencies
if: matrix.installation == 'flatpak-build'
run: |
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder elfutils
flatpak remote-add --if-not-exists flathub --user https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.flatpak.Builder org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
- name: Run E2E tests in Production Mode
if: matrix.installation == 'source-build'
env:
PODMANDESKTOP_CI_BOT_TOKEN: ${{ secrets.PODMANDESKTOP_CI_BOT_TOKEN }}
TEST_PODMAN_MACHINE: 'true'
@ -142,8 +155,27 @@ jobs:
export PODMAN_DESKTOP_BINARY=$path
pnpm ${{ env.NPM_TARGET }}
- name: Run E2E tests on Flatpak bundle
if: matrix.installation == 'flatpak-build'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PODMANDESKTOP_CI_BOT_TOKEN: ${{ secrets.PODMANDESKTOP_CI_BOT_TOKEN }}
TEST_PODMAN_MACHINE: 'true'
SKIP_KIND_INSTALL: 'true'
KIND_PROVIDER_GHA: ${{ env.KIND_PROVIDER }}
ELECTRON_ENABLE_INSPECT: true
run: |
echo "Building Podman Desktop flatpak bundle"
pnpm compile:current --linux flatpak
echo "Installing built flatpak bundle"
flatpak install --bundle --user -y dist/*.flatpak
path=$(realpath $(flatpak info --show-location io.podman_desktop.PodmanDesktop)/files/lib/io.podman_desktop.PodmanDesktop/podman-desktop)
echo "Podman Desktop flatpak binary: $path"
export PODMAN_DESKTOP_BINARY=$path
pnpm ${{ env.NPM_TARGET }}
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -153,10 +185,10 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: e2e-tests
name: e2e-tests-${{ matrix.installation }}
path: |
./tests/**/output/
!./tests/**/traces/raw
@ -189,23 +221,23 @@ jobs:
echo "UPDATE_TARGET_REPO=${{ github.event.inputs.update_target_repo || env.DEFAULT_UPDATE_TARGET_REPO }}" >> $env:GITHUB_ENV
echo "UPDATE_PRERELEASE=${{ github.event.inputs.update_prerelease || env.DEFAULT_UPDATE_PRERELEASE }}" >> $env:GITHUB_ENV
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.organization }}/${{ github.event.inputs.repositoryName }}
ref: ${{ github.event.inputs.branch }}
if: github.event_name == 'workflow_dispatch'
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: github.event_name == 'push'
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -250,7 +282,7 @@ jobs:
Set-Content -ErrorAction Stop $updateFile
echo "Show app-update.yml after replace..."
cat "$env:PD_DIST_PATH/resources/app-update.yml"
- name: Run E2E Update test
env:
INSTALLATION_TYPE: ${{ matrix.installation }}
@ -260,7 +292,7 @@ jobs:
pnpm test:e2e:update:run
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -270,7 +302,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: ${{ matrix.os }}-update-e2e-test-${{ matrix.installation }}
@ -282,8 +314,8 @@ jobs:
name: ${{ matrix.os }} update e2e tests
strategy:
fail-fast: false
matrix:
os: [macos-15, macos-13]
matrix:
os: [macos-26, macos-15-intel]
runs-on: ${{ matrix.os }}
# disable on forks as secrets are not available
if: github.event.repository.fork == false
@ -301,23 +333,23 @@ jobs:
echo "UPDATE_TARGET_REPO=${{ github.event.inputs.update_target_repo || env.DEFAULT_UPDATE_TARGET_REPO }}" >> $GITHUB_ENV
echo "UPDATE_PRERELEASE=${{ github.event.inputs.update_prerelease || env.DEFAULT_UPDATE_PRERELEASE }}" >> $GITHUB_ENV
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.organization }}/${{ github.event.inputs.repositoryName }}
ref: ${{ github.event.inputs.branch }}
if: github.event_name == 'workflow_dispatch'
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: github.event_name == 'push'
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -371,7 +403,7 @@ jobs:
pnpm test:e2e:update:run
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -381,7 +413,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: ${{ matrix.os }}-update-e2e-test

View file

@ -0,0 +1,99 @@
name: Managed configuration tests
on:
workflow_dispatch: {}
push:
branches: [ main ]
jobs:
managed-configuration:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Managed configuration tests - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: ${{ matrix.timeout }}
strategy:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'macos-latest', 'windows-2025' ]
timeout: [ 15 ]
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup testenv using external action
uses: podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a
- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
with:
run_install: false
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
# --- OS-specific administrative setup ---
- name: Linux managed configuration files
if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
echo "Managed configuration set-up for Linux"
sudo mkdir -p /usr/share/podman-desktop
sudo cp tests/playwright/resources/managed-configuration/default-settings.json /usr/share/podman-desktop/default-settings.json
sudo cp tests/playwright/resources/managed-configuration/locked.json /usr/share/podman-desktop/locked.json
echo "Default settings:" && sudo cat /usr/share/podman-desktop/default-settings.json
echo "Locked settings:" && sudo cat /usr/share/podman-desktop/locked.json
- name: MacOS managed configuration files
if: ${{ startsWith(matrix.os, 'macos') }}
run: |
echo "Managed configuration set-up for macOS"
sudo mkdir -p /Library/Application\ Support/io.podman_desktop.PodmanDesktop/
sudo cp tests/playwright/resources/managed-configuration/default-settings.json "/Library/Application Support/io.podman_desktop.PodmanDesktop/default-settings.json"
sudo cp tests/playwright/resources/managed-configuration/locked.json "/Library/Application Support/io.podman_desktop.PodmanDesktop/locked.json"
echo "Default settings:" && sudo cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/default-settings.json
echo "Locked settings:" && sudo cat /Library/Application\ Support/io.podman_desktop.PodmanDesktop/locked.json
- name: Windows managed configuration files
if: ${{ startsWith(matrix.os, 'windows') }}
shell: pwsh
run: |
Write-Host "Managed configuration set-up for Windows"
$managedDir = Join-Path $env:ProgramData 'Podman Desktop'
New-Item -Path $managedDir -ItemType Directory -Force | Out-Null
Copy-Item -Path 'tests\playwright\resources\managed-configuration\default-settings.json' -Destination (Join-Path $managedDir 'default-settings.json') -Force
Copy-Item -Path 'tests\playwright\resources\managed-configuration\locked.json' -Destination (Join-Path $managedDir 'locked.json') -Force
Write-Host "Default settings:"
Get-Content -Path (Join-Path $managedDir 'default-settings.json')
Write-Host "Locked settings:"
Get-Content -Path (Join-Path $managedDir 'locked.json')
# ========================================
- name: Run managed configuration spec
shell: bash
run: |
echo "Runner OS: $RUNNER_OS, matrix.os: ${{ matrix.os }}"
pnpm test:e2e:managed-configuration
- name: Publish Test Report
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always()
with:
fail_on_failure: true
include_passed: true
detailed_summary: true
annotate_only: true
require_tests: true
report_paths: '**/*results.xml'
- name: Upload artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: managed-configuration-${{ matrix.os }}
path: |
./tests/**/output/
!./tests/**/traces/raw

View file

@ -43,7 +43,7 @@ jobs:
releaseId: ${{ steps.create_release.outputs.id}}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
token: ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
fetch-depth: 0
@ -65,10 +65,11 @@ jobs:
git config --local user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" package.json
find extensions/* -maxdepth 2 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" {}
find packages/* -maxdepth 1 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" {}
# change the repository field to be the prerelease repository in package.json file
sed -i "s#\"repository\":\ \"\(.*\)\",#\"repository\":\ \"https://github.com/podman-desktop/prereleases\",#g" package.json
cat package.json
git add package.json extensions/*/package.json
git add package.json extensions/*/package.json extensions/*/packages/extension/package.json packages/*/package.json
git commit -m "chore: tag ${{ steps.TAG_UTIL.outputs.githubTag }}"
echo "Tagging with ${{ steps.TAG_UTIL.outputs.githubTag }}"
git tag ${{ steps.TAG_UTIL.outputs.githubTag }}
@ -78,14 +79,14 @@ jobs:
- name: Create Release
id: create_release
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0
with:
tag: ${{ steps.TAG_UTIL.outputs.githubTag }}
name: ${{ steps.TAG_UTIL.outputs.githubTag }}
draft: true
prerelease: true
owner: containers
repo: podman-desktop-prereleases
owner: podman-desktop
repo: prereleases
token: ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
build:
@ -98,22 +99,22 @@ jobs:
os: [windows-2025, ubuntu-24.04, macos-15]
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: podman-desktop/prereleases
ref: ${{ needs.tag.outputs.githubTag}}
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.x"
@ -173,5 +174,5 @@ jobs:
GITHUB_TOKEN: ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
with:
id: ${{ needs.tag.outputs.releaseId}}
repo: podman-desktop-prereleases
repo: prereleases
owner: podman-desktop

View file

@ -38,7 +38,7 @@ jobs:
github-tag: ${{ steps.set-version.outputs.github-tag }}
is-tag: ${{ steps.set-version.outputs.is-tag }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set version / dist-tag depending on ref
id: set-version
@ -83,14 +83,14 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24 # 24.x for npm publish with OIDC
cache: 'pnpm'

View file

@ -20,7 +20,6 @@ name: pr-check
on:
merge_group:
pull_request:
types: [labeled, synchronize, opened, ready_for_review, reopened]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@ -38,16 +37,16 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -60,22 +59,22 @@ jobs:
- name: List Build
run: ls ./dist/
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: windows-installer-x64
path: ./dist/podman-desktop*-setup-x64.exe
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: windows-installer-arm64
path: ./dist/podman-desktop*-setup-arm64.exe
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: windows-exe-x64
path: ./dist/podman-desktop*-next-x64.exe
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: windows-exe-arm64
path: ./dist/podman-desktop*-next-arm64.exe
@ -88,16 +87,16 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -119,12 +118,12 @@ jobs:
- name: List Build
run: ls -la ./dist/
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: linux
path: ./dist/podman-desktop-*.tar.gz
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: flatpak
path: ./dist/podman-desktop-*.flatpak
@ -137,16 +136,16 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -159,15 +158,15 @@ jobs:
- name: List Build
run: ls -la ./dist/
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: macos-x64-dmg
path: ./dist/podman-desktop-*x64.dmg
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: macos-arm64-dmg
path: ./dist/podman-desktop-*arm64.dmg
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: macos-universal-dmg
path: ./dist/podman-desktop-*universal.dmg
@ -177,15 +176,15 @@ jobs:
name: build website
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -200,7 +199,7 @@ jobs:
echo "${{ github.event.pull_request.head.sha }}" > PR_SHA
- name: Upload artifact website-content
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: website-content
path: |
@ -214,15 +213,15 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 40
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -234,6 +233,9 @@ jobs:
- name: Run formatter
run: pnpm format:check
- name: Generate schemas
run: pnpm generate:schemas
# Check we don't have changes in git
- name: Check no changes in git
run: |
@ -248,15 +250,15 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 40
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -275,15 +277,15 @@ jobs:
matrix:
os: [windows-2025, ubuntu-24.04, macos-15]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -302,7 +304,7 @@ jobs:
# publish codecov report if linux
- name: publish codecov report
if: ${{ matrix.os=='ubuntu-24.04' }}
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
with:
token: ${{ secrets.CODECOV_TOKEN }}
@ -311,10 +313,11 @@ jobs:
name: smoke e2e tests
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
mode: [production, development]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install Podman v5 using external action
# Use the action from the other repository
@ -325,14 +328,14 @@ jobs:
- name: Setup testenv using external action
uses: podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -351,7 +354,7 @@ jobs:
pnpm test:e2e:smoke
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -361,7 +364,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: ${{ matrix.mode }}-smoke-e2e-tests
@ -374,21 +377,21 @@ jobs:
name: windows sanity check e2e tests
runs-on: windows-2025
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install latest Podman version using external action
uses: redhat-actions/podman-install@15cb93f5a6b78a758fd8f4d1cecbf6651d4bcea3
uses: redhat-actions/podman-install@38597414074271e07efa9fb2292cff7eea8d374d
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -398,7 +401,7 @@ jobs:
run: pnpm test:e2e:windows-sanity
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -408,7 +411,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: windows-sanity-e2e-tests
@ -416,13 +419,58 @@ jobs:
./tests/**/output/
!./tests/**/traces/raw
macos-sanity-check-e2e-tests:
if: ${{ contains(github.event.pull_request.labels.*.name, 'area/ci') || !github.event.pull_request.draft }}
name: macos sanity check e2e tests
runs-on: macos-26
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
timeout-minutes: 60
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
run: pnpm install
- name: Run macOS Sanity Check E2E tests in Development Mode
run: pnpm test:e2e:macos-sanity
- name: Publish Test Report
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
include_passed: true
detailed_summary: true
annotate_only: true
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: macos-sanity-e2e-tests
path: |
./tests/**/output/
!./tests/**/traces/raw
k8s-sanity-e2e-tests:
if: ${{ contains(github.event.pull_request.labels.*.name, 'area/ci') || !github.event.pull_request.draft }}
name: k8s sanity e2e tests
runs-on: ubuntu-24.04
continue-on-error: true
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set the default provider type variable
env:
@ -438,14 +486,14 @@ jobs:
- name: Setup testenv using external action
uses: podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -458,7 +506,7 @@ jobs:
run: pnpm test:e2e:k8s-sanity
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -468,7 +516,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: k8s-sanity-e2e-tests
@ -484,7 +532,7 @@ jobs:
pnpm_lock_changed: ${{ steps.pnpm_changed.outputs.PNPM_LOCK_CHANGED }}
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
@ -512,16 +560,16 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -559,7 +607,7 @@ jobs:
pnpm test:e2e:update:run
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -569,7 +617,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: ${{ matrix.os }}-update-e2e-test
@ -584,22 +632,22 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-15, macos-13]
os: [macos-26, macos-15-intel]
runs-on: ${{ matrix.os }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm
@ -650,7 +698,7 @@ jobs:
pnpm test:e2e:update:run
- name: Publish Test Report
uses: mikepenz/action-junit-report@e08919a3b1fb83a78393dfb775a9c37f17d8eea6 # v6.0.1
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
if: always() # always run even if the previous step fails
with:
fail_on_failure: true
@ -660,7 +708,7 @@ jobs:
require_tests: true
report_paths: '**/*results.xml'
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: ${{ matrix.os}}-update-e2e-test

View file

@ -1,36 +0,0 @@
#
# Copyright (C) 2025 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
name: "PR Labeler"
on:
pull_request_target:
types: [labeled, synchronize, opened, ready_for_review, reopened]
permissions:
contents: read
pull-requests: write
jobs:
labeler:
runs-on: ubuntu-24.04
steps:
- name: Labeler
uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b
with:
repo-token: "${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}"
configuration-path: .github/labeler.yml

View file

@ -37,7 +37,7 @@ jobs:
name: Publish Podman Desktop to flathub
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: 'flathub/io.podman_desktop.PodmanDesktop'
ref: 'master'

View file

@ -68,7 +68,7 @@ jobs:
run:
shell: powershell
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install the Chocolatey Automatic Package Updater Module
run: choco install au -y
- name: Build the Podman Desktop chocolatey Package by making sure we're using the latest release

View file

@ -55,7 +55,7 @@ jobs:
version="${version:1}"
fi
echo "desktopVersion=$version" >> ${GITHUB_OUTPUT}
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: containers/podman.io
ref: refs/heads/main

View file

@ -36,7 +36,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download website content artifact
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
uses: dawidd6/action-download-artifact@8305c0f1062bb0d184d09ef4493ecb9288447732 # v20
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
name: website-content

View file

@ -36,7 +36,7 @@ jobs:
contents: write
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ env.RELEASE_TAG }}
@ -48,7 +48,7 @@ jobs:
artifact-name: podman-desktop-sbom.spdx.json
- name: Upload sbom file to release
uses: svenstaro/upload-release-action@6b7fa9f267e90b50a19fef07b3596790bb941741 # v2
uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./podman-desktop-sbom.spdx.json

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2022-2024 Red Hat, Inc.
# Copyright (C) 2022-2025 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -47,9 +47,10 @@ jobs:
releaseId: ${{ steps.create_release.outputs.id}}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.inputs.branch }}
token: ${{ secrets.PODMAN_DESKTOP_BOT_TOKEN }}
- name: Generate tag utilities
id: TAG_UTIL
run: |
@ -63,8 +64,9 @@ jobs:
# Add the new version in package.json file
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" package.json
find packages/* -maxdepth 1 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" {}
find extensions/* -maxdepth 5 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.desktopVersion }}\",#g" {}
git add package.json extensions/*/package.json extensions/*/packages/extension/package.json
git add package.json extensions/*/package.json extensions/*/packages/extension/package.json packages/*/package.json
# Update the issue template with the new version and move old version below
nextVersionLineNumber=$(grep -n "next (development version)" .github/ISSUE_TEMPLATE/bug_report.yml | cut -d ":" -f 1 | head -n 1)
@ -91,7 +93,7 @@ jobs:
git push origin ${{ steps.TAG_UTIL.outputs.githubTag }}
- name: Create Release
id: create_release
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@ -112,7 +114,9 @@ jobs:
git checkout -b "${bumpedBranchName}"
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${bumpedVersion}-next\",#g" package.json
find extensions/* -maxdepth 5 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${bumpedVersion}-next\",#g" {}
git add package.json extensions/*/package.json extensions/*/packages/extension/package.json
find packages/* -maxdepth 1 -name "package.json" | xargs -I {} sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${bumpedVersion}-next\",#g" {}
git add package.json extensions/*/package.json extensions/*/packages/extension/package.json packages/*/package.json
git commit -s --amend -m "chore: bump version to ${bumpedVersion}"
git push origin "${bumpedBranchName}"
echo -e "📢 Bump version to ${bumpedVersion}\n\n${{ steps.TAG_UTIL.outputs.desktopVersion }} has been released.\n\n Time to switch to the new ${bumpedVersion} version 🥳" > /tmp/pr-title
@ -145,21 +149,21 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ needs.tag.outputs.githubTag}}
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.x"
@ -233,22 +237,22 @@ jobs:
arch: [amd64, arm64]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ needs.tag.outputs.githubTag}}
- name: Set up QEMU
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
- name: create the pnpm store from the dependencies
run: |
podman run --platform linux/${{ matrix.arch }} -v $(pwd):/project --rm -it --entrypoint=sh node:22 -c "cd /project && npm install -g corepack@latest && corepack enable pnpm && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 pnpm install --frozen-lockfile --store-dir pnpm-store"
podman run --platform linux/${{ matrix.arch }} -v $(pwd):/project --rm -it --entrypoint=sh node:24 -c "cd /project && npm install -g corepack@latest && corepack enable pnpm && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 pnpm install --frozen-lockfile --store-dir pnpm-store"
# now the store is in the pnpm-store directory
# create a tarball of the store
echo "Creating the archive store-cache-pnpm-${{ matrix.arch }}.tgz"
tar -czf store-cache-pnpm-${{ matrix.arch }}.tgz pnpm-store
- name: Upload binaries to release
uses: svenstaro/upload-release-action@6b7fa9f267e90b50a19fef07b3596790bb941741 # v2
uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: store-cache-pnpm-${{ matrix.arch }}.tgz

View file

@ -47,7 +47,7 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
@ -61,7 +61,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: SARIF file
path: results.sarif
@ -70,6 +70,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v3.29.5
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v3.29.5
with:
sarif_file: results.sarif

View file

@ -33,7 +33,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Please refer to https://github.com/actions/stale/

View file

@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Checkout Repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Get current Podman version
id: get_current_version
run: |
@ -45,9 +45,9 @@ jobs:
echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV
echo "$ASSETS" > assets.txt
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
- name: Compare version numbers using semver
id: compare_version_numbers

View file

@ -45,17 +45,17 @@ jobs:
if: github.event.repository.fork == false
timeout-minutes: 60
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ needs.tag.outputs.githubTag}}
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
name: Install pnpm
with:
run_install: false
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 22
node-version: 24
cache: 'pnpm'
- name: Execute pnpm

2
.gitignore vendored
View file

@ -15,3 +15,5 @@ dist
yarn.lock
extensions/podman/assets/
extensions-extra/
__mocks__/@podman-desktop/api.ts
contexts/meta/

2
.nvmrc
View file

@ -1 +1 @@
22
24

286
AGENTS.md Normal file
View file

@ -0,0 +1,286 @@
# AGENTS.md
This file provides guidance for AI agents working with Podman Desktop code in this repository.
## Overview
Podman Desktop is a graphical desktop application for managing containers and Kubernetes. It's built with:
- **Frontend:** Svelte 5+ and TypeScript
- **Runtime:** Electron (multi-process architecture)
- **Styling:** Tailwind CSS 4+
- **Build tooling:** Vite 7+ and pnpm 10+ workspaces
> **Note:** Version numbers indicate minimum supported versions. The project supports these versions and higher.
The application supports multiple container engines (Podman, Docker, Lima, CRC) and can be extended through a plugin-based extension system.
## Quick Start
```bash
# Prerequisites: Node.js 24+, pnpm 10.x
pnpm install # Install all dependencies
pnpm watch # Start development with hot reload
pnpm compile:current # Build production binary for local platform
```
**macOS Note:** After compiling, ad-hoc sign the binary:
```bash
codesign --force --deep --sign - "dist/mac-arm64/Podman Desktop.app"
```
## Essential Commands
### Development & Build
```bash
pnpm watch # Development mode with hot reload
pnpm build # Build all packages
pnpm build:main # Build main process only
pnpm build:renderer # Build renderer process only
pnpm build:extensions # Build all built-in extensions
pnpm build:ui # Build UI component library
pnpm compile:current # Create production binary for current platform
```
> **Note:** Additional build targets are available. See `package.json` for the complete list.
### Testing
Unit tests use **Vitest**. E2E tests use **Playwright**.
```bash
# Unit Tests (Vitest)
pnpm test:unit # Run all unit tests
pnpm test:unit:coverage # Run with coverage report
pnpm test:watch # Watch mode for development
pnpm test:main # Test main process only
pnpm test:renderer # Test renderer process only
pnpm test:ui # Test UI components
pnpm test:preload # Test preload scripts
pnpm test:extensions # Test all extensions
# Run a single test file (Vitest)
pnpm exec vitest run path/to/test-file.spec.ts
# E2E Tests (Playwright)
pnpm test:e2e # Full E2E suite (excludes @k8s_e2e)
pnpm test:e2e:smoke # Smoke tests only
pnpm test:e2e:extension # Extension installation tests
# View E2E Results
pnpm exec playwright show-report tests/playwright/output/html-results
```
### Code Quality
```bash
# Run before committing
pnpm lint-staged # Lint and format staged files
# Individual checks
pnpm typecheck # TypeScript type checking (all packages)
pnpm lint:check # ESLint check
pnpm lint:fix # ESLint auto-fix
pnpm format:check # Biome + Prettier check
pnpm format:fix # Biome + Prettier auto-fix
```
## Architecture
Podman Desktop follows Electron's multi-process architecture with a pnpm monorepo structure.
### Process Architecture
**Main Process** (`packages/main`)
- Node.js backend environment
- Container engine integrations (Podman, Docker, Lima)
- Kubernetes provider management
- Extension system host
- System tray and menu management
**Renderer Process** (`packages/renderer`)
- Svelte 5+ UI application
- Runs in Chromium environment
- Communicates with main via IPC
**Preload Scripts** (`packages/preload*`)
- Security bridge between main and renderer
- Exposes safe APIs to renderer
- Separate preloads for main app, webviews, and Docker extensions
### Key Packages
```
packages/
├── main/ - Electron main process (backend)
├── renderer/ - Svelte UI (frontend)
├── ui/ - Shared UI components (@podman-desktop/ui-svelte)
├── api/ - Types shared between the renderer, main and preloads packages
├── extension-api/ - Extension API implementation (published as `@podman-desktop/api`)
├── preload/ - Main preload bridge
├── preload-docker-extension/ - Docker extension preload
└── preload-webview/ - Webview preload
extensions/ - Built-in extensions
├── compose/ - Docker Compose support
├── docker/ - Docker engine integration
├── podman/ - Podman engine integration
├── kind/ - Kind (Kubernetes in Docker)
├── kubectl-cli/ - kubectl CLI manager
└── ...
tests/playwright/ - E2E tests
storybook/ - UI component showcase
website/ - Documentation site (Docusaurus)
```
### Technology Stack
| Layer | Technologies |
| ---------------- | ----------------------------------------------------------- |
| **Runtime** | Electron 40+, Node.js 24+ |
| **Language** | TypeScript 5.9+ (strict mode) |
| **UI Framework** | Svelte 5+ |
| **Styling** | Tailwind CSS 4+ |
| **Build** | Vite 7+, pnpm 10+ |
| **Testing** | Vitest 4+ (unit), Playwright (E2E), @testing-library/svelte |
| **Linting** | ESLint 9+, Biome |
| **Formatting** | Biome, Prettier (markdown only) |
### Extension System
Extensions can:
- Add custom container engine providers
- Register Kubernetes providers
- Contribute UI views and commands
- Hook into application lifecycle events
- Extend Docker Desktop compatibility
Built-in extensions are in `extensions/` and follow the same API as external extensions.
## Important Guidelines
### Before Making Changes
1. **Read first:** See [CODE-GUIDELINES.md](CODE-GUIDELINES.md) for coding standards
2. **Run tests:** Ensure existing tests pass
3. **Type safety:** Maintain strict TypeScript compliance
4. **Format code:** Run `pnpm lint-staged` before committing
### Testing Requirements
- **Unit tests** are mandatory for new features (Vitest)
- **E2E tests** required for UI workflows (Playwright)
- Maintain or improve code coverage
- Test on multiple platforms when possible (macOS, Linux, Windows)
### Code Style
- TypeScript strict mode enforced
- Use Svelte 5 runes syntax (`$state`, `$derived`, `$effect`)
- Follow ESLint and Biome rules
- Tailwind CSS for styling (no custom CSS unless necessary)
### ESLint Rules
Before writing or modifying code, always check `eslint.config.mjs` to understand which linting rules are active. Rules vary by file type and package — consult the config directly rather than assuming defaults.
### Svelte Reactive Patterns
When setting a variable reactively, prefer in this order:
1. **`$derived` (with optional `await`)** — use when the value can be computed from existing state or an async source. Svelte 5.36+ supports `await` inside `$derived`.
2. **`onMount`** — use when you need to fetch or set a value once after the component mounts and `$derived` is not applicable.
3. **`$effect`** — use only as a last resort for side effects that cannot be expressed as a derivation.
```ts
// ✅ Preferred: $derived (sync or async)
let items = $derived(await fetchItems());
// ✅ Acceptable: onMount when $derived does not fit
let items = $state<Item[]>([]);
onMount(async () => {
items = await fetchItems();
});
// 🚫 Avoid: $effect for setting variables
let items = $state<Item[]>([]);
$effect(() => {
fetchItems().then(result => {
items = result;
});
});
```
> **Note:** `$derived` variables are read-only — you cannot reassign them (e.g. `items = [something]` will be a compile error). If you need to mutate the variable elsewhere in the component (e.g. in response to a user action), use `$state` + `onMount` instead:
>
> ```ts
> // 🚫 Won't work — cannot assign to a $derived variable
> let items = $derived(await fetchItems());
> items = []; // ❌ compile error
>
> // ✅ Use $state + onMount when you also need to write to the variable
> let items = $state<Item[]>([]);
> onMount(async () => {
> items = await fetchItems();
> });
> // later in the component:
> items = []; // ✅ fine
> ```
### Testing Patterns
- When mocking modules, use `vi.mock(import('./path/to/module'))` (with a dynamic `import()` expression) instead of `vi.mock('./path/to/module')` (string literal). This provides better type inference and IDE support.
- Use `vi.mocked(fn)` to get a typed mock reference, then configure it with `.mockReturnValue()` / `.mockResolvedValue()` and assert with `expect()`.
```ts
// ✅ Preferred
vi.mock(import('node:fs'));
vi.mock(import('./Compo2.svelte'));
// 🚫 Avoid
vi.mock('node:fs');
vi.mock('./Compo2.svelte');
```
**Setting up and asserting mocks:**
```ts
import { readFileSync } from 'node:fs';
import { beforeEach, expect, test, vi } from 'vitest';
vi.mock(import('node:fs'));
beforeEach(() => {
vi.resetAllMocks();
});
test('returns parsed content', () => {
vi.mocked(readFileSync).mockReturnValue('hello');
const result = parseFile('/some/path');
expect(result).toBe('hello');
expect(readFileSync).toHaveBeenCalledWith('/some/path', 'utf-8');
});
```
For comprehensive coding and testing guidelines, see [CODE-GUIDELINES.md](CODE-GUIDELINES.md).
### Commits & Pull requests
- We use semantic commits (E.g. `feat(renderer): updating something`)
- Every commit must be signed
- AI assisted commit should be mentioned
- Respect the GitHub template for the pull request body
## Resources
- **Comprehensive guidelines:** [CODE-GUIDELINES.md](CODE-GUIDELINES.md)
- **Contributing guide:** [CONTRIBUTING.md](CONTRIBUTING.md)
- **API documentation:** `website/docs/extensions/`
- **Component library:** Run `pnpm --filter storybook dev`

1
CLAUDE.md Symbolic link
View file

@ -0,0 +1 @@
AGENTS.md

View file

@ -65,6 +65,172 @@ async function onButtonClicked(object: Object): Promise<void> {
{/each}
```
### Usage of Icon component
The Icon component is a unified icon wrapper that supports multiple icon formats:
- FontAwesome `IconDefinition` object uses `<Fa>` from `svelte-fa`
- Font class icons strings starting with fas fa-, far fa-, fab fa- or ending with -icon Renders as `<span>` with CSS classes
- Data URI images strings starting with data:image/ Renders as `<img>`
- Svelte Components
✅ **Use this pattern:**
```ts
<script lang="ts">
import { CustomSVGIcon } from '/@/icons';
import { faGear } from '@fortawesome/free-solid-svg-icons';
import { Icon } from '@podman-desktop/ui-svelte/icons';
</script>
<Icon icon={CustomSVGIcon} size="2x" />
<Icon icon={faGear} size="xs" />
```
🚫 **Instead of:**
```ts
<script lang="ts">
import { CustomSVGIcon } from '/@/icons';
import { faGear } from '@fortawesome/free-solid-svg-icons';
import Fa from 'svelte-fa';
</script>
<CustomSVGIcon size='2x' />
<Fa size="xs" icon={faGear} />
<i class="fas fa-angle-down"></i>
```
Use typescript imports rather than string definitions
✅ **Use this pattern:**
```ts
<script lang="ts">
import { faGear } from '@fortawesome/free-solid-svg-icons';
import { Icon } from '@podman-desktop/ui-svelte/icons';
</script>
<Icon icon={faGear} />
```
🚫 **Instead of:**
```ts
<script lang="ts">
</script>
<i class="fas fa-gear"></i>
```
Another example:
✅ **Use this pattern:**
```ts
<script lang="ts">
import { Icon } from '@podman-desktop/ui-svelte/icons';
interface Props {
icon: unknown;
}
let { icon }: Props = $props();
</script>
<Icon icon={icon} />
```
🚫 **Instead of:**
```ts
<script lang="ts">
import Fa from 'svelte-fa';
interface Props {
icon: unknown;
}
let { icon }: Props = $props();
</script>
{#if isFontAwesomeIcon(icon)}
<Fa icon={icon} size="4x" />
{:else}
{@const IconComponent = icon}
<IconComponent size='42' />
{/if}
```
### Using async/await in expressions
As of Svelte 5.36+, you can use the `await` keyword directly inside component expressions in three places: at the top level of the component's `<script>`, inside `$derived(...)` declarations, and inside your markup. This enables cleaner code without needing explicit promise handling.
✅ **Use this pattern:**
```ts
<script lang="ts">
async function fetchData(): Promise<Data> {
// async logic here
return data;
}
let data = $derived(await fetchData());
</script>
<p>Data: {data}</p>
```
🚫 **Instead of:**
```ts
<script lang="ts">
async function fetchData(): Promise<Data> {
// async logic here
return data;
}
// Without await, this produces a Promise
let dataPromise = $derived(fetchData());
</script>
{#await dataPromise}
<p>Loading...</p>
{:then data}
<p>Data: {data}</p>
{:catch error}
<p>Error: {error.message}</p>
{/await}
```
This is much simpler than managing promises manually and avoids the need for `{#await}` blocks when you just need the final value.
For more details on async patterns in Svelte, see the [Svelte documentation on await expressions](https://svelte.dev/docs/svelte/await-expressions).
### Svelte Attachments (Svelte 5.29+)
You can use attachments to add DOM behavior that runs on mount and cleans up on detach.
Example:
```ts
<script lang="ts">
import type { Attachment } from 'svelte/attachments';
const clickOnce: Attachment = (el) => {
const onClick = () => {
// handle click
};
el.addEventListener('click', onClick);
return () => el.removeEventListener('click', onClick);
};
</script>
<button {@attach clickOnce}>...</button>
```
References: [@attach](https://svelte.dev/docs/svelte/@attach), [svelte/attachments](https://svelte.dev/docs/svelte/svelte-attachments)
## Unit tests code
### Use `vi.mocked`, not a generic `myFunctionMock`
@ -397,3 +563,91 @@ afterEach(() => {
vi.useRealTimers();
});
```
### Snapshots
Vitest snapshots are a powerful tool to ensure UI components and complex data structures do not change unexpectedly. They are particularly effective for catching regressions in rendered HTML or large objects without writing manual assertions for every property. When a snapshot detects a diff, you can update it using the `-u` param:
#### Updating Snapshots
When a test fails due to an intentional change, you can update the stored snapshots by appending the `-u` (or `--update`) flag to your test command.
#### 1. Standard Snapshots (External Files)
Use standard snapshots for large outputs like rendered HTML. These are stored in a separate **snapshots** directory.
##### Example: Testing Rendered HTML
```ts
test('multiple container connection should display a dropdown', async () => {
providerInfos.set([MULTI_CONNECTIONS]);
const { getByRole } = render(CreateContainerFromExistingImage);
const dropdown = getByRole('button', { name: 'Container Engine' });
expect(dropdown).toBeEnabled();
expect(dropdown).toMatchSnapshot();
});
```
**How to update:**
```bash
cd packages/renderer/
pnpm test src/lib/container/CreateContainerFromExistingImage.s -u
```
**Result:** A snapshot file is created or updated at:
`src/lib/container/__snapshots__/CreateContainerFromExistingImage.spec.ts.snap`
#### 2. Inline Snapshots
Inline snapshots are preferred for small data structures. They are written directly back into your test file, making the expected output easier to review during code sessions.
#### Example: Testing an Object
```ts
test('should parse targets with some special characters', async () => {
const info = await containerFileParser.parseContent(`
FROM busybox as base
ARG TARGETPLATFORM
RUN echo $TARGETPLATFORM > /plt
FROM --platform=\${TARGETPLATFORM} base AS base-target
FROM --platform=$BUILDPLATFORM base AS base-build
`);
expect(info).toMatchInlineSnapshot(`
{
"targets": [],
}
`);
});
```
**How to update:**
```bash
cd packages/main/
pnpm test:unit src/plugin/containerfile-parser.spec.ts --u
```
**Result:** Vitest replaces the code in your .spec.ts file with the updated values:
```ts
expect(info).toMatchInlineSnapshot(`
{
"targets": [
"base",
"base-build",
],
}
`);
```
**Best Practices**
- **Review Before Committing:** Always inspect the diff of a snapshot update. It is easy to accidentally "fix" a test by updating a snapshot that actually contains a bug.
- **Keep Snapshots Focused:** Avoid snapshotting entire massive objects if you only care about one or two fields; use specific assertions instead to keep tests readable.
- **Use Inline for Small Data:** If the snapshot is less than 10 lines, prefer `toMatchInlineSnapshot()` for better visibility.
For more details, see the [Vitest snapshot guide](https://vitest.dev/guide/snapshot.html).

View file

@ -1,10 +0,0 @@
# Default Owners
* @podman-desktop/reviewers @benoitf
# website
website/** @podman-desktop/reviewers @slemeur @cdrage @benoitf @Firewall
website/docs/** @podman-desktop/reviewers @shipsing @slemeur @cdrage @benoitf @Firewall
# playwright tests
tests/playwright/** @podman-desktop/reviewers @podman-desktop/qe-reviewers @benoitf

View file

@ -71,7 +71,7 @@ You can develop on either: `Windows`, `macOS` or `Linux`.
Requirements:
- [Node.js 22+](https://nodejs.org/en/)
- [Node.js 24+](https://nodejs.org/en/)
- [pnpm v10.x](https://pnpm.io/installation) (`corepack enable pnpm`)
Optional Linux requirements:
@ -252,6 +252,16 @@ This will create a binary according to your local system and output it to the `d
> **_macOS NOTE:_** On macOS the `dist/` folder will contain folders for `arm64` and `universal` `.app` files. Ignore these and use the `.app` file in the `dist/mac/` folder for testing.
> **_macOS CODE SIGNING:_** When testing the compiled binary on macOS, you must ad-hoc sign the application before launching it. Without signing, macOS will terminate the app with a `Code Signature Invalid` error. Run the following command after compiling:
>
> ```sh
> # Compile
> pnpm compile:current
>
> # Sign the binary
> codesign --force --deep --sign - "dist/mac-arm64/Podman Desktop.app"
> ```
## Submitting Pull Requests
### Process
@ -450,10 +460,16 @@ Each sprint a new "Triage manager" will be assigned.
Your responsibilities include:
- Reviewing the [status/need-triage](https://github.com/podman-desktop/podman-desktop/issues?q=is%3Aopen+is%3Aissue+label%3Astatus%2Fneed-triage) label on new issues. As a maintainer, you will need to categorize these issues under the correct [area labels](https://github.com/podman-desktop/podman-desktop/labels?q=area%2F). Once categorized, remove the `status/need-triage` label and apply the appropriate area label.
- Evaluating the severity of new issues. If an issue is classified as "critical" or "high priority" and requires immediate attention, tag a maintainer in the issue and notify them via the public community channel.
- Identifying issues that are simple to resolve and marking them as "good first issue," thereby encouraging newcomers to contribute to the project.
- Evaluating any stale / lingering pull requests and pinging the respective contributors. If the pull request has been opened for an extensive amount of time, ping someone to contact the contributor / push any changes required to get it merged in. If there is no communication / the pull request is stale, close them.
- Review the [status/need-triage](https://github.com/podman-desktop/podman-desktop/issues?q=is%3Aopen+is%3Aissue+label%3Astatus%2Fneed-triage) label on new issues. As a maintainer, you will need to categorize these issues under the correct [domain labels](https://github.com/podman-desktop/podman-desktop/labels?q=domain%2F).
- Validate the issue type. Since issues can be opened without templates or may not align with the chosen template, ensure the issue is correctly classified and update labels accordingly. For example, an issue opened as a bug may actually be a feature request and should be relabeled to reflect the correct type.
- Add `dev/investigate` label if there is a need for the engineering team to take an initial look and provide some info on where the changes could be and categorize the issue in appropriate area. Add the issue to the current sprint.
- Add `qe/review` label if we want QE to reproduce this issue.
- Add `status/info-needed` label if logs are missing or additional info is needed from the user filing the issue
- Add `external-user` label if the issue is opened by someone outside the Podman Desktop organization maintainers.
- Identify issues that are simple to resolve and marking them as "good first issue," thereby encouraging newcomers to contribute to the project.
- Once categorized, remove the `status/need-triage` label.
- Evaluate the severity of new issues. If an issue is classified as "critical" or "high priority" and requires immediate attention, tag a maintainer in the issue and notify them via the public community channel.
- Evaluate any stale / lingering pull requests and pinging the respective contributors. If the pull request has been opened for an extensive amount of time, ping someone to contact the contributor / push any changes required to get it merged in. If there is no communication / the pull request is stale, close them.
## Website Contributions

232
GOVERNANCE.md Normal file
View file

@ -0,0 +1,232 @@
# Podman Desktop Governance
This is the governance policy for the Podman Desktop project. It applies to all repositories
in the [Podman Desktop GitHub organization](https://github.com/podman-desktop).
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Project Roles](#project-roles)
- [Contributor](#contributor)
- [Organization Member](#organization-member)
- [Extension Maintainer](#extension-maintainer)
- [Conflict Resolution](#conflict-resolution)
- [Changing Roles](#changing-roles)
- [Inactivity](#inactivity)
- [Involuntary Removal or Demotion](#involuntary-removal-or-demotion)
- [Stepping Down/Emeritus Process](#stepping-downemeritus-process)
- [Changes to this Document](#changes-to-this-document)
## Code of Conduct
All members of the Podman Desktop community are expected to follow the
[Code of Conduct](https://github.com/podman-desktop/podman-desktop/blob/main/CODE-OF-CONDUCT.md)
## Project Roles
### Contributor
A Contributor contributes directly to the project and adds value to it. Contributions need not be code.
People at the Contributor level may be new contributors, or they may only contribute occasionally.
#### Responsibilities
- Follow the [Code of Conduct](https://github.com/podman-desktop/podman-desktop/blob/main/CODE-OF-CONDUCT.md)
- Follow the project [contributing guide](https://github.com/podman-desktop/podman-desktop/blob/main/CONTRIBUTING.md)
#### How to get involved
- Participate in community discussions
- Help other users
- Submit bug reports and feature requests
- Comment on issues
- Try out new releases
- Attend community events
#### How to contribute
- Report and sometimes resolve issues
- Occasionally submit PRs
- Contribute to the documentation
- Participate in meetings
- Answer questions from other community members
- Submit feedback on issues and PRs
- Test releases and patches and submit reviews
- Run or help run events
- Promote the project externally
### Organization Member
An org member is a frequent contributor that has become a member of the Podman Desktop GitHub organization.
In addition to the responsibilities of contributors, an org member is also expected to be reasonably active
in the community through continuous contributions of any type.
An Organization Member must meet the responsibilities and has the requirements of a Contributor.
#### Responsibilities
- Continues to contribute regularly, as demonstrated by having at least 10 GitHub contributions per year
#### Requirements
There are two paths to become an Organization Member:
1. Individual org member path:
- Must have at least 10 contributions to the project in the form of:
- Accepted PRs
- Helpful PR reviews
- Resolving GitHub issues
- Or some equivalent contributions to the project
- Must have been contributing for at least 3 months
2. Team member of an existing project area maintainer team:
- In the case where a team at an organization owns a project area, all the members of that team are
automatically able to become Organization Members. This must be approved by at least one of the existing Core Maintainers
#### Privileges
- Membership in the podman-desktop GitHub Organization
### Extension Maintainer
An Extension Maintainer is responsible for maintaining an individual Podman Desktop extension.
This includes responding to issues filed against the extension, contributing to it, reviewing contributions,
and keeping the extension up to date.
Extension repositories are named extension-\<name\>, e.g. https://github.com/podman-desktop/extension-minikube.
Extension Maintainer is a lightweight form of ownership and is reflected through CODEOWNERS in each extension repository.
Each extension can have one or more maintainers.
An Extension Maintainer has all the rights and responsibilities of an Organization Member.
#### Responsibilities
- Review the majority of PRs towards the extension
- Respond to GitHub issues related to the extension
- Keep the extension up-to-date with Podman Desktop extension APIs and other dependencies
- Periodically release the extension and publish to the catalog
#### Requirements
- Is supportive of new and occasional contributors and helps get useful PRs in shape to merge
- Owns at least one extension in the https://github.com/podman-desktop organization.
#### Privileges
- Write access to the https://github.com/podman-desktop/extension-\<name\> repository
- GitHub [code owner](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)
of the extension, with rights to approve and merge PRs towards the extension
#### Becoming an Extension Maintainer
There are two ways to become an extension maintainer:
1. By contributing a new extension repository to this organization.
The extension contribution must be approved by the community Core Maintainers and follow all CNCF rules for ownership change, IP transfer, etc.
When the contribution is merged by the Core Maintainers you will remain as the code owner of the extension and granted Extension Maintainer status.
2. Organization Members can become an Extension Maintainer through continued high-quality contributions to a
particular extension. New Extension Maintainers can be added to an extension by a
[super-majority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) vote of the existing maintainers.
A potential maintainer may be nominated by an existing maintainer or Organization Member. A vote is conducted
in private between the current maintainers over the course of a one week voting period. At the end of the week,
votes are counted, the maintainer is given write access to the repository and a pull request is made adding the
new maintainer to the code owners.
### Core Maintainer
Core Maintainers are responsible for the Podman Desktop project as a whole, including all repositories. Final decisions
on the project reside with the Core Maintainers. They help review and merge project-level pull requests as well as
coordinate work affecting multiple project areas. Core Maintainers should also mentor and seek out new maintainers,
lead community meetings, and communicate with the CNCF on behalf of the project.
#### Responsibilities
- Take part in the incoming issue triage and PR review process. PRs are shared equally among all maintainers
- Drive refactoring and manage tech health across the entire project
- Participate in CNCF maintainer activities
- Respond to security incidents in accordance to our [security policy](https://github.com/podman-desktop/podman-desktop/blob/main/SECURITY.md)
- Determine strategy and policy for the project
- Participate in and/or lead community meetings
#### Requirements
- Experience as an Organization Member for at least 6 months
- Demonstrates a broad knowledge of the project
- Is able to exercise judgment for the good of the project, independent of their employer, friends, or team
- Mentors other contributors
#### Privileges
- Write access to all repositories under the podman-desktop GitHub Organization
- Approve PRs
- Merge PRs
- Represent the project in public as a Maintainer
- Communicate with the CNCF on behalf of the project
- Have a vote in Maintainer decision-making meetings
- Drive the direction and roadmap of the project
#### Becoming a Core Maintainer
New Core Maintainers can be added to the project by a
[super-majority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) vote of the existing maintainers.
A potential maintainer may be nominated by an existing core maintainer or Organization Member. A vote is conducted
in private between the current maintainers over the course of a one week voting period. At the end of the week,
votes are counted, the maintainer is given write access to repositories and a pull request is made adding the
new maintainer to the code owners.
## Conflict Resolution
Final decisions on the project reside with the Core Maintainers. If the Core Maintainers cannot agree
on an issue, the issue will be resolved by voting. The voting process is based on a
[super-majority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) vote where each Core Maintainer is given one vote.
## Changing Roles
### Inactivity
Inactivity is measured by periods of no contributions without explanation, for longer than:
- Core Maintainer: 6 months
- Extension Maintainer: 12 months
- Organization Member: 12 months
Consequences of being inactive include:
- Involuntary removal or demotion
- Being asked to move to Emeritus status
### Involuntary Removal or Demotion
Involuntary removal/demotion of a contributor happens when responsibilities or requirements aren't being met.
This may include repeated patterns of inactivity, extended periods of inactivity, a period of failing to meet
the requirements of your role, and/or a violation of the Code of Conduct. This process is important because
it protects the community and its deliverables while also opening up opportunities for new contributors to
step in.
Involuntary removal or demotion is handled through a vote by a
[super-majority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) of the current Core Maintainers.
### Stepping Down/Emeritus Process
If and when contributors' commitment levels change, contributors can consider voluntarily stepping down
(moving down the contributor ladder) or moving to emeritus status (completely stepping away from the project).
Contact the Core Maintainers about changing to Emeritus status or reducing your contributor level.
Emeritus contributors will remain listed in a dedicated section of the contributors file.
Emeritus Maintainers are former Maintainers or Core Maintainers whose status has lapsed, either voluntarily
or through inactivity. We recognize these former maintainers for their past contributions, their valuable
experience and insights, and they maintain Emeritus status as a way of recognizing this. Emeritus Maintainer
also offers a fast-tracked path to becoming a Maintainer again, should the contributor wish to return to the
project. Emeritus Maintainers have no responsibilities or requirements beyond those of an ordinary Contributor.
## Changes to this Document
Changes to this governance document require a pull request with approval from a
[super-majority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) of the current maintainers.

View file

@ -1,4 +1,4 @@
# Podman Desktop - A graphical tool for developing on containers and Kubernetes
# Podman Desktop A graphical tool for developing on containers and Kubernetes
![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/podman-desktop/podman-desktop)
@ -16,7 +16,7 @@
[![LFX Active Contributors](https://insights.linuxfoundation.org/api/badge/active-contributors?project=podman-desktop)](https://insights.linuxfoundation.org/project/podman-desktop)
<p align="center">
<img alt="Podman Desktop" src="/website/static/img/features/manage-containers.webp">
<img alt="Podman Desktop" src="/website/static/img/features/homepage.webp" width="100%">
</p>
## Documentation
@ -29,6 +29,7 @@
- [**Contributing**](#contributing)
- [**Communication**](#communication)
- [**Code of Conduct**](#code-of-conduct)
- [**Share your Feedback**](#share-your-feedback)
- [**License**](#license)
## Overview
@ -131,10 +132,16 @@ Kubernetes questions & development:
[![Mastodon](https://img.shields.io/badge/mastodon-6364ff?style=for-the-badge&logo=mastodon&logoColor=white)](https://fosstodon.org/@podmandesktop)
[![Bluesky](https://img.shields.io/badge/bluesky-1283FE.svg?style=for-the-badge&logo=Bluesky&logoColor=white)](https://bsky.app/profile/podman-desktop.io)
## Share Your Feedback
### Adopters
Are you using **Podman Desktop** at your company?
Wed love to hear how youre using (or planning to use) Podman Desktop. Spend **30 minutes** chatting with us about your use case, and well send you some Podman Desktop swag as a thank-you!
Check out the [list of companies](./ADOPTERS.md) already using Podman Desktop.
👉 Please complete this [form](https://forms.gle/mTagLs36275B4L198), and well be in touch to arrange a time.
Check out the growing [list of companies](./ADOPTERS.md) already using Podman Desktop, and add your organization to be part of the community of adopters.
Your feedback is invaluable and will play a direct role in guiding the evolution of Podman Desktop. We greatly appreciate your time and perspective.
## Code of Conduct
@ -142,7 +149,7 @@ This project uses the [Containers Community Code of Conduct](https://github.com/
## Testing
[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://app.argos-ci.com/containers/podman-desktop/reference)
[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://app.argos-ci.com/containers/podman-desktop-website)
## License

View file

@ -57,11 +57,18 @@ The release may be tested using the assets generated within the pre-release.
**Cherry picking:**
If there are fixes that need to be made to the release as brought up by QE the following steps need to be completed:
If there are fixes that need to be made to the release as brought up by QE the following steps need to be completed (using hypothetical release 0.12.0 as an example):
1. Create a branch **FROM THE RELEASE**. Example, 0.12.x of release 0.12.0. **IMPORTANT NOTE:** Literally `0.12.x` not `0.12.1`.
2. Create PR(s) with the fixes that merge into the main branch and use mergify.io to open a backport PR(s) to the 0.12.x branch by adding the following comment in the main PR(s): `@Mergifyio backport 0.12.x`
3. Make sure all PR's are merged
1. Create the cherry-fix branch `0.12.x` from tag `0.12.0`:
```sh
$ git fetch --tags
$ git checkout -b 0.12.x v0.12.0
$ git push origin 0.12.x
```
2. Create PRs with the fixes that merge into `main` and use Mergify to open backport PRs to `0.12.x` by adding the following comment in the main PRs: `@Mergifyio backport 0.12.x`
3. Make sure all PRs are merged, before re-spinning a release.
**Re-spin a release:**

View file

@ -1,3 +1,37 @@
## Security and Disclosure Information Policy for the Podman Desktop Project
# Security and Disclosure Information Policy for the Podman Desktop Project
The Podman Desktop Project follows the [Security and Disclosure Information Policy](https://github.com/containers/common/blob/main/SECURITY.md) for the Containers Projects.
This is the security policy for the Podman Desktop project. It applies to all repositories
in the [Podman Desktop GitHub organization](https://github.com/podman-desktop).
- [Reporting a Vulnerability](#Reporting-a-Vulnerability)
- [Security Announcements](#Security-Announcements)
- [Security Vulnerability Response](#Security-Vulnerability-Response)
## Reporting a Vulnerability
If you think you've identified a security issue in a Podman Desktop project,
please **DO NOT** report the issue publicly via the GitHub issue tracker,
mailing list, or chat. Instead, you have two options:
- Open a private GitHub Security Vulnerability Advisory
([GitHub documentation](https://docs.github.com/en/code-security/how-tos/report-and-fix-vulnerabilities/report-a-vulnerability/privately-reporting-a-security-vulnerability)).
- Send an email with as many details as possible to
[cncf-podman-desktop-security@lists.cncf.io](mailto:cncf-podman-desktop-security@lists.cncf.io?subject=Security%20Vulnerablity%20Report).
This is a private mailing list for the core maintainers.
## Security Announcements
The [cncf-podman-desktop-maintainers@lists.cncf.io](mailto:cncf-podman-desktop-maintainers@lists.cncf.io) email
list is used for messages about Podman Desktop security announcements as well as general announcements and discussions.
You can join the list [here](https://lists.cncf.io/g/cncf-podman-desktop-maintainers/join)
or by sending an email to [cncf-podman-desktop-maintainers+subscribe@lists.cncf.io](mailto:cncf-podman-desktop-maintainers+subscribe@lists.cncf.io?subject=subscribe).
## Security Vulnerability Response
Each report is acknowledged and analyzed by the core maintainers within 3 working days.
Any vulnerability information shared with core maintainers stays within a Podman Desktop project
and will not be disseminated to other projects unless it is necessary to get the issue fixed.
As the security issue moves from triage, to an identified fix, to release planning, the core
maintainers will keep the reporter updated.

View file

@ -1,170 +0,0 @@
/**********************************************************************
* Copyright (C) 2022-2025 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import { vi, beforeEach } from 'vitest';
import product from './product.json' with { type: 'json' };
/**
* Mock the extension API for vitest.
* This file is referenced from vitest.config.js file.
*/
const cli = {
createCliTool: vi.fn(),
};
const commands = {
registerCommand: vi.fn(),
};
const configuration = {
onDidChangeConfiguration: vi.fn(),
getConfiguration: vi.fn(),
};
const containerEngine = {
info: vi.fn(),
listContainers: vi.fn(),
saveImage: vi.fn(),
onEvent: vi.fn(),
};
const context = {
setValue: vi.fn(),
};
const env = {
createTelemetryLogger: vi.fn(),
openExternal: vi.fn(),
appName: product.name,
isLinux: false,
isWindows: false,
isMac: false,
};
const kubernetes = {
createResources: vi.fn(),
getKubeconfig: vi.fn(),
onDidUpdateKubeconfig: vi.fn(),
};
const net = {
getFreePort: vi.fn(),
};
const process = {
exec: vi.fn(),
};
const eventEmitterListeners = [];
const extensions = {
getExtension: vi.fn(),
};
const proxy = {
isEnabled: vi.fn(),
onDidUpdateProxy: vi.fn(),
onDidStateChange: vi.fn(),
getProxySettings: vi.fn(),
};
const provider = {
createProvider: vi.fn(),
onDidRegisterContainerConnection: vi.fn(),
onDidUnregisterContainerConnection: vi.fn(),
onDidUpdateProvider: vi.fn(),
onDidUpdateContainerConnection: vi.fn(),
onDidUpdateVersion: vi.fn(),
registerUpdate: vi.fn(),
getContainerConnections: vi.fn(),
};
const registry = {
registerRegistryProvider: vi.fn(),
registerRegistry: vi.fn(),
unregisterRegistry: vi.fn(),
onDidRegisterRegistry: vi.fn(),
onDidUnregisterRegistry: vi.fn(),
onDidUpdateRegistry: vi.fn(),
suggestRegistry: vi.fn(),
};
const window = {
showInformationMessage: vi.fn(),
showErrorMessage: vi.fn(),
withProgress: vi.fn(),
showNotification: vi.fn(),
showWarningMessage: vi.fn(),
showQuickPick: vi.fn(),
showInputBox: vi.fn(),
createStatusBarItem: vi.fn(),
};
const Disposable = { from: vi.fn(), dispose: vi.fn() };
class EventEmitter {
event(callback) {
eventEmitterListeners.push(callback);
}
fire(data) {
eventEmitterListeners.forEach(listener => listener(data));
}
dispose() {}
}
const ProgressLocation = {
APP_ICON: 1,
TASK_WIDGET: 2,
};
const Uri = {
parse: vi.fn(),
};
const plugin = {
cli,
commands,
configuration,
containerEngine,
context,
env,
extensions,
kubernetes,
net,
process,
provider,
proxy,
registry,
window,
Disposable,
EventEmitter,
ProgressLocation,
Uri,
};
beforeEach(() => {
eventEmitterListeners.length = 0;
});
module.exports = plugin;

69
__mocks__/api.mustache Normal file
View file

@ -0,0 +1,69 @@
/**********************************************************************
* Copyright (C) 2026 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
/* This file is auto-generated by a vitest globalSetup hook */
import { beforeEach, vi } from 'vitest';
import product from '../../product.json' with { type: 'json' };
const namespaceMocks = {} as Record<string, Record<string, unknown>>;
{{#namespaces}}
namespaceMocks.{{name}} = {};
{{#functions}}
namespaceMocks.{{name}}.{{.}} = vi.fn();
{{/functions}}
{{/namespaces}}
const classesMocks = {} as Record<string, unknown>;
{{#classes}}
const {{name}}Instance: Record<string, unknown> = {};
{{#methods}}
{{name}}Instance.{{.}} = vi.fn();
{{/methods}}
classesMocks.{{name}} = {{name}}Instance;
{{/classes}}
const eventEmitterListeners: Array<(data: unknown) => unknown> = [];
beforeEach(() => { eventEmitterListeners.length = 0; });
class EventEmitter {
event(callback: (e: unknown) => unknown): void { eventEmitterListeners.push(callback); }
fire(data: unknown): void { for (const listener of eventEmitterListeners) { listener(data); } }
dispose(): void {}
}
EventEmitter.prototype.dispose = vi.fn();
// Normalize env mock
if (!namespaceMocks.env) namespaceMocks.env = {};
namespaceMocks.env.isWindows = false;
namespaceMocks.env.isMac = false;
namespaceMocks.env.isLinux = false;
namespaceMocks.env.appName = product.name;
const extensionAPI = {
...namespaceMocks,
...classesMocks,
EventEmitter,
ProgressLocation: { APP_ICON: 1, TASK_WIDGET: 2 },
StatusBarAlignLeft: 'LEFT',
StatusBarAlignRight: 'RIGHT',
StatusBarItemDefaultPriority: 0,
InputBoxValidationSeverity: { Info: 1, Warning: 2, Error: 3 },
QuickPickItemKind: { Separator: -1, Default: 0 },
};
module.exports = extensionAPI;

View file

@ -0,0 +1,125 @@
/**********************************************************************
* Copyright (C) 2026 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import path from 'node:path';
import fs from 'node:fs/promises';
import typescript from 'typescript';
import Mustache from 'mustache';
import { fileURLToPath } from 'node:url';
type Namespaces = { [key: string]: string[] };
type Classes = { [key: string]: string[] };
async function extractNamespacesAndClassesFromAPI(
filePath: string,
): Promise<{ namespaces: Namespaces; classes: Classes }> {
const fileContent = await fs.readFile(filePath, 'utf-8');
const sourceFile = typescript.createSourceFile(filePath, fileContent, typescript.ScriptTarget.Latest, true);
const namespaces: Namespaces = {};
const classes: Classes = {};
const visit = (node: typescript.Node): void => {
if (typescript.isModuleDeclaration(node) && node.name.text) {
if (node.name.text === '@podman-desktop/api') {
typescript.forEachChild(node, visit);
return;
}
const namespaceName = node.name.text;
const functions: string[] = [];
if (node.body && typescript.isModuleBlock(node.body)) {
for (const statement of node.body.statements) {
if (typescript.isFunctionDeclaration(statement) && statement.name) {
functions.push(statement.name.text);
} else if (typescript.isVariableStatement(statement)) {
for (const declaration of statement.declarationList.declarations) {
if (typescript.isIdentifier(declaration.name)) {
functions.push(declaration.name.text);
}
}
}
}
}
if (functions.length > 0) {
// Deduplicate to handle function overloads
namespaces[namespaceName] = Array.from(new Set(functions));
}
}
if (typescript.isClassDeclaration(node) && node.name) {
const modifiers = typescript.getModifiers(node);
const isExported = modifiers?.some(m => m.kind === typescript.SyntaxKind.ExportKeyword);
if (isExported) {
const className = node.name.text;
const methods: string[] = [];
for (const member of node.members) {
if (typescript.isMethodDeclaration(member) && member.name && typescript.isIdentifier(member.name)) {
methods.push(member.name.text);
}
}
// Deduplicate to handle method overloads
classes[className] = Array.from(new Set(methods));
}
}
typescript.forEachChild(node, visit);
};
visit(sourceFile);
return { namespaces, classes };
}
function toTemplateData(data: { namespaces: Namespaces; classes: Classes }) {
const namespaces = Object.entries(data.namespaces).map(([name, functions]) => ({ name, functions }));
const classes = Object.entries(data.classes).map(([name, methods]) => ({ name, methods }));
return { namespaces, classes };
}
export default async function setup(): Promise<void> {
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const repoRoot = path.resolve(__dirname, '..');
const extensionApiTypePath = path.join(repoRoot, 'packages', 'extension-api', 'src', 'extension-api.d.ts');
const podmanDesktopApiMocksDir = path.join(repoRoot, '__mocks__', '@podman-desktop');
const apiGeneratedFile = path.join(podmanDesktopApiMocksDir, 'api.ts');
const templatePath = path.join(repoRoot, '__mocks__', 'api.mustache');
// skip if api.ts is already newer (from template or extension-api.d.ts file)
const extensionApiPathStats = await fs.stat(extensionApiTypePath);
const templatePathStats = await fs.stat(templatePath);
try {
const outputStats = await fs.stat(apiGeneratedFile);
const newestInputMtime = Math.max(extensionApiPathStats.mtimeMs, templatePathStats.mtimeMs);
if (outputStats.mtimeMs >= newestInputMtime) {
console.debug(' 🚀 __mocks__/@podman-desktop/api.ts up-to-date; skipping regeneration');
return;
}
} catch {
console.debug(' ⚙️ __mocks__/@podman-desktop/api.ts does not exist yet; generating it now…');
}
const data = await extractNamespacesAndClassesFromAPI(extensionApiTypePath);
const template = await fs.readFile(templatePath, 'utf-8');
const content = Mustache.render(template, toTemplateData(data));
await fs.mkdir(podmanDesktopApiMocksDir, { recursive: true });
await fs.writeFile(apiGeneratedFile, content, 'utf-8');
console.debug(' ✅ __mocks__/@podman-desktop/api.ts has been generated.');
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View file

@ -1,6 +1,6 @@
!macro customUnInit
; Remove startup registry entry
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "Podman Desktop"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run" "Podman Desktop"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${PRODUCT_NAME}"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run" "${PRODUCT_NAME}"
!macroend

View file

@ -35,6 +35,7 @@ import redundantUndefined from 'eslint-plugin-redundant-undefined';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import fileProgress from 'eslint-plugin-file-progress';
import vitest from '@vitest/eslint-plugin';
import nodePlugin from 'eslint-plugin-n';
import svelteConfig from './svelte.config.js';
const __filename = fileURLToPath(import.meta.url);
@ -93,10 +94,11 @@ export default [
),
{
plugins: {
// compliant v9 plug-ins
// compliant v10 plug-ins
unicorn,
'file-progress': fileProgress,
// non-compliant v9 plug-ins
n: nodePlugin,
// non-compliant v10 plug-ins
'file-progress': fixupPluginRules(fileProgress),
etc: fixupPluginRules(etc),
import: fixupPluginRules(importPlugin),
'no-null': fixupPluginRules(noNull),
@ -148,6 +150,7 @@ export default [
rules: {
'vitest/no-import-node-test': 'error',
'vitest/no-identical-title': 'error',
'vitest/prefer-import-in-mock': 'error',
eqeqeq: 'error',
'prefer-promise-reject-errors': 'error',
semi: ['error', 'always'],
@ -194,6 +197,14 @@ export default [
// unicorn custom rules
'unicorn/prefer-node-protocol': 'error',
// node custom rules
'n/no-sync': [
'warn',
{
ignores: ['existsSync'],
},
],
// sonarjs custom rules
'sonarjs/cognitive-complexity': 'off',
'sonarjs/no-duplicate-string': 'off',
@ -248,6 +259,10 @@ export default [
// simple-import-sort custom rules
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
// new rule that has been added as a recommended one in eslint v10
// but comment it by default until we can fix all the issues in the codebase
'preserve-caught-error': 'off',
},
},
@ -295,6 +310,22 @@ export default [
],
},
},
{
files: ['packages/main/**'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../**'],
message: 'Parent relative imports are not allowed. Use path aliases (e.g. /@/) instead.',
},
],
},
],
},
},
{
files: ['packages/renderer/**'],
@ -320,6 +351,18 @@ export default [
// reactive statements are not expressions
'sonarjs/no-unused-expressions': 'off',
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../*'],
message: 'Parent relative imports are not allowed. Use path aliases (e.g. /@/) instead.',
},
],
},
],
},
},
@ -360,4 +403,21 @@ export default [
'sonarjs/no-unused-collection': 'off',
},
},
{
files: ['packages/api/**'],
rules: {
'no-restricted-imports': [
'error',
{
patterns: [
{
group: ['../**'],
message: 'Parent relative imports are not allowed. Use path aliases (e.g. /@/) instead.',
},
],
},
],
},
},
];

View file

@ -2,7 +2,7 @@
"name": "compose",
"displayName": "Compose",
"description": "Install Compose binary to work with Podman",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -55,11 +55,24 @@
]
]
},
{
"id": "versionCheckFailedView",
"title": "Unable to retrieve Compose version",
"when": "onboardingContext:composeVersionCheckFailed",
"state": "failed",
"content": [
[
{
"value": "Unable to retrieve the latest Compose version. This may be caused by a GitHub API rate limit or a network issue.\n\nPlease try again later or check your network connection."
}
]
]
},
{
"id": "welcomeDownloadView",
"label": "Compose Download",
"title": "Compose download",
"when": "!compose.isComposeInstalledSystemWide && !compose.isPodmanComposeInstalledSystemWide && onboardingContext:composeIsNotDownloaded",
"when": "!compose.isComposeInstalledSystemWide && !compose.isPodmanComposeInstalledSystemWide && onboardingContext:composeIsNotDownloaded && !onboardingContext:composeVersionCheckFailed",
"content": [
[
{
@ -84,7 +97,7 @@
"id": "downloadCommand",
"title": "Downloading Compose ${onboardingContext:composeDownloadVersion}",
"description": "Downloading the binary.\n\nOnce downloaded, the next step will install Compose system-wide.",
"when": "!compose.isComposeInstalledSystemWide && !compose.isPodmanComposeInstalledSystemWide && !compose.isPodmanComposeInstalledSystemWide && onboardingContext:composeIsNotDownloaded",
"when": "!compose.isComposeInstalledSystemWide && !compose.isPodmanComposeInstalledSystemWide && onboardingContext:composeIsNotDownloaded && !onboardingContext:composeVersionCheckFailed",
"command": "compose.onboarding.downloadCommand",
"completionEvents": [
"onCommand:compose.onboarding.downloadCommand"
@ -194,9 +207,9 @@
"devDependencies": {
"@podman-desktop/api": "workspace:*",
"@types/mustache": "^4.2.6",
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"mkdirp": "^3.0.1",
"vite": "^7.2.7",
"vitest": "^4.0.10"
"vite": "^7.3.2",
"vitest": "^4.1.4"
}
}

View file

@ -25,17 +25,9 @@ import { afterEach, beforeEach, expect, test, vi } from 'vitest';
import { getSystemBinaryPath, installBinaryToSystem, localBinDir } from './cli-run';
// mock exists sync
vi.mock('node:fs', async () => {
return {
existsSync: vi.fn(),
copyFileSync: vi.fn(),
promises: {
copyFile: vi.fn(),
},
};
});
vi.mock(import('node:fs'));
let previousPath: string | undefined;
const previousPath = process.env.PATH;
beforeEach(() => {
vi.resetAllMocks();

View file

@ -24,6 +24,8 @@ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
import { ComposeGitHubReleases } from './compose-github-releases';
vi.mock(import('node:fs'));
let composeGitHubReleases: ComposeGitHubReleases;
const listReleaseAssetsMock = vi.fn();
@ -154,8 +156,6 @@ describe.each([
});
test('should download the file if parent folder does exist', async () => {
vi.mock('node:fs');
getReleaseAssetMock.mockImplementation(() => {
return { data: 'foo' };
});
@ -178,8 +178,6 @@ test('should download the file if parent folder does exist', async () => {
});
test('should download the file if parent folder does not exist', async () => {
vi.mock('node:fs');
getReleaseAssetMock.mockImplementation(() => {
return { data: 'foo' };
});

View file

@ -37,11 +37,9 @@ const osMock: OS = {
let detect: Detect;
vi.mock('shell-path', () => {
return {
shellPath: vi.fn(),
};
});
vi.mock(import('shell-path'));
vi.mock(import('node:fs'));
vi.mock(import('node:http'));
const originalConsoleDebug = console.debug;
@ -117,7 +115,6 @@ describe('Check storage path', async () => {
});
test('found', async () => {
vi.mock('node:fs');
const existSyncSpy = vi.mocked(fs.existsSync);
existSyncSpy.mockImplementation(() => true);
@ -225,14 +222,6 @@ describe('Check docker socket', async () => {
const socketPathMock = vi.spyOn(detect, 'getSocketPath');
socketPathMock.mockResolvedValue('/foo/docker.sock');
// mock http request
vi.mock('node:http', () => {
return {
get: vi.fn(),
};
});
const spyGet: MockInstance<HttpGet> = vi.spyOn(http, 'get');
const clientRequestEmitter = new EventEmitter();
const myRequest = clientRequestEmitter as http.ClientRequest;
@ -258,14 +247,6 @@ describe('Check docker socket', async () => {
const socketPathMock = vi.spyOn(detect, 'getSocketPath');
socketPathMock.mockResolvedValue('/foo/docker.sock');
// mock http request
vi.mock('node:http', () => {
return {
get: vi.fn(),
};
});
const spyGet: MockInstance<HttpGet> = vi.spyOn(http, 'get');
const clientRequestEmitter = new EventEmitter();
const myRequest = clientRequestEmitter as http.ClientRequest;
@ -288,14 +269,6 @@ describe('Check docker socket', async () => {
const socketPathMock = vi.spyOn(detect, 'getSocketPath');
socketPathMock.mockResolvedValue('/foo/docker.sock');
// mock http request
vi.mock('node:http', () => {
return {
get: vi.fn(),
};
});
const spyGet: MockInstance<HttpGet> = vi.spyOn(http, 'get');
const clientRequestEmitter = new EventEmitter();
const myRequest = clientRequestEmitter as http.ClientRequest;

View file

@ -18,8 +18,8 @@
import * as fs from 'node:fs';
import * as http from 'node:http';
import { resolve } from 'node:path';
import * as path from 'node:path';
import { resolve } from 'node:path';
import * as extensionApi from '@podman-desktop/api';
import { shellPath } from 'shell-path';

View file

@ -27,6 +27,8 @@ import { ComposeDownload } from './download';
import { OS } from './os';
import * as utils from './utils';
vi.mock(import('node:fs'));
// Create the OS class as well as fake extensionContext
const os = new OS();
const extensionContext: extensionApi.ExtensionContext = {
@ -112,7 +114,6 @@ test('test download of compose passes and that mkdir and executable mocks are ca
const downloadReleaseAssetMock = vi.spyOn(composeGitHubReleasesMock, 'downloadReleaseAsset');
// Mock that the storage path does not exist
vi.mock('node:fs');
vi.spyOn(fs, 'existsSync').mockImplementation(() => {
return false;
});

View file

@ -17,7 +17,7 @@
***********************************************************************/
import * as fs from 'node:fs';
import type { CliTool, Logger } from '@podman-desktop/api';
import type { CliTool, Logger, Provider, ProviderUpdate } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
@ -27,12 +27,7 @@ import { Detect } from './detect';
import { ComposeDownload } from './download';
import { activate, deactivate } from './extension';
vi.mock('node:fs', () => ({
promises: {
unlink: vi.fn(),
},
existsSync: vi.fn(),
}));
vi.mock(import('node:fs'));
const cliToolMock = {
registerUpdate: vi.fn(),
@ -54,6 +49,10 @@ beforeEach(() => {
get: vi.fn(),
has: vi.fn(),
});
vi.mocked(extensionApi.provider.createProvider).mockReturnValue({
registerUpdate: vi.fn().mockReturnValue({ dispose: vi.fn() }),
updateVersion: vi.fn(),
} as unknown as Provider);
});
afterEach(() => {
@ -358,6 +357,9 @@ describe('registerCLITool', () => {
installationSource: 'extension',
version: '1.0.0',
});
const providerMock = vi.mocked(extensionApi.provider.createProvider).mock.results[0].value as Provider;
expect(providerMock.updateVersion).toHaveBeenCalledWith('1.0.0');
});
test('by uninstalling it should delete all executables', async () => {
@ -391,6 +393,9 @@ describe('registerCLITool', () => {
await installer?.doUninstall({} as unknown as Logger);
expect(fs.promises.unlink).toHaveBeenNthCalledWith(1, 'storage-path');
expect(extensionApi.process.exec).toHaveBeenCalledWith('rm', ['system-wide-path'], { isAdmin: true });
const providerMock = vi.mocked(extensionApi.provider.createProvider).mock.results[0].value as Provider;
expect(providerMock.updateVersion).toHaveBeenCalledWith('');
});
test('if unlink fails because of a permission issue, it should delete all binaries as admin', async () => {
@ -472,6 +477,40 @@ describe('registerCLITool', () => {
});
});
test('checkDownloadedCommand sets composeVersionCheckFailed when version fetch fails', async () => {
vi.mocked(Detect.prototype.getStoragePath).mockResolvedValue('');
vi.mocked(Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(false);
vi.mocked(ComposeDownload.prototype.getLatestVersionAsset).mockRejectedValue(new Error('API rate limit exceeded'));
await activate(extensionContextMock);
const checkDownloadedHandler = vi.mocked(extensionApi.commands.registerCommand).mock.calls[1][1];
await checkDownloadedHandler();
expect(extensionApi.context.setValue).toHaveBeenCalledWith('composeVersionCheckFailed', true, 'onboarding');
expect(extensionApi.context.setValue).not.toHaveBeenCalledWith(
'composeDownloadVersion',
expect.anything(),
'onboarding',
);
});
test('checkDownloadedCommand sets composeDownloadVersion on success', async () => {
vi.mocked(Detect.prototype.getStoragePath).mockResolvedValue('');
vi.mocked(Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(false);
vi.mocked(ComposeDownload.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v2.30.0',
} as unknown as ComposeGithubReleaseArtifactMetadata);
await activate(extensionContextMock);
const checkDownloadedHandler = vi.mocked(extensionApi.commands.registerCommand).mock.calls[1][1];
await checkDownloadedHandler();
expect(extensionApi.context.setValue).toHaveBeenCalledWith('composeDownloadVersion', 'v2.30.0', 'onboarding');
expect(extensionApi.context.setValue).toHaveBeenCalledWith('composeVersionCheckFailed', false, 'onboarding');
});
test('onboarding download command shows error message if version list cannot be obtained', async () => {
await activate(extensionContextMock);
const downloadCommandHandler = vi.mocked(extensionApi.commands.registerCommand).mock.calls[2][1];
@ -481,3 +520,115 @@ describe('registerCLITool', () => {
expect(extensionApi.window.showErrorMessage).toHaveBeenCalledOnce();
});
});
describe('provider registerUpdate (Resources page)', () => {
let registerUpdateSpy: ReturnType<typeof vi.fn>;
let updateVersionSpy: ReturnType<typeof vi.fn>;
beforeEach(() => {
registerUpdateSpy = vi.fn().mockReturnValue({ dispose: vi.fn() });
updateVersionSpy = vi.fn();
vi.mocked(extensionApi.provider.createProvider).mockReturnValue({
registerUpdate: registerUpdateSpy,
updateVersion: updateVersionSpy,
} as unknown as Provider);
});
function mockExtensionInstalledCompose(): void {
vi.mocked(Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(true);
vi.mocked(Detect.prototype.getDockerComposeBinaryInfo).mockResolvedValue({
version: 'v2.0.0',
path: 'system-wide-path',
updatable: true,
});
vi.spyOn(cliRun, 'getSystemBinaryPath').mockReturnValue('system-wide-path');
}
function mockCliToolWithVersion(
resolveRegisterUpdate: (listener: extensionApi.CliToolSelectUpdate) => void,
options: { version?: string },
): CliTool {
return {
registerUpdate: (listener: extensionApi.CliToolSelectUpdate | extensionApi.CliToolUpdate) => {
if ('selectVersion' in listener) {
resolveRegisterUpdate(listener);
}
return { dispose: vi.fn() };
},
registerInstaller: vi.fn().mockReturnValue({ dispose: vi.fn() }),
updateVersion: vi.fn(),
dispose: vi.fn(),
onDidUpdateVersion: vi.fn().mockReturnValue({ dispose: vi.fn() }),
get version(): string | undefined {
return options.version;
},
} as unknown as CliTool;
}
test('registers provider update when a newer compose version is available', async () => {
mockExtensionInstalledCompose();
vi.mocked(ComposeDownload.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v2.5.0',
} as unknown as ComposeGithubReleaseArtifactMetadata);
const deferredCliUpdate: Promise<extensionApi.CliToolSelectUpdate> = new Promise(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await activate(extensionContextMock);
await deferredCliUpdate;
expect(registerUpdateSpy).toHaveBeenCalledOnce();
expect(registerUpdateSpy.mock.calls[0][0]).toEqual(expect.objectContaining({ version: '2.5.0' }));
});
test('does not register provider update when compose is already the latest version', async () => {
vi.mocked(Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(true);
vi.mocked(Detect.prototype.getDockerComposeBinaryInfo).mockResolvedValue({
version: 'v2.5.0',
path: 'system-wide-path',
updatable: true,
});
vi.spyOn(cliRun, 'getSystemBinaryPath').mockReturnValue('system-wide-path');
vi.mocked(ComposeDownload.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v2.5.0',
} as unknown as ComposeGithubReleaseArtifactMetadata);
const deferredCliUpdate: Promise<extensionApi.CliToolSelectUpdate> = new Promise(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await activate(extensionContextMock);
await deferredCliUpdate;
expect(registerUpdateSpy).not.toHaveBeenCalled();
});
test('provider update callback downloads and installs compose', async () => {
mockExtensionInstalledCompose();
vi.mocked(ComposeDownload.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v2.5.0',
} as unknown as ComposeGithubReleaseArtifactMetadata);
vi.mocked(Detect.prototype.getStoragePath).mockResolvedValue('storage-path');
const deferredCliUpdate: Promise<extensionApi.CliToolSelectUpdate> = new Promise(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await activate(extensionContextMock);
await deferredCliUpdate;
const providerUpdate = registerUpdateSpy.mock.calls[0][0] as ProviderUpdate;
await providerUpdate.update({} as unknown as Logger);
expect(ComposeDownload.prototype.download).toHaveBeenCalled();
expect(cliRun.installBinaryToSystem).toHaveBeenCalledWith('storage-path', 'docker-compose');
expect(updateVersionSpy).toHaveBeenCalledWith('2.5.0');
});
});

View file

@ -20,6 +20,7 @@ import * as fs from 'node:fs';
import * as path from 'node:path';
import { Octokit } from '@octokit/rest';
import type { Logger, ProviderUpdate } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import { getSystemBinaryPath, installBinaryToSystem } from './cli-run';
@ -72,6 +73,21 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
const composeGitHubReleases = new ComposeGitHubReleases(octokit);
const composeDownload = new ComposeDownload(extensionContext, composeGitHubReleases, os);
// Need to "ADD" a provider so we can actually press the button!
// We set this to "unknown" so it does not appear on the dashboard (we only want it in preferences).
const providerOptions: extensionApi.ProviderOptions = {
name: composeDisplayName,
id: composeDisplayName,
status: 'unknown',
images: {
icon: imageLocation,
},
};
providerOptions.emptyConnectionMarkdownDescription = composeDescription;
const provider = extensionApi.provider.createProvider(providerOptions);
extensionContext.subscriptions.push(provider);
// add a command to display the onboarding page
const openOnboardingCommand = extensionApi.commands.registerCommand('compose.openComposeOnboarding', async () => {
await extensionApi.navigation.navigateToOnboarding();
@ -99,12 +115,16 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
// we will run getLatestVersionAsset so we can show the user the latest
// latest version of compose that is available.
if (!isDownloaded) {
// Get the latest version and store the metadata in a local variable
const composeLatestVersion = await composeDownload.getLatestVersionAsset();
// Set the value in the context to the version we're downloading so it appears in the onboarding sequence
if (composeLatestVersion) {
composeVersionMetadata = composeLatestVersion;
extensionApi.context.setValue('composeDownloadVersion', composeVersionMetadata.tag, 'onboarding');
try {
const composeLatestVersion = await composeDownload.getLatestVersionAsset();
if (composeLatestVersion) {
composeVersionMetadata = composeLatestVersion;
extensionApi.context.setValue('composeDownloadVersion', composeVersionMetadata.tag, 'onboarding');
extensionApi.context.setValue('composeVersionCheckFailed', false, 'onboarding');
}
} catch (error: unknown) {
console.error('Failed to retrieve latest Compose version:', error);
extensionApi.context.setValue('composeVersionCheckFailed', true, 'onboarding');
}
}
@ -135,7 +155,7 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
// register the cli tool if necessary
if (!composeCliTool) {
await registerCLITool(composeDownload, detect, extensionContext);
await registerCLITool(composeDownload, detect, extensionContext, provider);
}
} catch (error) {
await extensionApi.window.showErrorMessage(`Unable to download docker-compose binary: ${error}`);
@ -217,24 +237,9 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
onboardingInstallSystemWideCommand,
);
// Need to "ADD" a provider so we can actually press the button!
// We set this to "unknown" so it does not appear on the dashboard (we only want it in preferences).
const providerOptions: extensionApi.ProviderOptions = {
name: composeDisplayName,
id: composeDisplayName,
status: 'unknown',
images: {
icon: imageLocation,
},
};
providerOptions.emptyConnectionMarkdownDescription = composeDescription;
const provider = extensionApi.provider.createProvider(providerOptions);
extensionContext.subscriptions.push(provider);
// Push the CLI tool as well (but it will do it postActivation so it does not block the activate() function)
// Post activation
registerCLITool(composeDownload, detect, extensionContext).catch((error: unknown) => {
registerCLITool(composeDownload, detect, extensionContext, provider).catch((error: unknown) => {
console.error('Error activating extension', error);
});
}
@ -244,6 +249,7 @@ async function registerCLITool(
composeDownload: ComposeDownload,
detect: Detect,
context: extensionApi.ExtensionContext,
provider: extensionApi.Provider,
): Promise<void> {
// build executable name for current platform
const executable = os.isWindows() ? composeCliName + '.exe' : composeCliName;
@ -311,6 +317,9 @@ async function registerCLITool(
const latestVersion = latestVersionAsset ? removeVersionPrefix(latestVersionAsset.tag) : undefined;
let composeProviderUpdateDisposable: extensionApi.Disposable | undefined;
let composeProviderUpdate: ProviderUpdate | undefined;
const update = {
version: latestVersion !== composeCliTool.version ? latestVersion : undefined,
selectVersion: async (): Promise<string> => {
@ -345,12 +354,14 @@ async function registerCLITool(
// get the binary in the extension folder
const storagePath = await detect.getStoragePath();
binaryPath = await installBinaryToSystem(storagePath, composeCliName);
const installedVersion = releaseVersionToUpdateTo;
composeCliTool?.updateVersion({
version: releaseVersionToUpdateTo,
version: installedVersion,
path: binaryPath,
installationSource: 'extension',
});
binaryVersion = releaseVersionToUpdateTo;
binaryVersion = installedVersion;
provider.updateVersion(installedVersion);
releaseVersionToUpdateTo = undefined;
releaseToUpdateTo = undefined;
},
@ -364,8 +375,14 @@ async function registerCLITool(
composeCliTool.onDidUpdateVersion((version: string) => {
if (version === latestVersion) {
delete update.version;
composeProviderUpdateDisposable?.dispose();
} else {
update.version = latestVersion;
if (composeProviderUpdate) {
composeProviderUpdate.version = latestVersion ?? composeProviderUpdate.version;
composeProviderUpdateDisposable?.dispose();
composeProviderUpdateDisposable = provider.registerUpdate(composeProviderUpdate);
}
}
}),
);
@ -403,6 +420,7 @@ async function registerCLITool(
installationSource: 'extension',
});
binaryVersion = releaseVersionToInstall;
provider.updateVersion(releaseVersionToInstall);
releaseVersionToInstall = undefined;
releaseToInstall = undefined;
extensionApi.context.setValue('compose.isComposeInstalledSystemWide', true);
@ -423,7 +441,9 @@ async function registerCLITool(
// update the version to undefined
binaryVersion = undefined;
binaryPath = undefined;
provider.updateVersion('');
extensionApi.context.setValue('compose.isComposeInstalledSystemWide', false);
composeProviderUpdateDisposable?.dispose();
},
});
@ -433,6 +453,18 @@ async function registerCLITool(
}
composeCliToolUpdaterDisposable = composeCliTool.registerUpdate(update);
if (update.version) {
composeProviderUpdate = {
version: update.version,
update: async (_logger: Logger): Promise<void> => {
releaseToUpdateTo = undefined;
releaseVersionToUpdateTo = undefined;
await update.doUpdate();
},
};
composeProviderUpdateDisposable = provider.registerUpdate(composeProviderUpdate);
}
}
async function deleteFile(filePath: string): Promise<void> {

View file

@ -22,7 +22,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
import * as detect from './detect';
import * as handler from './handler';
vi.mock('./detect');
vi.mock(import('./detect'));
const extensionContextMock: extensionApi.ExtensionContext = {
storagePath: '/storage-path',
@ -49,33 +49,33 @@ test('updateConfigAndContextComposeBinary: make sure configuration gets updated
await handler.updateConfigAndContextComposeBinary(extensionContextMock);
expect(configUpdateSpy).toHaveBeenCalledWith('binary.installComposeSystemWide', true);
describe('podman-compose', async () => {
test('updateConfigAndContextComposeBinary: should set isPodmanComposeInstalledSystemWide context to true when podman-compose is installed', async () => {
vi.mocked(detect.Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(true);
vi.mocked(detect.Detect.prototype.checkSystemWidePodmanCompose).mockResolvedValue(true);
// Run updateConfigAndContextComposeBinary
await handler.updateConfigAndContextComposeBinary(extensionContextMock);
expect(vi.mocked(extensionApi.context.setValue)).toHaveBeenCalledWith(
'compose.isPodmanComposeInstalledSystemWide',
true,
);
});
test('updateConfigAndContextComposeBinary: should set isPodmanComposeInstalledSystemWide context to false when podman-compose is not installed', async () => {
vi.mocked(detect.Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(false);
vi.mocked(detect.Detect.prototype.checkSystemWidePodmanCompose).mockResolvedValue(false);
// Run updateConfigAndContextComposeBinary
await handler.updateConfigAndContextComposeBinary(extensionContextMock);
expect(vi.mocked(extensionApi.context.setValue)).toHaveBeenCalledWith(
'compose.isPodmanComposeInstalledSystemWide',
false,
);
});
});
expect(contextUpdateSpy).toHaveBeenCalledWith('compose.isComposeInstalledSystemWide', true);
});
describe('podman-compose', async () => {
test('updateConfigAndContextComposeBinary: should set isPodmanComposeInstalledSystemWide context to true when podman-compose is installed', async () => {
vi.mocked(detect.Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(true);
vi.mocked(detect.Detect.prototype.checkSystemWidePodmanCompose).mockResolvedValue(true);
// Run updateConfigAndContextComposeBinary
await handler.updateConfigAndContextComposeBinary(extensionContextMock);
expect(vi.mocked(extensionApi.context.setValue)).toHaveBeenCalledWith(
'compose.isPodmanComposeInstalledSystemWide',
true,
);
});
test('updateConfigAndContextComposeBinary: should set isPodmanComposeInstalledSystemWide context to false when podman-compose is not installed', async () => {
vi.mocked(detect.Detect.prototype.checkSystemWideDockerCompose).mockResolvedValue(false);
vi.mocked(detect.Detect.prototype.checkSystemWidePodmanCompose).mockResolvedValue(false);
// Run updateConfigAndContextComposeBinary
await handler.updateConfigAndContextComposeBinary(extensionContextMock);
expect(vi.mocked(extensionApi.context.setValue)).toHaveBeenCalledWith(
'compose.isPodmanComposeInstalledSystemWide',
false,
);
});
});

View file

@ -32,13 +32,6 @@ export async function updateConfigAndContextComposeBinary(
await checkAndUpdateComposeBinaryInstalledContexts(detect);
}
export async function isDockerComposeInstalledSystemWide(
extensionContext: extensionApi.ExtensionContext,
): Promise<boolean> {
const detect = new Detect(os, extensionContext.storagePath);
return await detect.checkSystemWideDockerCompose();
}
// Handle configuration changes (for example, when the user toggles the "Install compose system-wide" setting)
export function handleConfigurationChanges(extensionContext: extensionApi.ExtensionContext): void {
const detect = new Detect(os, extensionContext.storagePath);

View file

@ -57,6 +57,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '__mocks__/@podman-desktop/api.js'),
},

View file

@ -2,7 +2,7 @@
"name": "docker",
"displayName": "Docker",
"description": "Integration for Docker engine",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -22,10 +22,10 @@
"devDependencies": {
"@podman-desktop/api": "workspace:*",
"@podman-desktop/docker-extension-api": "workspace:*",
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"mkdirp": "^3.0.1",
"vite": "^7.2.7",
"vitest": "^4.0.10"
"vite": "^7.3.2",
"vitest": "^4.1.4"
},
"contributes": {
"commands": [

View file

@ -17,22 +17,7 @@
***********************************************************************/
import * as extensionApi from '@podman-desktop/api';
const macosExtraPath = '/usr/local/bin:/opt/homebrew/bin:/opt/local/bin';
export function getInstallationPath(): string | undefined {
const env = process.env;
if (extensionApi.env.isMac) {
if (!env.PATH) {
return macosExtraPath;
} else {
return env.PATH.concat(':').concat(macosExtraPath);
}
} else {
return env.PATH;
}
}
export function getDockerCli(): string {
function getDockerCli(): string {
if (extensionApi.env.isWindows) {
return 'docker.exe';
}

View file

@ -41,7 +41,7 @@ class TestDockerContextHandler extends DockerContextHandler {
}
// mock exists sync
vi.mock('node:fs');
vi.mock(import('node:fs'));
const originalConsoleError = console.error;
let dockerContextHandler: TestDockerContextHandler;

View file

@ -57,6 +57,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '..', '..', '__mocks__/@podman-desktop/api.js'),
},

View file

@ -2,7 +2,7 @@
"name": "kind",
"displayName": "Kind",
"description": "Integration for Kind: run local Kubernetes clusters using container “nodes”",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -113,14 +113,14 @@
"@kubernetes/client-node": "^1.4.0",
"@podman-desktop/api": "workspace:*",
"mustache": "^4.2.0",
"yaml": "^2.8.2"
"yaml": "^2.8.3"
},
"devDependencies": {
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"mkdirp": "^3.0.1",
"tmp-promise": "^3.0.3",
"tsx": "^4.21.0",
"vite": "^7.2.7",
"vitest": "^4.0.10"
"vite": "^7.3.2",
"vitest": "^4.1.4"
}
}

View file

@ -31,16 +31,7 @@ import { getKindPath, getMemTotalInfo } from './util';
vi.mock(import('./kind-cluster-watcher'));
vi.mock(import('@kubernetes/client-node'));
vi.mock(import('./util'));
vi.mock('node:fs', () => ({
promises: {
writeFile: vi.fn(),
readFile: vi.fn(),
mkdtemp: vi.fn(),
rm: vi.fn(),
},
readFileSync: vi.fn(),
}));
vi.mock(import('node:fs'));
beforeEach(() => {
vi.resetAllMocks();
@ -407,7 +398,7 @@ test('check that consilience check returns warning message', async () => {
expect(checks.records.length).toBe(1);
expect(checks.records[0]).to.contains({
type: 'info',
record: 'It is recommend to install Kind on a virtual machine with at least 6GB of memory.',
record: 'It is recommended to install Kind on a virtual machine with at least 6GB of memory.',
} as AuditRecord);
});

View file

@ -211,7 +211,7 @@ export async function connectionAuditor(provider: string, items: AuditRequestIte
if (memTotal < 6000000000) {
records.push({
type: 'info',
record: 'It is recommend to install Kind on a virtual machine with at least 6GB of memory.',
record: 'It is recommended to install Kind on a virtual machine with at least 6GB of memory.',
});
}
}

View file

@ -28,7 +28,7 @@ import type { KindGithubReleaseArtifactMetadata } from './kind-installer';
import { KindInstaller } from './kind-installer';
import * as util from './util';
vi.mock('node:fs');
vi.mock(import('node:fs'));
vi.mock(import('./util'));
vi.mock(import('./image-handler'));
vi.mock(import('./create-cluster'));
@ -50,6 +50,7 @@ const PROVIDER_MOCK: podmanDesktopApi.Provider = {
onDidUpdateVersion: vi.fn(),
updateVersion: vi.fn(),
registerUpdate: vi.fn(),
updateWarnings: vi.fn(),
} as unknown as podmanDesktopApi.Provider;
beforeEach(() => {
@ -72,6 +73,7 @@ beforeEach(() => {
vi.mocked(podmanDesktopApi.containerEngine.listContainers).mockResolvedValue([]);
vi.mocked(util.removeVersionPrefix).mockReturnValue('1.0.0');
vi.mocked(util.getSystemBinaryPath).mockReturnValue('test-storage-path/kind');
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([]);
});
afterEach(() => {
@ -106,8 +108,10 @@ test('check we received notifications ', async () => {
callbackCalled = true;
});
const fakeProvider = {} as unknown as podmanDesktopApi.Provider;
extension.refreshKindClustersOnProviderConnectionUpdate(fakeProvider);
const fakeProvider = { updateWarnings: vi.fn() } as unknown as podmanDesktopApi.Provider;
const fakeTelemetryLogger = { logUsage: vi.fn() } as unknown as extensionApi.TelemetryLogger;
extension.refreshKindClustersOnProviderConnectionUpdate(fakeProvider, fakeTelemetryLogger);
expect(callbackCalled).toBeTruthy();
expect(listContainersMock).toBeCalledTimes(1);
});
@ -209,6 +213,7 @@ test('Ensuring a progress task is created when calling kind.image.move command',
setKubernetesProviderConnectionFactory: vi.fn(),
onDidUpdateVersion: vi.fn(),
updateVersion: vi.fn(),
updateWarnings: vi.fn(),
}));
const listContainersMock = vi.fn();
@ -311,6 +316,14 @@ describe('cli#update', () => {
expect(disposeMock).toHaveBeenCalled();
});
test('uninstall should clear the provider version', async () => {
vi.mocked(KindInstaller.prototype.getLatestVersionAsset).mockResolvedValue(mockV1Release);
await (await getCliToolInstaller()).doUninstall({} as unknown as extensionApi.Logger);
expect(PROVIDER_MOCK.updateVersion).toHaveBeenCalledWith('');
});
});
/**
@ -390,6 +403,7 @@ describe('cli#install', () => {
path: 'path',
version: '1.0.2',
});
expect(PROVIDER_MOCK.updateVersion).toHaveBeenCalledWith('1.0.2');
});
test('if installing system wide fails, it should not throw', async () => {
@ -480,11 +494,51 @@ describe('kubernetes create factory', () => {
);
});
test('activate should register a kubernetes create factory', async () => {
expect(PROVIDER_MOCK.setKubernetesProviderConnectionFactory).toHaveBeenCalledOnce();
test('activate should register a kubernetes create factory when running connections exist', async () => {
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([
{
connection: {
name: 'podman-machine-default',
status: () => 'started',
type: 'podman',
},
} as unknown as extensionApi.ProviderContainerConnection,
]);
await extension.activate(
vi.mocked<extensionApi.ExtensionContext>({
subscriptions: {
push: vi.fn(),
},
} as unknown as extensionApi.ExtensionContext),
);
expect(PROVIDER_MOCK.setKubernetesProviderConnectionFactory).toHaveBeenCalled();
});
test('activate should NOT register factory when no running connections', async () => {
expect(PROVIDER_MOCK.setKubernetesProviderConnectionFactory).not.toHaveBeenCalled();
});
test('expect info message to be displayed when no binary installed and cluster created called', async () => {
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([
{
connection: {
name: 'podman-machine-default',
status: () => 'started',
type: 'podman',
},
} as unknown as extensionApi.ProviderContainerConnection,
]);
await extension.activate(
vi.mocked<extensionApi.ExtensionContext>({
subscriptions: {
push: vi.fn(),
},
} as unknown as extensionApi.ExtensionContext),
);
// get the create method
const { create } = vi.mocked(PROVIDER_MOCK.setKubernetesProviderConnectionFactory).mock.calls[0][0];
expect(create).toBeDefined();
@ -501,6 +555,24 @@ describe('kubernetes create factory', () => {
});
test('user confirm installation should install latest', async () => {
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([
{
connection: {
name: 'podman-machine-default',
status: () => 'started',
type: 'podman',
},
} as unknown as extensionApi.ProviderContainerConnection,
]);
await extension.activate(
vi.mocked<extensionApi.ExtensionContext>({
subscriptions: {
push: vi.fn(),
},
} as unknown as extensionApi.ExtensionContext),
);
// get the create method
const { create } = vi.mocked(PROVIDER_MOCK.setKubernetesProviderConnectionFactory).mock.calls[0][0];
expect(create).toBeDefined();
@ -538,6 +610,15 @@ describe('provider#update', () => {
expect(PROVIDER_MOCK.registerUpdate).toHaveBeenCalled();
});
test('Register update in provider is not called if CLI is not installed', async () => {
vi.mocked(util.getKindBinaryInfo).mockRejectedValue(new Error('not found'));
vi.mocked(KindInstaller.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v1.5.6',
} as unknown as KindGithubReleaseArtifactMetadata);
await activate();
expect(PROVIDER_MOCK.registerUpdate).not.toHaveBeenCalled();
});
test('Register update in provider is not called if there is no update available', async () => {
vi.mocked(KindInstaller.prototype.getLatestVersionAsset).mockResolvedValue({
tag: 'v0.0.1',
@ -557,3 +638,78 @@ describe('provider#update', () => {
expect(disposeMock).toHaveBeenCalledTimes(1);
});
});
describe('provider warnings', () => {
beforeEach(() => {
vi.mocked(util.getKindBinaryInfo).mockResolvedValue({
path: 'kind',
version: '0.0.1',
});
(podmanDesktopApi.env.isLinux as unknown as boolean) = false;
});
test('should clear warnings when running container connections exist', async () => {
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([
{
connection: {
name: 'podman-machine-default',
status: () => 'started',
type: 'podman',
},
} as unknown as extensionApi.ProviderContainerConnection,
]);
await activate();
expect(PROVIDER_MOCK.updateWarnings).toHaveBeenCalledWith([]);
});
test('should show warning when no running container connections exist (non-Linux)', async () => {
(podmanDesktopApi.env.isLinux as unknown as boolean) = false;
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([]);
await activate();
expect(PROVIDER_MOCK.updateWarnings).toHaveBeenCalledWith([
{
name: 'Container Engine Required',
details: 'Start your container provider (e.g. Podman) to create Kind clusters',
},
]);
});
test('should show warning when no running container connections exist (Linux)', async () => {
(podmanDesktopApi.env.isLinux as unknown as boolean) = true;
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([]);
await activate();
expect(PROVIDER_MOCK.updateWarnings).toHaveBeenCalledWith([
{
name: 'Container Engine Required',
details: 'Install and start a container engine (e.g. Podman) to create Kind clusters',
},
]);
});
test('should show warning when container connections exist but none are running', async () => {
vi.mocked(podmanDesktopApi.provider.getContainerConnections).mockReturnValue([
{
connection: {
name: 'podman-machine-default',
status: () => 'stopped',
type: 'podman',
},
} as unknown as extensionApi.ProviderContainerConnection,
]);
await activate();
expect(PROVIDER_MOCK.updateWarnings).toHaveBeenCalledWith([
{
name: 'Container Engine Required',
details: 'Start your container provider (e.g. Podman) to create Kind clusters',
},
]);
});
});

View file

@ -21,8 +21,8 @@ import * as path from 'node:path';
import { Octokit } from '@octokit/rest';
import type { AuditRequestItems, CancellationToken, CliTool, Logger } from '@podman-desktop/api';
import { window } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import { window } from '@podman-desktop/api';
import { connectionAuditor, createCluster } from './create-cluster';
import type { ImageInfo } from './image-handler';
@ -93,12 +93,15 @@ async function installLatestKind(): Promise<string> {
return cliPath;
}
async function registerProvider(
extensionContext: extensionApi.ExtensionContext,
/**
* Registers the Kubernetes provider connection factory for creating Kind clusters.
* Should only be called when container connections are available.
*/
function registerKubernetesFactory(
provider: extensionApi.Provider,
telemetryLogger: extensionApi.TelemetryLogger,
): Promise<void> {
const disposable = provider.setKubernetesProviderConnectionFactory(
): extensionApi.Disposable {
return provider.setKubernetesProviderConnectionFactory(
{
create: async (params: { [key: string]: unknown }, logger?: Logger, token?: CancellationToken) => {
// if kind is not installed, let's ask the user to install it
@ -122,9 +125,43 @@ async function registerProvider(
},
},
);
extensionContext.subscriptions.push(disposable);
}
// search
/**
* Updates the Kind Kubernetes factory registration based on container connection availability.
* Registers factory when running connections exist, unregisters when none are available.
*/
function updateKubernetesFactoryRegistration(
provider: extensionApi.Provider,
telemetryLogger: extensionApi.TelemetryLogger,
): void {
const containerConnections = extensionApi.provider.getContainerConnections();
const runningConnections = containerConnections.filter(conn => conn.connection.status() === 'started');
if (runningConnections.length > 0) {
kubernetesFactoryDisposable ??= registerKubernetesFactory(provider, telemetryLogger);
provider.updateWarnings([]);
} else {
if (kubernetesFactoryDisposable) {
kubernetesFactoryDisposable.dispose();
kubernetesFactoryDisposable = undefined;
}
provider.updateWarnings([
{
name: 'Container Engine Required',
details: extensionApi.env.isLinux
? 'Install and start a container engine (e.g. Podman) to create Kind clusters'
: 'Start your container provider (e.g. Podman) to create Kind clusters',
},
]);
}
}
async function registerProvider(
provider: extensionApi.Provider,
telemetryLogger: extensionApi.TelemetryLogger,
): Promise<void> {
updateKubernetesFactoryRegistration(provider, telemetryLogger);
await searchKindClusters(provider);
console.log('kind extension is active');
}
@ -282,15 +319,20 @@ async function searchKindClusters(provider: extensionApi.Provider): Promise<void
await updateClusters(provider, kindContainers);
}
export function refreshKindClustersOnProviderConnectionUpdate(provider: extensionApi.Provider): void {
export function refreshKindClustersOnProviderConnectionUpdate(
provider: extensionApi.Provider,
telemetryLogger: extensionApi.TelemetryLogger,
): void {
// when a provider is changing, update the status
extensionApi.provider.onDidUpdateContainerConnection(async () => {
// needs to search for kind clusters
await searchKindClusters(provider);
updateKubernetesFactoryRegistration(provider, telemetryLogger);
});
}
let currentUpdateDisposable: extensionApi.Disposable | undefined = undefined;
let kubernetesFactoryDisposable: extensionApi.Disposable | undefined = undefined;
export async function createProvider(
extensionContext: extensionApi.ExtensionContext,
@ -316,7 +358,7 @@ export async function createProvider(
provider = extensionApi.provider.createProvider(providerOptions);
extensionContext.subscriptions.push(provider);
await registerProvider(extensionContext, provider, telemetryLogger);
await registerProvider(provider, telemetryLogger);
extensionContext.subscriptions.push(
extensionApi.commands.registerCommand(KIND_MOVE_IMAGE_COMMAND, async image => {
telemetryLogger.logUsage('moveImage');
@ -328,7 +370,7 @@ export async function createProvider(
}),
);
if (latestAsset && latestAsset.tag.slice(1) !== kindCli?.version && providerUpdate) {
if (kindPath && latestAsset && latestAsset.tag.slice(1) !== kindCli?.version && providerUpdate) {
currentUpdateDisposable = provider.registerUpdate(providerUpdate);
}
@ -341,16 +383,18 @@ export async function createProvider(
});
// when a container provider connection is changing, search for kind clusters
refreshKindClustersOnProviderConnectionUpdate(provider);
refreshKindClustersOnProviderConnectionUpdate(provider, telemetryLogger);
// search when a new container is updated or removed
extensionApi.provider.onDidRegisterContainerConnection(async () => {
await searchKindClusters(provider);
updateKubernetesFactoryRegistration(provider, telemetryLogger);
});
extensionApi.provider.onDidUnregisterContainerConnection(async () => {
await searchKindClusters(provider);
updateKubernetesFactoryRegistration(provider, telemetryLogger);
});
extensionApi.provider.onDidUpdateProvider(async () => registerProvider(extensionContext, provider, telemetryLogger));
extensionApi.provider.onDidUpdateProvider(async () => registerProvider(provider, telemetryLogger));
// search for kind clusters on boot
await searchKindClusters(provider);
}
@ -561,6 +605,7 @@ async function registerCliTool(
installationSource: 'extension',
});
kindPath = cliPath;
provider.updateVersion(releaseVersionToInstall);
if (releaseVersionToInstall === latestVersion) {
delete update.version;
} else {
@ -585,6 +630,7 @@ async function registerCliTool(
// update the version and path to undefined
kindPath = undefined;
provider.updateVersion('');
currentUpdateDisposable?.dispose();
},
});
@ -645,6 +691,12 @@ async function deleteExecutableAsAdmin(filePath: string): Promise<void> {
export function deactivate(): void {
console.log('stopping kind extension');
if (kubernetesFactoryDisposable) {
kubernetesFactoryDisposable.dispose();
kubernetesFactoryDisposable = undefined;
}
kindPath = undefined;
kindCli = undefined;
}

View file

@ -16,25 +16,28 @@
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import * as fs from 'node:fs';
import { writeFileSync } from 'node:fs';
import * as os from 'node:os';
import * as extensionApi from '@podman-desktop/api';
import type { Mock } from 'vitest';
import { beforeEach, expect, test, vi } from 'vitest';
import { ImageHandler } from './image-handler';
import { getKindPath } from './util';
import { getKindPath, getTempDir } from './util';
let imageHandler: ImageHandler;
vi.mock('./util', async () => {
vi.mock(import('./util'), async () => {
return {
getKindPath: vi.fn(),
getTempDir: vi.fn(),
};
});
beforeEach(() => {
vi.clearAllMocks();
vi.mocked(getTempDir).mockResolvedValue(os.tmpdir());
imageHandler = new ImageHandler();
});
@ -58,7 +61,10 @@ test('expect error to be raised if no clusters are given', async () => {
test('expect image name to be given', async () => {
(extensionApi.containerEngine.saveImage as Mock).mockImplementation(
(engineId: string, id: string, filename: string) => fs.promises.open(filename, 'w'),
(_engineId: string, _id: string, filename: string) => {
writeFileSync(filename, '');
return Promise.resolve();
},
);
await imageHandler.moveImage(
@ -71,7 +77,7 @@ test('expect image name to be given', async () => {
test('expect getting showInformationMessage when image is pushed', async () => {
(extensionApi.containerEngine.saveImage as Mock).mockImplementation(
(engineId: string, id: string, filename: string) => fs.promises.open(filename, 'w'),
(_engineId: string, _id: string, filename: string) => writeFileSync(filename, ''),
);
await imageHandler.moveImage(
@ -84,7 +90,7 @@ test('expect getting showInformationMessage when image is pushed', async () => {
test('expect image name and tag to be given', async () => {
(extensionApi.containerEngine.saveImage as Mock).mockImplementation(
(engineId: string, id: string, filename: string) => fs.promises.open(filename, 'w'),
(_engineId: string, _id: string, filename: string) => writeFileSync(filename, ''),
);
await imageHandler.moveImage(
@ -97,7 +103,7 @@ test('expect image name and tag to be given', async () => {
test('expect cli is called with right PATH', async () => {
(extensionApi.containerEngine.saveImage as Mock).mockImplementation(
(engineId: string, id: string, filename: string) => fs.promises.open(filename, 'w'),
(_engineId: string, _id: string, filename: string) => writeFileSync(filename, ''),
);
(getKindPath as Mock).mockReturnValue('my-custom-path');

View file

@ -16,12 +16,12 @@
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import * as fs from 'node:fs';
import { join } from 'node:path';
import * as extensionApi from '@podman-desktop/api';
import { tmpName } from 'tmp-promise';
import type { KindCluster } from './extension';
import { getKindPath } from './util';
import { getKindPath, getTempDir } from './util';
export type ImageInfo = { engineId: string; name?: string; tag?: string };
@ -56,6 +56,7 @@ export class ImageHandler {
// Only proceed if a cluster was selected
if (selectedCluster) {
let name = image.name;
let tmpDirectory: string | undefined;
let filename: string | undefined;
const env: { [key: string]: string } = {};
@ -73,8 +74,12 @@ export class ImageHandler {
env.PATH = getKindPath() ?? '';
try {
// Create a temporary file to store the image
filename = await tmpName();
// Create a temporary directory to store the image archive.
// In Flatpak, /tmp is sandbox-private; getTempDir() returns a shared directory
// so the host-side `kind` process can access the file via flatpak-spawn.
const baseDir = await getTempDir();
tmpDirectory = await fs.promises.mkdtemp(join(baseDir, 'kind-image-'));
filename = join(tmpDirectory, 'image.tar');
// Save the image to the temporary file
await extensionApi.containerEngine.saveImage(image.engineId, name, filename);
@ -98,9 +103,9 @@ export class ImageHandler {
// Throw the errors to the console aswell
throw new Error(`Unable to push image to Kind cluster: ${err}`);
} finally {
// Remove the temporary file if one was created
if (filename !== undefined) {
await fs.promises.rm(filename);
// Remove the temporary directory and its contents
if (tmpDirectory !== undefined) {
await fs.promises.rm(tmpDirectory, { recursive: true });
}
}
}

View file

@ -16,13 +16,13 @@
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import { KubeConfig } from '@kubernetes/client-node';
import * as k8s from '@kubernetes/client-node';
import { KubeConfig } from '@kubernetes/client-node';
import { beforeEach, describe, expect, test, vi } from 'vitest';
import { KindClusterWatcher } from './kind-cluster-watcher';
vi.mock('@kubernetes/client-node');
vi.mock(import('@kubernetes/client-node'));
describe('KindClusterWatcher', () => {
let mockKubeConfig: KubeConfig;

View file

@ -31,7 +31,7 @@ import * as util from './util';
let installer: KindInstaller;
vi.mock('node:os', async () => {
vi.mock(import('node:os'), async () => {
return {
platform: vi.fn(),
arch: vi.fn(),
@ -239,7 +239,7 @@ describe('install', () => {
});
vi.mocked(os.platform).mockReturnValue('win32');
vi.mocked(os.arch).mockReturnValue('x64');
vi.mock('node:fs');
vi.mock(import('node:fs'));
vi.mocked(fs.existsSync).mockReturnValue(true);
const chmodMock = vi.spyOn(fs.promises, 'chmod');
const downloadReleaseAssetMock = vi
@ -264,7 +264,7 @@ describe('install', () => {
});
vi.mocked(os.platform).mockReturnValue('darwin');
vi.mocked(os.arch).mockReturnValue('x64');
vi.mock('node:fs');
vi.mock(import('node:fs'));
vi.mocked(fs.existsSync).mockReturnValue(true);
const chmodMock = vi.spyOn(fs.promises, 'chmod').mockResolvedValue();
const downloadReleaseAssetMock = vi
@ -278,7 +278,7 @@ describe('install', () => {
describe('downloadReleaseAsset', () => {
test('should download the file if parent folder does exist', async () => {
vi.mock('node:fs');
vi.mock(import('node:fs'));
getReleaseAssetMock.mockImplementation(() => {
return { data: 'foo' };
@ -302,7 +302,7 @@ describe('downloadReleaseAsset', () => {
});
test('should download the file if parent folder does not exist', async () => {
vi.mock('node:fs');
vi.mock(import('node:fs'));
getReleaseAssetMock.mockImplementation(() => {
return { data: 'foo' };

View file

@ -0,0 +1,68 @@
/**********************************************************************
* Copyright (C) 2026 Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import * as fs from 'node:fs';
import * as os from 'node:os';
import { join } from 'node:path';
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
import { getTempDir } from './util';
vi.mock(import('node:fs'));
describe('getTempDir', () => {
const originalEnv = process.env;
beforeEach(() => {
vi.resetAllMocks();
process.env = { ...originalEnv };
delete process.env['FLATPAK_ID'];
delete process.env['XDG_CACHE_HOME'];
vi.mocked(fs.promises.mkdir).mockResolvedValue(undefined);
});
afterEach(() => {
process.env = originalEnv;
});
test('returns os.tmpdir() when not running in Flatpak', async () => {
const result = await getTempDir();
expect(result).toBe(os.tmpdir());
expect(fs.promises.mkdir).not.toHaveBeenCalled();
});
test('returns XDG_CACHE_HOME/kind-tmp when running in Flatpak with XDG_CACHE_HOME set', async () => {
process.env['FLATPAK_ID'] = 'io.podman_desktop.PodmanDesktop';
process.env['XDG_CACHE_HOME'] = '/custom/cache';
const result = await getTempDir();
const expected = join('/custom/cache', 'kind-tmp');
expect(result).toBe(expected);
expect(fs.promises.mkdir).toHaveBeenCalledWith(expected, { recursive: true });
});
test('falls back to ~/.cache/kind-tmp when running in Flatpak without XDG_CACHE_HOME', async () => {
process.env['FLATPAK_ID'] = 'io.podman_desktop.PodmanDesktop';
const result = await getTempDir();
const expected = join(os.homedir(), '.cache', 'kind-tmp');
expect(result).toBe(expected);
expect(fs.promises.mkdir).toHaveBeenCalledWith(expected, { recursive: true });
});
});

View file

@ -16,6 +16,7 @@
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import * as fs from 'node:fs';
import * as http from 'node:http';
import * as os from 'node:os';
import { isAbsolute, join } from 'node:path';
@ -197,3 +198,18 @@ export async function getMemTotalInfo(socketPath: string): Promise<number> {
export function removeVersionPrefix(version: string): string {
return version.replace('v', '').trim();
}
/**
* Returns a temp directory accessible from both the Flatpak sandbox and the host.
* In Flatpak, /tmp is a private tmpfs, so we use ~/.cache/kind-tmp/ which is
* shared via --filesystem=home.
*/
export async function getTempDir(): Promise<string> {
if (process.env['FLATPAK_ID']) {
const cacheHome = process.env['XDG_CACHE_HOME'] ?? join(os.homedir(), '.cache');
const tmpDir = join(cacheHome, 'kind-tmp');
await fs.promises.mkdir(tmpDir, { recursive: true });
return tmpDir;
}
return os.tmpdir();
}

View file

@ -57,6 +57,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '__mocks__/@podman-desktop/api.js'),
},

View file

@ -2,7 +2,7 @@
"name": "kube-context",
"displayName": "Kube Context",
"description": "Easily switch between Kubernetes contexts",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -42,10 +42,10 @@
"js-yaml": "^4.1.1"
},
"devDependencies": {
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"@types/js-yaml": "^4.0.9",
"mkdirp": "^3.0.1",
"vite": "^7.2.7",
"vitest": "^4.0.10"
"vite": "^7.3.2",
"vitest": "^4.1.4"
}
}

View file

@ -29,17 +29,6 @@ const item = {
text: '',
};
vi.mock('@podman-desktop/api', async () => {
return {
window: {
createStatusBarItem: vi.fn(),
},
tray: {
registerMenuItem: vi.fn(),
},
};
});
beforeAll(() => {
(podmanDesktopApi.window.createStatusBarItem as Mock).mockReturnValue(item);
});

View file

@ -57,6 +57,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '__mocks__/@podman-desktop/api.js'),
},

View file

@ -2,7 +2,7 @@
"name": "kubectl-cli",
"displayName": "kubectl CLI",
"description": "Install and update kubectl CLI Tools without leaving Podman Desktop",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -148,16 +148,16 @@
"dependencies": {
"@octokit/rest": "^22.0.1",
"@podman-desktop/api": "workspace:*",
"semver": "^7.7.3",
"semver": "^7.7.4",
"shell-path": "^3.1.0"
},
"devDependencies": {
"@types/semver": "^7.7.1",
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"byline": "^5.0.0",
"copyfiles": "^2.4.1",
"mkdirp": "^3.0.1",
"vite": "^7.2.7",
"vitest": "^4.0.10"
"vite": "^7.3.2",
"vitest": "^4.1.4"
}
}

View file

@ -25,7 +25,7 @@ import { beforeEach, expect, test, vi } from 'vitest';
import { installBinaryToSystem } from './cli-run';
// mock exists sync
vi.mock('node:fs', async () => {
vi.mock(import('node:fs'), async () => {
return {
existsSync: vi.fn(),
};

View file

@ -34,7 +34,7 @@ const osMock: OS = {
let detect: Detect;
vi.mock('shell-path', () => {
vi.mock(import('shell-path'), () => {
return {
shellPath: vi.fn(),
};
@ -101,7 +101,7 @@ describe('Check storage path', async () => {
});
test('found', async () => {
vi.mock('node:fs');
vi.mock(import('node:fs'));
const existSyncSpy = vi.spyOn(fs, 'existsSync');
existSyncSpy.mockImplementation(() => true);

View file

@ -124,7 +124,7 @@ test('test download of kubectl passes and that mkdir and executable mocks are ca
const downloadReleaseAssetMock = vi.spyOn(kubectlGitHubReleasesMock, 'downloadReleaseAsset');
// Mock that the storage path does not exist
vi.mock('node:fs');
vi.mock(import('node:fs'));
vi.spyOn(fs, 'existsSync').mockImplementation(() => {
return false;
});

View file

@ -20,7 +20,7 @@ import * as fs from 'node:fs';
import { tmpdir } from 'node:os';
import * as path from 'node:path';
import type { CliToolSelectUpdate, Configuration, Logger } from '@podman-desktop/api';
import type { CliToolSelectUpdate, Configuration, Logger, Provider, ProviderUpdate } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
@ -37,21 +37,17 @@ const extensionContext = {
vi.mock(import('./cli-run'));
vi.mock(import('./kubectl-github-releases'));
vi.mock('node:fs', () => ({
promises: {
chmod: vi.fn(),
mkdir: vi.fn(),
unlink: vi.fn(),
},
existsSync: vi.fn(),
}));
vi.mock(import('node:fs'));
beforeEach(() => {
vi.mocked(extensionApi.configuration.getConfiguration).mockReturnValue({
update: vi.fn(),
} as unknown as Configuration);
vi.mocked(extensionApi.process.exec).mockClear();
vi.mocked(extensionApi.provider.createProvider).mockReturnValue({
registerUpdate: vi.fn().mockReturnValue({ dispose: vi.fn() }),
updateVersion: vi.fn(),
} as unknown as Provider);
vi.mocked(KubectlGitHubReleases.prototype.grabLatestsReleasesMetadata).mockResolvedValue([
{
@ -523,6 +519,9 @@ describe('postActivate', () => {
expect(vi.mocked(cliRun.installBinaryToSystem).mock.calls[0][0]).toContain(
path.resolve(extensionContext.storagePath, 'bin', 'kubectl'),
);
const providerMock = vi.mocked(extensionApi.provider.createProvider).mock.results[0].value as Provider;
expect(providerMock.updateVersion).toHaveBeenCalledWith('1.2.0');
});
test('doInstall should download and install selected binary', async () => {
@ -652,6 +651,9 @@ describe('postActivate', () => {
expect(fs.promises.unlink).toHaveBeenCalledWith(path.join(extensionContext.storagePath, 'bin', 'kubectl'));
expect(extensionApi.process.exec).toHaveBeenCalledWith('rm', ['system-path'], { isAdmin: true });
const providerMock = vi.mocked(extensionApi.provider.createProvider).mock.results[0].value as Provider;
expect(providerMock.updateVersion).toHaveBeenCalledWith('');
});
test('if unlink fails because of a permission issue, it should delete all binaries as admin', async () => {
@ -717,4 +719,136 @@ describe('postActivate', () => {
{ isAdmin: true },
);
});
describe('provider registerUpdate (Resources page)', () => {
let registerUpdateSpy: ReturnType<typeof vi.fn>;
beforeEach(() => {
registerUpdateSpy = vi.fn().mockReturnValue({ dispose: vi.fn() });
vi.mocked(extensionApi.provider.createProvider).mockReturnValue({
registerUpdate: registerUpdateSpy,
updateVersion: vi.fn(),
} as unknown as Provider);
});
function mockExtensionInstalledKubectl(): void {
vi.spyOn(cliRun, 'getSystemBinaryPath').mockReturnValue('system-path');
vi.mocked(extensionApi.process.exec).mockImplementation(
(_command: string, _args?: string[], _options?: extensionApi.RunOptions) =>
new Promise<extensionApi.RunResult>(resolve => {
if (_args?.[0] === 'version') {
resolve({
stderr: '',
stdout: JSON.stringify(jsonStdout),
command: 'kubectl version --client=true -o=json',
});
return;
}
resolve({
stderr: '',
stdout: 'system-path',
command: 'which kubectl',
});
}),
);
}
/** Real CliTool exposes `version`; the extension compares it to the latest release tag. */
function mockCliToolWithVersion(
resolveRegisterUpdate: (listener: CliToolSelectUpdate) => void,
options: { version?: string },
): extensionApi.CliTool {
return {
registerUpdate: (listener: CliToolSelectUpdate) => {
resolveRegisterUpdate(listener);
return {
dispose: vi.fn(),
};
},
registerInstaller: vi.fn(),
updateVersion: vi.fn(),
get version(): string | undefined {
return options.version;
},
} as unknown as extensionApi.CliTool;
}
test('registers provider update when a newer kubectl version is available', async () => {
mockExtensionInstalledKubectl();
const deferredCliUpdate: Promise<CliToolSelectUpdate> = new Promise<CliToolSelectUpdate>(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await KubectlExtension.activate(extensionContext);
await deferredCliUpdate;
expect(registerUpdateSpy).toHaveBeenCalledOnce();
expect(registerUpdateSpy.mock.calls[0][0]).toEqual(expect.objectContaining({ version: '1.30.3' }));
});
test('does not register provider update when kubectl is already the latest version', async () => {
vi.mocked(KubectlGitHubReleases.prototype.grabLatestsReleasesMetadata).mockResolvedValue([
{
label: 'Kubernetes v1.28.3',
tag: 'v1.28.3',
id: 165829199,
},
]);
vi.spyOn(cliRun, 'getSystemBinaryPath').mockReturnValue('system-path');
vi.mocked(extensionApi.process.exec).mockImplementation(
(_command: string, _args?: string[], _options?: extensionApi.RunOptions) =>
new Promise<extensionApi.RunResult>(resolve => {
if (_args?.[0] === 'version') {
resolve({
stderr: '',
stdout: JSON.stringify(jsonStdout),
command: 'kubectl version --client=true -o=json',
});
return;
}
resolve({
stderr: '',
stdout: 'system-path',
command: 'which kubectl',
});
}),
);
const deferredCliUpdate: Promise<CliToolSelectUpdate> = new Promise<CliToolSelectUpdate>(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await KubectlExtension.activate(extensionContext);
await deferredCliUpdate;
expect(registerUpdateSpy).not.toHaveBeenCalled();
});
test('provider update callback downloads and installs kubectl', async () => {
mockExtensionInstalledKubectl();
const deferredCliUpdate: Promise<CliToolSelectUpdate> = new Promise<CliToolSelectUpdate>(resolve => {
vi.mocked(extensionApi.cli.createCliTool).mockImplementation(opts =>
mockCliToolWithVersion(resolve, opts as { version?: string }),
);
});
await KubectlExtension.activate(extensionContext);
await deferredCliUpdate;
const providerUpdate = registerUpdateSpy.mock.calls[0][0] as ProviderUpdate;
await providerUpdate.update({} as unknown as Logger);
expect(KubectlGitHubReleases.prototype.downloadReleaseAsset).toHaveBeenCalledWith(
'dummy download url',
expect.anything(),
);
expect(cliRun.installBinaryToSystem).toHaveBeenCalledWith(expect.anything(), 'kubectl');
expect(vi.mocked(cliRun.installBinaryToSystem).mock.calls[0][0]).toContain(
path.resolve(extensionContext.storagePath, 'bin', 'kubectl'),
);
});
});
});

View file

@ -20,7 +20,7 @@ import * as fs from 'node:fs';
import * as path from 'node:path';
import { Octokit } from '@octokit/rest';
import type { CliTool } from '@podman-desktop/api';
import type { CliTool, Logger, ProviderUpdate } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import { getSystemBinaryPath, installBinaryToSystem } from './cli-run';
@ -239,7 +239,7 @@ export async function activate(extensionContext: extensionApi.ExtensionContext):
// Push the CLI tool as well (but it will do it postActivation so it does not block the activate() function)
// Post activation
postActivate(extensionContext, kubectlDownload).catch((error: unknown) => {
postActivate(extensionContext, kubectlDownload, provider).catch((error: unknown) => {
console.error('Error activating extension', error);
});
}
@ -309,6 +309,7 @@ export async function findKubeCtl(extensionContext: extensionApi.ExtensionContex
async function postActivate(
extensionContext: extensionApi.ExtensionContext,
kubectlDownload: KubectlDownload,
provider: extensionApi.Provider,
): Promise<void> {
await findKubeCtl(extensionContext);
@ -352,6 +353,9 @@ async function postActivate(
console.error('Error when downloading kubectl CLI latest release information.', String(error));
}
let kubectlProviderUpdateDisposable: extensionApi.Disposable | undefined;
let kubectlProviderUpdate: ProviderUpdate | undefined;
const update = {
version: latestAsset?.tag.slice(1) !== kubectlCliTool.version ? latestAsset?.tag.slice(1) : undefined,
selectVersion: async (): Promise<string> => {
@ -377,10 +381,17 @@ async function postActivate(
installationSource: 'extension',
});
vpState.version = releaseVersionToUpdateTo;
provider.updateVersion(releaseVersionToUpdateTo);
if (releaseToUpdateTo === latestAsset) {
delete update.version;
kubectlProviderUpdateDisposable?.dispose();
} else {
update.version = latestAsset?.tag.slice(1);
if (kubectlProviderUpdate) {
kubectlProviderUpdate.version = latestAsset?.tag.slice(1) ?? kubectlProviderUpdate.version;
kubectlProviderUpdateDisposable?.dispose();
kubectlProviderUpdateDisposable = provider.registerUpdate(kubectlProviderUpdate);
}
}
releaseVersionToUpdateTo = undefined;
releaseToUpdateTo = undefined;
@ -414,6 +425,7 @@ async function postActivate(
installationSource: 'extension',
});
vpState.version = releaseVersionToInstall;
provider.updateVersion(releaseVersionToInstall);
if (releaseToInstall === latestAsset) {
delete update.version;
} else {
@ -437,6 +449,8 @@ async function postActivate(
// update the version to undefined
vpState.version = undefined;
provider.updateVersion('');
kubectlProviderUpdateDisposable?.dispose();
},
});
@ -450,6 +464,18 @@ async function postActivate(
kubectlCliToolUpdaterDisposable = kubectlCliTool.registerUpdate(update);
extensionContext.subscriptions.push(kubectlCliToolUpdaterDisposable);
if (update.version) {
kubectlProviderUpdate = {
version: update.version,
update: async (_logger: Logger): Promise<void> => {
releaseToUpdateTo = undefined;
releaseVersionToUpdateTo = undefined;
await update.doUpdate();
},
};
kubectlProviderUpdateDisposable = provider.registerUpdate(kubectlProviderUpdate);
}
}
function extractVersion(stdout: string): string {

View file

@ -116,7 +116,7 @@ describe('Grab asset id for a given release id', async () => {
});
test('should download the file if parent folder does exist', async () => {
vi.mock('node:fs');
vi.mock(import('node:fs'));
getReleaseAssetMock.mockImplementation(() => {
return { data: 'foo' };
@ -140,7 +140,7 @@ test('should download the file if parent folder does exist', async () => {
});
test('should download the file if parent folder does not exist', async () => {
vi.mock('node:fs');
vi.mock(import('node:fs'));
getReleaseAssetMock.mockReturnValue({ data: 'foo' });

View file

@ -58,6 +58,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '__mocks__/@podman-desktop/api.js'),
},

View file

@ -2,7 +2,7 @@
"name": "lima",
"displayName": "Lima",
"description": "Integration for Lima: Linux Machines (typically macOS)",
"version": "1.24.0-next",
"version": "1.28.0-next",
"icon": "icon.png",
"publisher": "podman-desktop",
"license": "Apache-2.0",
@ -72,10 +72,10 @@
"@podman-desktop/api": "workspace:*"
},
"devDependencies": {
"adm-zip": "^0.5.16",
"adm-zip": "^0.5.17",
"mkdirp": "^3.0.1",
"vite": "^7.2.7",
"vitest": "^4.0.10",
"vite": "^7.3.2",
"vitest": "^4.1.4",
"tmp-promise": "^3.0.3"
}
}

View file

@ -47,6 +47,6 @@ export function getLimactl(): string {
// Get the limactl binary path from configuration lima.binary.path
// return string or undefined
export function getCustomBinaryPath(): string | undefined {
function getCustomBinaryPath(): string | undefined {
return extensionApi.configuration.getConfiguration('lima').get('binary.path');
}

View file

@ -57,6 +57,7 @@ const config = {
globals: true,
environment: 'node',
include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
globalSetup: [join(PACKAGE_ROOT, '..', '..', '__mocks__', 'vitest-generate-api-global-setup.ts')],
alias: {
'@podman-desktop/api': join(PACKAGE_ROOT, '..', '..', '__mocks__/@podman-desktop/api.js'),
},

Some files were not shown because too many files have changed in this diff Show more