From 2c7d258f14aad4576167ff41f6401a0a52737d3c Mon Sep 17 00:00:00 2001 From: Jacob Wallraff Date: Sun, 12 Jul 2026 15:05:45 -0700 Subject: [PATCH 1/9] Clarify workflow filter generation limits (#62220) Co-authored-by: Vanessa --- .../workflows/triggering-a-workflow-paths5.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/data/reusables/actions/workflows/triggering-a-workflow-paths5.md b/data/reusables/actions/workflows/triggering-a-workflow-paths5.md index 2505d10fc5fa..0e9e81697645 100644 --- a/data/reusables/actions/workflows/triggering-a-workflow-paths5.md +++ b/data/reusables/actions/workflows/triggering-a-workflow-paths5.md @@ -1,6 +1,3 @@ -> [!NOTE] -> If you push more than 1,000 commits, or if {% data variables.product.prodname_dotcom %} does not generate the diff due to a timeout, the workflow will always run. - The filter determines if a workflow should run by evaluating the changed files and running them against the `paths-ignore` or `paths` list. If there are no files changed, the workflow will not run. {% data variables.product.prodname_dotcom %} generates the list of changed files using two-dot diffs for pushes and three-dot diffs for pull requests: @@ -8,7 +5,12 @@ The filter determines if a workflow should run by evaluating the changed files a * **Pushes to existing branches:** A two-dot diff compares the head and base SHAs directly with each other. * **Pushes to new branches:** A two-dot diff against the parent of the ancestor of the deepest commit pushed. -> [!NOTE] -> Diffs are limited to 300 files. If there are files changed that aren't matched in the first 300 files returned by the filter, the workflow will not run. You may need to create more specific filters so that the workflow will run automatically. +In some situations, {% data variables.product.prodname_actions %} applies limits that change how filtered workflows run: + +* If a push contains more than 1,000 commits, the workflow will **always** run. +* If generating the diff times out, the workflow will **always** run. +* If the generated diff contains more than 3,000 files and the files the workflow filter matches are not in the first 3,000 returned by the filter, the workflow will **not** run. + +If you observe these behaviors, you might need to make your filters more specific, or change how you work with pushes and pull requests to generate simpler diffs. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests). From 792ea0097c330efd2d996edee7e33958d96618ed Mon Sep 17 00:00:00 2001 From: Evan Bonsignori Date: Sun, 12 Jul 2026 23:21:14 -0700 Subject: [PATCH 2/9] Migrate Buttons to @primer/react-brand (#62082) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: heiskr <1221423+heiskr@users.noreply.github.com> --- .../article/ViewMarkdownButton.module.scss | 21 +++++++++++++++++++ .../components/article/ViewMarkdownButton.tsx | 19 +++++++---------- src/landings/components/CookBookFilter.tsx | 11 ++++++++-- .../components/SecretScanningTable.tsx | 6 +++--- 4 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/frame/components/article/ViewMarkdownButton.module.scss b/src/frame/components/article/ViewMarkdownButton.module.scss index f0749ee45e86..cc7e032eb6e1 100644 --- a/src/frame/components/article/ViewMarkdownButton.module.scss +++ b/src/frame/components/article/ViewMarkdownButton.module.scss @@ -4,3 +4,24 @@ background-color: transparent; cursor: pointer; } + +.copyButton { + // Brand Button defaults to a 12px gap, a 16px leading-visual icon, and lets + // the label wrap. The narrow TOC column can't fit that, so tighten the + // icon/text spacing, shrink the icon back to the pre-migration 12px, and keep + // the label on a single line. Scoped to the copy button so the sibling + // dropdown's 16px triangle icon is left untouched. + gap: 4px; + white-space: nowrap; + + svg { + height: 12px; + width: 12px; + } + + // The brand Button renders its label through an internal Text component fixed + // at 14px; drop it to 12px to match the compact pre-migration button. + [class*="Button--label"] { + font-size: 12px; + } +} diff --git a/src/frame/components/article/ViewMarkdownButton.tsx b/src/frame/components/article/ViewMarkdownButton.tsx index f42f25bf13f1..8339a9c6b342 100644 --- a/src/frame/components/article/ViewMarkdownButton.tsx +++ b/src/frame/components/article/ViewMarkdownButton.tsx @@ -7,7 +7,8 @@ import { LinkExternalIcon, TriangleDownIcon, } from '@primer/octicons-react' -import { ActionList, ActionMenu, Button, ButtonGroup, VisuallyHidden } from '@primer/react' +import { ActionList, ActionMenu, ButtonGroup, VisuallyHidden } from '@primer/react' +import { Button } from '@primer/react-brand' import { announce } from '@primer/live-region-element' import { MARKDOWN_SOURCE_MENU_EVENT_GROUP } from '@/events/components/event-groups' import { sendEvent } from '@/events/components/events' @@ -87,18 +88,14 @@ export const CopyMarkdownMenu = ({ currentPath }: CopyMarkdownMenuProps) => {
diff --git a/src/landings/components/CookBookFilter.tsx b/src/landings/components/CookBookFilter.tsx index 35d63211a738..63a1acc652b0 100644 --- a/src/landings/components/CookBookFilter.tsx +++ b/src/landings/components/CookBookFilter.tsx @@ -1,4 +1,5 @@ -import { TextInput, ActionMenu, ActionList, Button } from '@primer/react' +import { TextInput, ActionMenu, ActionList } from '@primer/react' +import { Button } from '@primer/react-brand' import { SearchIcon } from '@primer/octicons-react' import { useRef, useEffect, useState, type ChangeEvent } from 'react' import { ArticleCardItems } from '@/landings/types' @@ -148,7 +149,13 @@ export const CookBookFilter = ({ )} -
diff --git a/src/secret-scanning/components/SecretScanningTable.tsx b/src/secret-scanning/components/SecretScanningTable.tsx index 6395fcb3c6e6..5a3745aa6c56 100644 --- a/src/secret-scanning/components/SecretScanningTable.tsx +++ b/src/secret-scanning/components/SecretScanningTable.tsx @@ -1,7 +1,7 @@ import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react' import { DataTable, Table } from '@primer/react/experimental' -import { TextInput, ActionMenu, ActionList, Button } from '@primer/react' -import { Pagination } from '@primer/react-brand' +import { TextInput, ActionMenu, ActionList } from '@primer/react' +import { Pagination, Button } from '@primer/react-brand' import debounce from 'lodash/debounce' import { useTranslation } from '@/languages/components/useTranslation' import { sendEvent } from '@/events/components/events' @@ -199,7 +199,7 @@ export function SecretScanningTable({ data }: { data: SecretScanningData[] }) { /> {hasActiveFilters && (