feat(ui): refresh branding and account identity copying

Replace every active application icon asset with the new high-resolution artwork, including transparent PNG, complete Windows ICO sizes, and the documentation screenshot.

Turn populated username and email cells into non-selectable copy actions backed by validated native Electron clipboard IPC while keeping empty cells and row interactions unchanged.
This commit is contained in:
Sucukdeluxe
2026-08-14 21:56:25 +02:00
parent b80209a10f
commit 3974853634
13 changed files with 124 additions and 2 deletions
+26
View File
@@ -301,6 +301,7 @@ function workspaceActions(overrides: Partial<AccountWorkspaceActions> = {}): Acc
onToggleEnabled: () => {},
onEdit: () => {},
onContextMenu: () => {},
onCopyIdentity: () => {},
onAdd: () => {},
onRemoveSelected: () => {},
onCheckAll: () => {},
@@ -740,6 +741,31 @@ describe("account workspace", () => {
]);
});
it("copies only populated username and email cells without triggering the row", () => {
const copies: string[] = [];
const tree = AccountWorkspace({
model: workspaceModel(),
actions: workspaceActions({
onCopyIdentity: (label, value) => copies.push(`${label}:${value}`)
})
});
const buttons = findElements(tree, (element) => String(element.props.className || "").includes("settings-account-copy-button"));
const username = buttons.find((button) => button.props["aria-label"] === "Benutzername kopieren");
const email = buttons.find((button) => button.props["aria-label"] === "E-Mail kopieren");
let stopped = 0;
username?.props.onClick({ stopPropagation: () => { stopped += 1; } });
email?.props.onClick({ stopPropagation: () => { stopped += 1; } });
username?.props.onDoubleClick({ stopPropagation: () => { stopped += 1; } });
expect(buttons.some((button) => button.props.children === "—")).toBe(false);
expect(copies).toEqual([
"Benutzername:stored-user",
"E-Mail:verified@example.test"
]);
expect(stopped).toBe(3);
});
it("keeps overview and rules in the same workspace while only one panel is active", () => {
const html = renderToStaticMarkup(<AccountWorkspace actions={workspaceActions()} model={workspaceModel()} />);
expect(count(html, "class=\"settings-account-panel\"")).toBe(2);