Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package agama-web-ui for openSUSE:Factory checked in at 2026-07-21 22:55:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/agama-web-ui (Old) and /work/SRC/openSUSE:Factory/.agama-web-ui.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "agama-web-ui" Tue Jul 21 22:55:05 2026 rev:49 rq:1366761 version:0 Changes: -------- --- /work/SRC/openSUSE:Factory/agama-web-ui/agama-web-ui.changes 2026-07-17 18:47:49.729911606 +0200 +++ /work/SRC/openSUSE:Factory/.agama-web-ui.new.24530/agama-web-ui.changes 2026-07-21 22:55:20.531329739 +0200 @@ -1,0 +2,18 @@ +Mon Jul 20 11:12:34 UTC 2026 - Imobach Gonzalez Sosa <[email protected]> + +- Version 23 + +------------------------------------------------------------------- +Fri Jul 17 08:42:50 UTC 2026 - Martin Vidner <[email protected]> + +- update runtime dependencies: + - react-router to 7.15.1, CVE-2026-53663 (bsc#1268993) +- consequently, update call sites for stricter types of + generatePath, generateEncodedPath + +------------------------------------------------------------------- +Thu Jul 16 15:10:34 UTC 2026 - Ancor Gonzalez Sosa <[email protected]> + +- Do not display the type when reusing filesystems (bsc#1271008). + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ agama.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/package/agama-web-ui.changes new/agama/package/agama-web-ui.changes --- old/agama/package/agama-web-ui.changes 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/package/agama-web-ui.changes 2026-07-20 13:59:40.000000000 +0200 @@ -1,4 +1,22 @@ ------------------------------------------------------------------- +Mon Jul 20 11:12:34 UTC 2026 - Imobach Gonzalez Sosa <[email protected]> + +- Version 23 + +------------------------------------------------------------------- +Fri Jul 17 08:42:50 UTC 2026 - Martin Vidner <[email protected]> + +- update runtime dependencies: + - react-router to 7.15.1, CVE-2026-53663 (bsc#1268993) +- consequently, update call sites for stricter types of + generatePath, generateEncodedPath + +------------------------------------------------------------------- +Thu Jul 16 15:10:34 UTC 2026 - Ancor Gonzalez Sosa <[email protected]> + +- Do not display the type when reusing filesystems (bsc#1271008). + +------------------------------------------------------------------- Thu Jul 16 07:06:02 UTC 2026 - David Diaz <[email protected]> - Prevent the partition and logical volume forms from flickering diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/package-lock.json new/agama/package-lock.json --- old/agama/package-lock.json 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/package-lock.json 2026-07-20 13:59:40.000000000 +0200 @@ -23,7 +23,7 @@ "radashi": "^12.7.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router": "7.14.0", + "react-router": "7.15.1", "sprintf-js": "^1.1.3", "stacktracey": "^2.1.8", "xbytes": "^1.9.1" @@ -15917,9 +15917,9 @@ } }, "node_modules/react-router": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz", - "integrity": "sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==", + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.1.tgz", + "integrity": "sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/package.json new/agama/package.json --- old/agama/package.json 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/package.json 2026-07-20 13:59:40.000000000 +0200 @@ -108,7 +108,7 @@ "radashi": "^12.7.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router": "7.14.0", + "react-router": "7.15.1", "sprintf-js": "^1.1.3", "stacktracey": "^2.1.8", "xbytes": "^1.9.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/assets/styles/components/_agama-custom.scss new/agama/src/assets/styles/components/_agama-custom.scss --- old/agama/src/assets/styles/components/_agama-custom.scss 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/assets/styles/components/_agama-custom.scss 2026-07-20 13:59:40.000000000 +0200 @@ -129,12 +129,6 @@ font-size: inherit; } -// FIXME: make it more generic, if possible, or even without CSS but not -// rendering such a label if "storage instructions" are more than one -.storage-structure:has(> li:nth-child(2)) span.action-text { - display: none; -} - .agm-split-info-layout-container { height: 100%; place-content: center; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/assets/styles/components/_patternfly-overrides.scss new/agama/src/assets/styles/components/_patternfly-overrides.scss --- old/agama/src/assets/styles/components/_patternfly-overrides.scss 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/assets/styles/components/_patternfly-overrides.scss 2026-07-20 13:59:40.000000000 +0200 @@ -28,14 +28,6 @@ inline-size: 50dvw; } -.pf-v6-c-masthead__toggle button { - --pf-v6-c-button--LineHeight: 0; - - svg { - font-size: var(--pf-t--global--font--size--xl); - } -} - .pf-v6-c-masthead { --pf-v6-c-masthead__logo--Width: fit-content; // Reduce the top and bottom padding to a small 2px to save vertical space @@ -140,20 +132,6 @@ --pf-v6-c-menu__item-select-icon--Color: var(--pf-t--global--icon--color--brand--default); } -.pf-v6-c-nav__link { - --pf-v6-c-nav__link--AlignItems: center; - padding-inline-start: var(--pf-t--global--spacer--sm); - padding-inline-end: var(--pf-t--global--spacer--sm); - - svg { - font-size: var(--pf-t--global--font--size--lg); - } -} - -.pf-v6-c-nav__link.pf-m-current { - font-weight: 600; -} - .pf-v6-c-button { --pf-v6-c-button--BorderRadius: var(--pf-t--global--border--radius--small); @@ -174,11 +152,6 @@ --pf-v6-c-button--m-link--m-inline__icon--Color: var(--pf-t--global--text--color--link--default); } -.pf-v6-c-menu-toggle.pf-m-split-button > :first-child { - text-decoration: none; - color: inherit; -} - label.pf-m-disabled + .pf-v6-c-check__description { color: var(--pf-v6-c-check__label--disabled--Color); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/core/SplitButton.test.tsx new/agama/src/components/core/SplitButton.test.tsx --- old/agama/src/components/core/SplitButton.test.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/core/SplitButton.test.tsx 1970-01-01 01:00:00.000000000 +0100 @@ -1,102 +0,0 @@ -/* - * Copyright (c) [2025] SUSE LLC - * - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, contact SUSE LLC. - * - * To contact SUSE LLC about this file by physical or electronic mail, you may - * find current contact information at www.suse.com. - */ - -import React from "react"; -import { screen, waitForElementToBeRemoved, within } from "@testing-library/react"; -import { installerRender } from "~/test-utils"; -import SplitButton from "./SplitButton"; -import { _ } from "~/i18n"; - -const mainOnClickFn = jest.fn(); -const secondaryOnClickFn = jest.fn(); - -const SplitButtonTest = ({ href }: { href?: string }) => ( - <SplitButton label="Test" toggleAriaLabel={_("More actions")} href={href} onClick={mainOnClickFn}> - <SplitButton.Item onClick={secondaryOnClickFn}>Second test</SplitButton.Item> - </SplitButton> -); - -describe("SplitButton", () => { - it("renders two buttons if href prop is not provided: the main action button and the toggle button", () => { - installerRender(<SplitButtonTest />); - - screen.getByRole("button", { name: "Test" }); - screen.getByRole("button", { name: "More actions" }); - }); - - it("renders the main action as a link and the toggle as a button when the 'href' prop is provided", () => { - installerRender(<SplitButtonTest href="somewhere" />); - - screen.getByRole("link", { name: "Test" }); - screen.getByRole("button", { name: "More actions" }); - }); - - it("triggers the 'onClick' function when the main action button is clicked", async () => { - const { user } = installerRender(<SplitButtonTest />); - - const mainAction = screen.getByRole("button", { name: "Test" }); - await user.click(mainAction); - expect(mainOnClickFn).toHaveBeenCalled(); - }); - - it("allows expanding and collapsing the menu holding additional actions when the toggle button is clicked", async () => { - const { user } = installerRender(<SplitButtonTest />); - - const toggleAction = screen.getByRole("button", { name: "More actions" }); - expect(toggleAction).toHaveAttribute("aria-haspopup"); - expect(toggleAction).toHaveAttribute("aria-controls"); - expect(toggleAction).toHaveAttribute("aria-expanded", "false"); - - // Click on the toggle button to open the menu - await user.click(toggleAction); - expect(mainOnClickFn).not.toHaveBeenCalled(); - expect(toggleAction).toHaveAttribute("aria-expanded", "true"); - const moreActions = screen.getByRole("menu"); - - // Click on the toggle button to open the menu - await user.click(toggleAction); - expect(toggleAction).toHaveAttribute("aria-expanded", "false"); - await waitForElementToBeRemoved(moreActions); - }); - - it("closes the menu when a secondary action is clicked", async () => { - const { user } = installerRender(<SplitButtonTest />); - - const toggleAction = screen.getByRole("button", { name: "More actions" }); - expect(toggleAction).toHaveAttribute("aria-expanded", "false"); - - // Click on the toggle button to open the menu - await user.click(toggleAction); - - // Find and click on a secondary action inside the expanded menu - const moreActions = screen.getByRole("menu"); - const secondaryAction = within(moreActions).getByRole("menuitem", { name: "Second test" }); - await user.click(secondaryAction); - - // Verify that the secondary action's onClick handler is called - expect(secondaryOnClickFn).toHaveBeenCalled(); - - // Ensure that the menu is closed - expect(toggleAction).toHaveAttribute("aria-expanded", "false"); - await waitForElementToBeRemoved(moreActions); - }); -}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/core/SplitButton.tsx new/agama/src/components/core/SplitButton.tsx --- old/agama/src/components/core/SplitButton.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/core/SplitButton.tsx 1970-01-01 01:00:00.000000000 +0100 @@ -1,127 +0,0 @@ -/* - * Copyright (c) [2025] SUSE LLC - * - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, contact SUSE LLC. - * - * To contact SUSE LLC about this file by physical or electronic mail, you may - * find current contact information at www.suse.com. - */ - -import React, { useId, useState } from "react"; -import { - Dropdown, - DropdownItem, - DropdownList, - MenuToggle, - MenuToggleAction, - MenuToggleActionProps, - MenuToggleProps, -} from "@patternfly/react-core"; -import { Link } from "~/components/core"; -import { _, TranslatedString } from "~/i18n"; - -/** - * Type for props accepted by SplitButton - * - * Children prop is specifically declared below to make it required. - * - * NOTE: Unfortunately, it's not easy to restrict children to a specific - * component type. For more information, see - * https://www.totaltypescript.com/type-safe-children-in-react-and-typescript. - * If necessary, consider using an specific prop instead. - */ -type SplitButtonBaseProps = React.PropsWithChildren<{ - /** Label for the link or button acting as a main action */ - label: React.ReactNode; - /** Accessible label for the toggle button */ - toggleAriaLabel?: TranslatedString; - /** Variant styles of the menu toggle */ - variant?: MenuToggleProps["variant"]; - /** The URL or path for the main action when it should be a link */ - href?: string; - /** Callback to be triggred when main action is clicked */ - onClick?: MenuToggleActionProps["onClick"]; - /** Actions to be placed in the expandable menu */ - children: React.ReactNode; -}>; - -export type SplitButtonProps = - | (SplitButtonBaseProps & { href: string; onClick?: never }) - | (SplitButtonBaseProps & { href?: never; onClick: MenuToggleActionProps["onClick"] }) - | (SplitButtonBaseProps & { href: string; onClick: MenuToggleActionProps["onClick"] }); -/** - * Displays a primary, visible action with a set of related options hidden in an - * expandable menu for the user to choose from. - * - * Built on top of PF/Dropdown, using PF/MenuToggle with a single - * PF/MenuToggleAction for the splitButtonItems prop. - */ -const SplitButton = ({ - href, - label, - onClick, - toggleAriaLabel = _("More actions"), - variant = "primary", - children, -}: SplitButtonProps) => { - const menuId = useId(); - const [isOpen, setIsOpen] = useState(false); - const toggleKey = `${menuId}-toggle`; - const onSelect = () => setIsOpen(false); - const onToggle = () => setIsOpen(!isOpen); - - return ( - <Dropdown - id={menuId} - isOpen={isOpen} - onSelect={onSelect} - onOpenChange={(isOpen) => setIsOpen(isOpen)} - toggle={(toggleRef) => ( - <MenuToggle - variant={variant} - ref={toggleRef} - onClick={onToggle} - splitButtonItems={[ - /** - * FIXME: PatternFly/MenuToggleAction does not accept either the component - * or role prop, difficulting to use a link (`<a>`) or a button with - * role="link" for actions that navigate to another resource, which would be - * semantically more appropriate. - */ - href ? ( - <Link key={toggleKey} to={href} onClick={onClick} isInline variant="link"> - {label} - </Link> - ) : ( - <MenuToggleAction key={toggleKey} onClick={onClick}> - {label} - </MenuToggleAction> - ), - ]} - isExpanded={isOpen} - aria-haspopup - aria-controls={menuId} - aria-label={toggleAriaLabel} - /> - )} - > - <DropdownList>{children}</DropdownList> - </Dropdown> - ); -}; - -SplitButton.Item = DropdownItem; -export default SplitButton; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/core/index.ts new/agama/src/components/core/index.ts --- old/agama/src/components/core/index.ts 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/core/index.ts 2026-07-20 13:59:40.000000000 +0200 @@ -44,7 +44,6 @@ export { default as NestedContent } from "./NestedContent"; export { default as SubtleContent } from "./SubtleContent"; export { default as MenuHeader } from "./MenuHeader"; -export { default as SplitButton } from "./SplitButton"; export { default as SkipTo } from "./SkipTo"; export { default as Annotation } from "./Annotation"; export { default as SwitchEnhanced } from "./SwitchEnhanced"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/ConfigEditor.tsx new/agama/src/components/storage/ConfigEditor.tsx --- old/agama/src/components/storage/ConfigEditor.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/ConfigEditor.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -71,7 +71,7 @@ return ( <> {/* FIXME add arial label */} - <DataList aria-label="" isCompact className="storage-structure"> + <DataList aria-label="" isCompact> {volumeGroups.map((_, i) => { return <VolumeGroupEditor key={`vg-${i}`} index={i} />; })} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/FilesystemMenu.test.tsx new/agama/src/components/storage/FilesystemMenu.test.tsx --- old/agama/src/components/storage/FilesystemMenu.test.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/FilesystemMenu.test.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -80,7 +80,7 @@ const editItem = screen.getByText("Edit"); await user.click(editItem); - const expectedPath = generatePath(PATHS.formatDevice, { collection: "drives", index: 0 }); + const expectedPath = generatePath(PATHS.formatDevice, { collection: "drives", index: "0" }); expect(mockNavigateFn).toHaveBeenCalledWith(expectedPath); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/FilesystemMenu.tsx new/agama/src/components/storage/FilesystemMenu.tsx --- old/agama/src/components/storage/FilesystemMenu.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/FilesystemMenu.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -92,7 +92,7 @@ }: FilesystemMenuProps): React.ReactNode { const navigate = useNavigate(); const deviceModel = usePartitionable(collection, index); - const editFilesystemPath = generatePath(PATHS.formatDevice, { collection, index }); + const editFilesystemPath = generatePath(PATHS.formatDevice, { collection, index: String(index) }); return ( <MenuButton diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/PartitionsSection.tsx new/agama/src/components/storage/PartitionsSection.tsx --- old/agama/src/components/storage/PartitionsSection.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/PartitionsSection.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -67,7 +67,7 @@ const partition = configModel.partitionable.findPartition(device, mountPath); const editPath = generateEncodedPath(PATHS.editPartition, { collection, - index, + index: String(index), partitionId: mountPath, }); const deletePartition = useDeletePartition(); @@ -139,7 +139,7 @@ const PartitionRow = ({ partition, collection, index }: PartitionRowProps) => { const editPath = generateEncodedPath(PATHS.editPartition, { collection, - index, + index: String(index), partitionId: partition.mountPath, }); const deletePartition = useDeletePartition(); @@ -227,7 +227,10 @@ const device = usePartitionable(collection, index); const uiIndex = `${collection[0]}${index}`; const isExpanded = isExpandedInState(uiState, uiIndex); - const newPartitionPath = generateEncodedPath(PATHS.addPartition, { collection, index }); + const newPartitionPath = generateEncodedPath(PATHS.addPartition, { + collection, + index: String(index), + }); const hasPartitions = device.partitions.some((p) => p.mountPath); const onToggle = () => { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/SpacePolicyMenu.tsx new/agama/src/components/storage/SpacePolicyMenu.tsx --- old/agama/src/components/storage/SpacePolicyMenu.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/SpacePolicyMenu.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -55,7 +55,9 @@ const changePolicy = () => { if (policyId === "custom") { - return navigate(generateEncodedPath(PATHS.editSpacePolicy, { collection, index })); + return navigate( + generateEncodedPath(PATHS.editSpacePolicy, { collection, index: String(index) }), + ); } else { setSpacePolicy(collection, index, { type: policyId }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/UnusedMenu.test.tsx new/agama/src/components/storage/UnusedMenu.test.tsx --- old/agama/src/components/storage/UnusedMenu.test.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/UnusedMenu.test.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -62,7 +62,7 @@ const expectedPath = generateEncodedPath(PATHS.addPartition, { collection: "drives", - index: 0, + index: "0", }); expect(mockNavigateFn).toHaveBeenCalledWith(expectedPath); }); @@ -78,7 +78,7 @@ const expectedPath = generateEncodedPath(PATHS.formatDevice, { collection: "drives", - index: 0, + index: "0", }); expect(mockNavigateFn).toHaveBeenCalledWith(expectedPath); }); @@ -94,7 +94,7 @@ const expectedPath = generateEncodedPath(PATHS.formatDevice, { collection: "mdRaids", - index: 1, + index: "1", }); expect(mockNavigateFn).toHaveBeenCalledWith(expectedPath); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/UnusedMenu.tsx new/agama/src/components/storage/UnusedMenu.tsx --- old/agama/src/components/storage/UnusedMenu.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/UnusedMenu.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -56,8 +56,14 @@ export default function UnusedMenu({ collection, index }: UnusedMenuProps): React.ReactNode { const navigate = useNavigate(); - const newPartitionPath = generateEncodedPath(PATHS.addPartition, { collection, index }); - const formatDevicePath = generateEncodedPath(PATHS.formatDevice, { collection, index }); + const newPartitionPath = generateEncodedPath(PATHS.addPartition, { + collection, + index: String(index), + }); + const formatDevicePath = generateEncodedPath(PATHS.formatDevice, { + collection, + index: String(index), + }); const filesystemLabel = collection === "drives" ? _("Use the disk without partitions") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/VolumeGroupEditor.tsx new/agama/src/components/storage/VolumeGroupEditor.tsx --- old/agama/src/components/storage/VolumeGroupEditor.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/VolumeGroupEditor.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -124,7 +124,7 @@ itemId="edit-volume-group" description={_("Modify settings and physical volumes")} role="menuitem" - onClick={() => navigate(generateEncodedPath(PATHS.volumeGroup.edit, { id: index }))} + onClick={() => navigate(generateEncodedPath(PATHS.volumeGroup.edit, { id: String(index) }))} > {_("Edit volume group")} </MenuButton.Item> @@ -286,7 +286,7 @@ const navigate = useNavigate(); const volumeGroupConfig = useVolumeGroup(index); - const newLvPath = generateEncodedPath(PATHS.volumeGroup.logicalVolume.add, { id: index }); + const newLvPath = generateEncodedPath(PATHS.volumeGroup.logicalVolume.add, { id: String(index) }); return ( <Button variant="plain" key="add-logical-volume" onClick={() => navigate(newLvPath)}> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/iscsi/TargetsTable.tsx new/agama/src/components/storage/iscsi/TargetsTable.tsx --- old/agama/src/components/storage/iscsi/TargetsTable.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/iscsi/TargetsTable.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -584,7 +584,7 @@ generatePath(STORAGE.iscsi.login, { name: target.name, address: target.address, - port: target.port, + port: String(target.port), }), ), onDisconnect: () => removeTarget(target.name, target.address, target.port), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/components/storage/utils/partition.tsx new/agama/src/components/storage/utils/partition.tsx --- old/agama/src/components/storage/utils/partition.tsx 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/components/storage/utils/partition.tsx 2026-07-20 13:59:40.000000000 +0200 @@ -51,8 +51,14 @@ const fsType = partition.filesystem ? filesystemType(partition.filesystem) : undefined; if (partition.name) { if (partition.filesystem?.reuse) { + // FIXME: the following "if (fsType)" line is commented out as a hotfix for bsc#1271008. + // Turns out fsType is not the current filesystem type, but the one that would be used if + // reusing the current one would not be possible. Commenting out the line is a cheap + // mitigation that avoids displaying wrong information while we design a better mechanism. + // TRANSLATORS: %1$s is a filesystem type (eg. Btrfs), %2$s is a device name (eg. /dev/sda3). - if (fsType) return sprintf(_("Current %1$s at %2$s"), fsType, partition.name); + //if (fsType) return sprintf(_("Current %1$s at %2$s"), fsType, partition.name); + // TRANSLATORS: %s is a device name (eg. /dev/sda3). return sprintf(_("Current %s"), partition.name); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.ca.js new/agama/src/po/po.ca.js --- old/agama/src/po/po.ca.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.ca.js 2026-07-20 13:59:40.000000000 +0200 @@ -249,6 +249,9 @@ "Actions": [ "Accions" ], + "Actions for %s": [ + "Accions per a %s" + ], "Actions for %s at portal %s": [ "Accions per a %s al portal %s" ], @@ -843,9 +846,6 @@ "Current": [ "Actual" ], - "Current %1$s at %2$s": [ - "%1$s actual a %2$s" - ], "Current %s": [ "Actual: %s" ], @@ -1777,9 +1777,6 @@ "More": [ "Més" ], - "More actions": [ - "Més accions" - ], "More devices": [ "Més dispositius" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.de.js new/agama/src/po/po.de.js --- old/agama/src/po/po.de.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.de.js 2026-07-20 13:59:40.000000000 +0200 @@ -840,9 +840,6 @@ "Current": [ "Aktuell" ], - "Current %1$s at %2$s": [ - "Aktuell %1$s bei %2$s" - ], "Current %s": [ "Aktuell %s" ], @@ -1774,9 +1771,6 @@ "More": [ "Mehr" ], - "More actions": [ - "Weitere Aktionen" - ], "More devices": [ "Weitere Geräte" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.es.js new/agama/src/po/po.es.js --- old/agama/src/po/po.es.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.es.js 2026-07-20 13:59:40.000000000 +0200 @@ -840,9 +840,6 @@ "Current": [ "Actual" ], - "Current %1$s at %2$s": [ - "Actual %1$s en %2$s" - ], "Current %s": [ "Actual %s" ], @@ -1774,9 +1771,6 @@ "More": [ "Más" ], - "More actions": [ - "Más acciones" - ], "More devices": [ "Más dispositivos" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.fr.js new/agama/src/po/po.fr.js --- old/agama/src/po/po.fr.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.fr.js 2026-07-20 13:59:40.000000000 +0200 @@ -840,9 +840,6 @@ "Current": [ "Actuel" ], - "Current %1$s at %2$s": [ - "%1$s actuel sur %2$s" - ], "Current %s": [ "%s actuel" ], @@ -1771,9 +1768,6 @@ "More": [ "Davantage" ], - "More actions": [ - "Autres actions" - ], "More devices": [ "Autres périphériques" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.id.js new/agama/src/po/po.id.js --- old/agama/src/po/po.id.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.id.js 2026-07-20 13:59:40.000000000 +0200 @@ -819,9 +819,6 @@ "Current": [ "Saat ini" ], - "Current %1$s at %2$s": [ - "Saat ini %1$s di %2$s" - ], "Current %s": [ "Saat ini %s" ], @@ -1746,9 +1743,6 @@ "More": [ "Lainnya" ], - "More actions": [ - "Tindakan lainnya" - ], "More devices": [ "Lebih banyak perangkat" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.it.js new/agama/src/po/po.it.js --- old/agama/src/po/po.it.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.it.js 2026-07-20 13:59:40.000000000 +0200 @@ -840,9 +840,6 @@ "Current": [ "Attuale" ], - "Current %1$s at %2$s": [ - "Attuale %1$s su %2$s" - ], "Current %s": [ "Al momento %s" ], @@ -1768,9 +1765,6 @@ "More": [ "Altro" ], - "More actions": [ - "Azioni aggiuntive" - ], "More devices": [ "Altri dispositivi" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.ja.js new/agama/src/po/po.ja.js --- old/agama/src/po/po.ja.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.ja.js 2026-07-20 13:59:40.000000000 +0200 @@ -822,9 +822,6 @@ "Current": [ "現在" ], - "Current %1$s at %2$s": [ - "%2$s にある現在の %1$s" - ], "Current %s": [ "現在の %s" ], @@ -1752,9 +1749,6 @@ "More": [ "詳細" ], - "More actions": [ - "さらなる処理" - ], "More devices": [ "さらなるデバイス" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.ka.js new/agama/src/po/po.ka.js --- old/agama/src/po/po.ka.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.ka.js 2026-07-20 13:59:40.000000000 +0200 @@ -249,6 +249,9 @@ "Actions": [ "ქმედებები" ], + "Actions for %s": [ + "ქმედებები %s-ისთვის" + ], "Actions for %s at portal %s": [ "ქმედებები %s-ისთვის პორტალზე %s" ], @@ -843,9 +846,6 @@ "Current": [ "მიმდინარე" ], - "Current %1$s at %2$s": [ - "მიმდინარე %1$s მოწყობილობაზე %2$s" - ], "Current %s": [ "მიმდინარეა %s" ], @@ -1777,9 +1777,6 @@ "More": [ "მეტი" ], - "More actions": [ - "მეტი ქმედება" - ], "More devices": [ "მეტი მოწყობილობა" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.pt-BR.js new/agama/src/po/po.pt-BR.js --- old/agama/src/po/po.pt-BR.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.pt-BR.js 2026-07-20 13:59:40.000000000 +0200 @@ -840,9 +840,6 @@ "Current": [ "Atual" ], - "Current %1$s at %2$s": [ - "%1$s atual em %2$s" - ], "Current %s": [ "%s atual" ], @@ -1771,9 +1768,6 @@ "More": [ "Mais" ], - "More actions": [ - "Mais ações" - ], "More devices": [ "Mais dispositivos" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.sv.js new/agama/src/po/po.sv.js --- old/agama/src/po/po.sv.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.sv.js 2026-07-20 13:59:40.000000000 +0200 @@ -249,6 +249,9 @@ "Actions": [ "Åtgärder" ], + "Actions for %s": [ + "Åtgärder för %s" + ], "Actions for %s at portal %s": [ "Åtgärder för %s vid portal %s" ], @@ -843,9 +846,6 @@ "Current": [ "Nuvarande" ], - "Current %1$s at %2$s": [ - "Nuvarande %1$s på %2$s" - ], "Current %s": [ "Nuvarande %s" ], @@ -1777,9 +1777,6 @@ "More": [ "Mer" ], - "More actions": [ - "Mer åtgärder" - ], "More devices": [ "Mer enheter" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.uk.js new/agama/src/po/po.uk.js --- old/agama/src/po/po.uk.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.uk.js 2026-07-20 13:59:40.000000000 +0200 @@ -864,9 +864,6 @@ "Current": [ "Поточне" ], - "Current %1$s at %2$s": [ - "Поточна %1$s на %2$s" - ], "Current %s": [ "Поточна %s" ], @@ -1802,9 +1799,6 @@ "More": [ "Ще" ], - "More actions": [ - "Більше дій" - ], "More devices": [ "Інші пристрої" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.zh-CN.js new/agama/src/po/po.zh-CN.js --- old/agama/src/po/po.zh-CN.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.zh-CN.js 2026-07-20 13:59:40.000000000 +0200 @@ -819,9 +819,6 @@ "Current": [ "当前" ], - "Current %1$s at %2$s": [ - "当前 %1$s(%2$s 上)" - ], "Current %s": [ "当前 %s" ], @@ -1746,9 +1743,6 @@ "More": [ "更多" ], - "More actions": [ - "更多操作" - ], "More devices": [ "更多设备" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agama/src/po/po.zh-TW.js new/agama/src/po/po.zh-TW.js --- old/agama/src/po/po.zh-TW.js 2026-07-16 14:18:35.000000000 +0200 +++ new/agama/src/po/po.zh-TW.js 2026-07-20 13:59:40.000000000 +0200 @@ -819,9 +819,6 @@ "Current": [ "目前" ], - "Current %1$s at %2$s": [ - "目前 %1$s (%2$s 上)" - ], "Current %s": [ "目前 %s" ], @@ -1746,9 +1743,6 @@ "More": [ "更多" ], - "More actions": [ - "更多動作" - ], "More devices": [ "更多裝置" ], ++++++ agama.obsinfo ++++++ --- /var/tmp/diff_new_pack.nrNHAm/_old 2026-07-21 22:55:58.468621651 +0200 +++ /var/tmp/diff_new_pack.nrNHAm/_new 2026-07-21 22:55:58.500622741 +0200 @@ -1,5 +1,5 @@ name: agama -version: 22+456.ce0fb8baf -mtime: 1784204315 -commit: ce0fb8baf906e6dc037106481ae0640cc743cee2 +version: 23+0.f26ed5eab +mtime: 1784548780 +commit: f26ed5eab535b86fce039034e71968684183e4fe ++++++ node_modules.obscpio ++++++ /work/SRC/openSUSE:Factory/agama-web-ui/node_modules.obscpio /work/SRC/openSUSE:Factory/.agama-web-ui.new.24530/node_modules.obscpio differ: char 113903699, line 410065 ++++++ node_modules.spec.inc ++++++ --- /var/tmp/diff_new_pack.nrNHAm/_old 2026-07-21 22:55:58.900636363 +0200 +++ /var/tmp/diff_new_pack.nrNHAm/_new 2026-07-21 22:55:58.928637317 +0200 @@ -1027,7 +1027,7 @@ Source2026: https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz#/react-is-19.2.7.tgz Source2027: https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz#/react-refresh-0.18.0.tgz Source2028: https://registry.npmjs.org/react-refresh-typescript/-/react-refresh-typescript-2.0.12.tgz#/react-refresh-typescript-2.0.12.tgz -Source2029: https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz#/react-router-7.14.0.tgz +Source2029: https://registry.npmjs.org/react-router/-/react-router-7.15.1.tgz#/react-router-7.15.1.tgz Source2030: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#/readable-stream-2.3.8.tgz Source2031: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#/readable-stream-3.6.2.tgz Source2032: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz ++++++ package-lock.json ++++++ --- /var/tmp/diff_new_pack.nrNHAm/_old 2026-07-21 22:55:59.008640041 +0200 +++ /var/tmp/diff_new_pack.nrNHAm/_new 2026-07-21 22:55:59.012640177 +0200 @@ -23,7 +23,7 @@ "radashi": "^12.7.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router": "7.14.0", + "react-router": "7.15.1", "sprintf-js": "^1.1.3", "stacktracey": "^2.1.8", "xbytes": "^1.9.1" @@ -15917,9 +15917,9 @@ } }, "node_modules/react-router": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz", - "integrity": "sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==", + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.15.1.tgz", + "integrity": "sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==", "license": "MIT", "dependencies": { "cookie": "^1.0.1",
