From c2feac822041d180e2cacecf53445dbf9cd6da01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Mon, 1 Jun 2026 02:01:20 +0800 Subject: [PATCH] fix(desktop): keep profile edit button out of screenshots The profile edit affordance is useful but low-frequency, and it was always visible in the token activity header. Hide it by default so shared screenshots keep the profile header clean while hover and keyboard focus still expose the action. Constraint: The edit action must remain discoverable for pointer users and reachable for keyboard users. Rejected: Remove the edit button entirely | profile customization still needs an obvious local entry point. Confidence: high Scope-risk: narrow Reversibility: clean Tested: cd desktop && bun run test -- src/pages/ActivitySettings.test.tsx --run --reporter=verbose --pool=forks --maxWorkers=1 --minWorkers=1 Tested: git diff --check -- desktop/src/pages/ActivitySettings.tsx desktop/src/pages/ActivitySettings.test.tsx Not-tested: Manual packaged desktop screenshot capture. --- desktop/src/pages/ActivitySettings.test.tsx | 12 ++++++++++++ desktop/src/pages/ActivitySettings.tsx | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/desktop/src/pages/ActivitySettings.test.tsx b/desktop/src/pages/ActivitySettings.test.tsx index b2dcb1bd..c5c67a87 100644 --- a/desktop/src/pages/ActivitySettings.test.tsx +++ b/desktop/src/pages/ActivitySettings.test.tsx @@ -227,6 +227,18 @@ describe('ActivitySettings', () => { expect(screen.queryByText('Selected day')).not.toBeInTheDocument() }) + it('keeps the profile edit control out of screenshots until hover or keyboard focus', async () => { + render() + + await flushActivityLoad() + + const editButton = screen.getByRole('button', { name: 'Edit profile' }) + expect(editButton).toHaveClass('opacity-0') + expect(editButton).toHaveClass('group-hover/activity-profile:opacity-100') + expect(editButton).toHaveClass('focus-visible:opacity-100') + expect(editButton.closest('div')).toHaveClass('group/activity-profile') + }) + it('supports localized heatmap mode switches and persisted display name edits', async () => { useSettingsStore.setState({ locale: 'zh' }) render() diff --git a/desktop/src/pages/ActivitySettings.tsx b/desktop/src/pages/ActivitySettings.tsx index 47c77223..a6b4b235 100644 --- a/desktop/src/pages/ActivitySettings.tsx +++ b/desktop/src/pages/ActivitySettings.tsx @@ -573,13 +573,13 @@ export function ActivitySettings() { }} /> -
+

{profile.displayName}