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>
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>
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>
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>
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
* 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>
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>
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
* 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>
#### 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>
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>
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>
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>
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>
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>
Extract timeout logic into a shared withTimeout utility
Closes#16701
Co-Authored-By: Claude (glm-5.1)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>