From 4fcaa9b56cfcb40baf9c4154121023b5f5e41b10 Mon Sep 17 00:00:00 2001 From: "[._.]/ Adam Eivy" Date: Thu, 3 Sep 2026 15:26:21 +0000 Subject: [PATCH] fix: sweep sub-44px icon buttons tree-wide and widen tap-target guard (#5904) Every icon-only button with tight p-0.5/p-1/p-1.5 padding now carries min-h-[44px] min-w-[44px] inline-flex items-center justify-center, and action rows holding two of them widen from gap-1 to gap-2. Icon sizes are untouched. The a11yConventions tap-target rule moves from src/components/meatspace/ to the whole client tree (same padding-shape filter and self-probe); sibling-owned SongBook surfaces are excluded for the parallel change that owns them. --- client/src/a11yConventions.test.js | 34 +++++++++++-------- client/src/components/CatalogCastPanel.jsx | 2 +- client/src/components/FolderPicker.jsx | 2 +- client/src/components/Layout.jsx | 2 +- client/src/components/ThemeSwitcher.jsx | 2 +- .../components/apps/AppOperationBanner.jsx | 2 +- client/src/components/apps/EditAppDrawer.jsx | 2 +- .../src/components/brain/links/LinkChip.jsx | 2 +- client/src/components/brain/tabs/InboxTab.jsx | 22 ++++++------ client/src/components/brain/tabs/LinksTab.jsx | 8 ++--- .../src/components/brain/tabs/MemoryTab.jsx | 10 +++--- client/src/components/brain/tabs/NotesTab.jsx | 8 ++--- client/src/components/brain/tabs/TrustTab.jsx | 2 +- client/src/components/calendar/ConfigTab.jsx | 2 +- client/src/components/calendar/ReviewTab.jsx | 10 +++--- .../cos/ActionableInsightsBanner.jsx | 2 +- client/src/components/cos/JobCard.jsx | 8 ++--- client/src/components/cos/TaskAddForm.jsx | 2 +- client/src/components/cos/tabs/AgentCard.jsx | 10 +++--- .../components/cos/tabs/MemoryEditModal.jsx | 2 +- client/src/components/cos/tabs/MindTab.jsx | 2 +- client/src/components/cos/tabs/RunsTab.jsx | 8 ++--- client/src/components/cos/tabs/TaskItem.jsx | 12 +++---- .../cos/tabs/schedule/AppTaskTypeSection.jsx | 2 +- .../src/components/dashboard/LayoutEditor.jsx | 6 ++-- .../dashboard/builtins/DailyDriverWidget.jsx | 2 +- .../digital-twin/ListEnrichment.jsx | 2 +- .../digital-twin/NextActionBanner.jsx | 4 +-- .../digital-twin/tabs/AccountsTab.jsx | 2 +- .../digital-twin/tabs/AppearanceTab.jsx | 2 +- .../digital-twin/tabs/AutobiographyTab.jsx | 2 +- .../fableloom/LoomEpisodeOutlinePlanner.jsx | 2 +- .../fableloom/LoomHostedSessionModal.jsx | 2 +- .../components/fableloom/LoomSeriesPlan.jsx | 6 ++-- .../components/feature-agents/OutputTab.jsx | 2 +- .../components/goals/GoalLinkedActivities.jsx | 2 +- .../components/goals/GoalLinkedCalendars.jsx | 2 +- .../src/components/goals/GoalProgressLog.jsx | 4 +-- client/src/components/goals/GoalTodoList.jsx | 2 +- client/src/components/goals/GoalsListView.jsx | 4 +-- .../src/components/media/MediaJobsQueue.jsx | 2 +- client/src/components/media/MediaLightbox.jsx | 10 +++--- .../src/components/media/PromptFromMedia.jsx | 2 +- .../components/media/VideoTimelineLanes.jsx | 2 +- .../media/VideoTimelineLanes.test.jsx | 6 ++-- client/src/components/messages/DraftsTab.jsx | 10 +++--- .../src/components/messages/IMessageTab.jsx | 4 +-- client/src/components/music/AlbumsManager.jsx | 8 ++--- .../src/components/musicVideo/SceneCard.jsx | 8 ++--- .../components/onboarding/FirstRunCard.jsx | 2 +- .../persona/PersonaMasterDetail.jsx | 2 +- client/src/components/pipeline/CanonCard.jsx | 16 ++++----- .../pipeline/ImagePromptCandidates.jsx | 2 +- .../pipeline/arcCanvas/IssueRow.jsx | 2 +- .../pipeline/arcCanvas/SeasonRow.jsx | 4 +-- .../pipeline/arcCanvas/TickingClockEditor.jsx | 2 +- .../manuscript/ManuscriptCommentCard.jsx | 4 +-- .../pipeline/stages/ComicPagesStage.jsx | 2 +- .../pipeline/stages/ComicScriptStage.jsx | 2 +- .../pipeline/stages/PovRewritePanel.jsx | 2 +- .../pipeline/stages/StoryboardsStage.jsx | 4 +-- .../components/privacy/PrivacyChangesTab.jsx | 8 ++--- client/src/components/quotaBurn/JobRow.jsx | 2 +- .../src/components/settings/ApiAccessTab.jsx | 2 +- .../src/components/settings/DatabaseTab.jsx | 2 +- .../settings/LocalLlmRuntimesView.jsx | 2 +- .../settings/LocalModelAssessments.jsx | 8 ++--- .../components/settings/LocalSetupPanel.jsx | 2 +- .../settings/ModelCapabilityTests.jsx | 2 +- .../components/settings/MtplxServerCard.jsx | 2 +- .../settings/RuntimeServersCard.jsx | 2 +- .../settings/SlotstreamServerCard.jsx | 2 +- .../src/components/shell/ShellImageDrop.jsx | 2 +- .../components/songs/MidiVisualization.jsx | 8 ++--- .../components/songs/ReferenceAnalysis.jsx | 14 ++++---- client/src/components/songs/RoundEditForm.jsx | 6 ++-- .../src/components/songs/SongRecordings.jsx | 6 ++-- .../src/components/songs/SongScoreParts.jsx | 4 +-- .../components/sprites/AssetPromptSection.jsx | 2 +- client/src/components/sprites/LoopTrimmer.jsx | 6 ++-- .../components/sprites/ReferenceWorkflow.jsx | 2 +- .../src/components/sprites/SpriteCatalog.jsx | 6 ++-- .../components/sprites/SpriteDetailHeader.jsx | 4 +-- .../src/components/sync/SyncDetailDrawer.jsx | 2 +- .../universe/VisionDescribeModal.jsx | 2 +- .../universeBuilder/CompositeSheetsEditor.jsx | 12 +++---- .../universeBuilder/UniverseBibleTab.jsx | 4 +-- .../UniverseCategoryEditor.jsx | 24 ++++++------- .../UniverseStyleReferences.jsx | 2 +- .../src/components/videoGen/IcLoraPanel.jsx | 2 +- .../src/components/videoGen/KeyframePanel.jsx | 2 +- client/src/components/voice/VoicePicker.jsx | 2 +- client/src/components/voice/VoiceWidget.jsx | 4 +-- client/src/components/wiki/tabs/BrowseTab.jsx | 8 ++--- client/src/components/wiki/tabs/GraphTab.jsx | 4 +-- client/src/hooks/useAgentFeedbackToast.jsx | 6 ++-- client/src/pages/ApiExplorer.jsx | 4 +-- client/src/pages/Browser.jsx | 2 +- client/src/pages/ChiefOfStaff.jsx | 6 ++-- client/src/pages/FableLoom.jsx | 2 +- client/src/pages/HistoryPage.jsx | 2 +- client/src/pages/ImageGen.jsx | 2 +- client/src/pages/Instances.jsx | 8 ++--- client/src/pages/Loops.jsx | 10 +++--- client/src/pages/Loras.jsx | 4 +-- client/src/pages/MediaCollectionDetail.jsx | 2 +- client/src/pages/MediaHistory.jsx | 2 +- client/src/pages/MoodBoardDetail.jsx | 6 ++-- client/src/pages/MoodBoards.jsx | 2 +- client/src/pages/PipelineSeries.jsx | 4 +-- client/src/pages/PromptManager.jsx | 6 ++-- client/src/pages/Review.jsx | 18 +++++----- client/src/pages/RoundEditor.jsx | 2 +- client/src/pages/RunnerPage.jsx | 2 +- client/src/pages/ThreejsModelDetail.jsx | 2 +- client/src/pages/Tribe.jsx | 2 +- client/src/pages/VideoGen.jsx | 2 +- client/src/pages/VideoTimeline.jsx | 2 +- client/src/pages/VideoTimelineEditor.jsx | 2 +- client/src/pages/WritersRoom.jsx | 2 +- 120 files changed, 284 insertions(+), 280 deletions(-) diff --git a/client/src/a11yConventions.test.js b/client/src/a11yConventions.test.js index df241a30f7..3f345c99d5 100644 --- a/client/src/a11yConventions.test.js +++ b/client/src/a11yConventions.test.js @@ -32,9 +32,9 @@ * 6. An `` with no `alt`, which is announced by its `src` — a hashed * filename or a blob URL. `alt=""` is the correct spelling for a * decorative image and passes; only the omission is the bug. - * 7. An icon-only ` @@ -512,7 +512,7 @@ export default function NotesTab() { )} diff --git a/client/src/components/calendar/ReviewTab.jsx b/client/src/components/calendar/ReviewTab.jsx index 39ad3569a1..4a9339e2f8 100644 --- a/client/src/components/calendar/ReviewTab.jsx +++ b/client/src/components/calendar/ReviewTab.jsx @@ -111,7 +111,7 @@ export default function ReviewTab() { {/* Date Navigation */}
- - {!isToday && ( @@ -240,11 +240,11 @@ export default function ReviewTab() {
{!isReviewed && !isEditing && ( -
+
-
+
diff --git a/client/src/components/cos/tabs/MindTab.jsx b/client/src/components/cos/tabs/MindTab.jsx index 3066f99667..cc8e34b4d0 100644 --- a/client/src/components/cos/tabs/MindTab.jsx +++ b/client/src/components/cos/tabs/MindTab.jsx @@ -706,7 +706,7 @@ export default function MindTab() { {messageImages.map((image) => (
  • -
  • diff --git a/client/src/components/cos/tabs/RunsTab.jsx b/client/src/components/cos/tabs/RunsTab.jsx index e62495b4b6..33f7cbcc30 100644 --- a/client/src/components/cos/tabs/RunsTab.jsx +++ b/client/src/components/cos/tabs/RunsTab.jsx @@ -331,7 +331,7 @@ export default function RunsTab() { {run.success === false && ( diff --git a/client/src/components/dashboard/LayoutEditor.jsx b/client/src/components/dashboard/LayoutEditor.jsx index 0adb2ba0db..0043877561 100644 --- a/client/src/components/dashboard/LayoutEditor.jsx +++ b/client/src/components/dashboard/LayoutEditor.jsx @@ -327,9 +327,9 @@ export default function LayoutEditor({ layouts, activeLayoutId, limits, onClose, {meta?.label ?? id} {!meta && (unknown — skipped)} - - - + + + ); })} diff --git a/client/src/components/dashboard/builtins/DailyDriverWidget.jsx b/client/src/components/dashboard/builtins/DailyDriverWidget.jsx index 553e627ae8..a9e87ea96d 100644 --- a/client/src/components/dashboard/builtins/DailyDriverWidget.jsx +++ b/client/src/components/dashboard/builtins/DailyDriverWidget.jsx @@ -118,7 +118,7 @@ export default function DailyDriverWidget({ dashboardState }) { disabled={dismissing} aria-label="Dismiss for today" title="Dismiss for today" - className="ml-auto p-1 rounded text-gray-500 hover:text-white hover:bg-port-border/60 disabled:opacity-50" + className="min-h-[44px] min-w-[44px] inline-flex items-center justify-center ml-auto p-1 rounded text-gray-500 hover:text-white hover:bg-port-border/60 disabled:opacity-50" > diff --git a/client/src/components/digital-twin/ListEnrichment.jsx b/client/src/components/digital-twin/ListEnrichment.jsx index a812b0cefc..5a6afc2038 100644 --- a/client/src/components/digital-twin/ListEnrichment.jsx +++ b/client/src/components/digital-twin/ListEnrichment.jsx @@ -194,7 +194,7 @@ export default function ListEnrichment({ {items.length > 1 && ( diff --git a/client/src/components/digital-twin/tabs/AutobiographyTab.jsx b/client/src/components/digital-twin/tabs/AutobiographyTab.jsx index 15a290b81b..1bdb270e15 100644 --- a/client/src/components/digital-twin/tabs/AutobiographyTab.jsx +++ b/client/src/components/digital-twin/tabs/AutobiographyTab.jsx @@ -559,7 +559,7 @@ export default function AutobiographyTab({ onRefresh }) {
    -
    diff --git a/client/src/components/fableloom/LoomHostedSessionModal.jsx b/client/src/components/fableloom/LoomHostedSessionModal.jsx index 6e9d1a6349..7e3f7f417e 100644 --- a/client/src/components/fableloom/LoomHostedSessionModal.jsx +++ b/client/src/components/fableloom/LoomHostedSessionModal.jsx @@ -219,7 +219,7 @@ export default function LoomHostedSessionModal({ - - + + +