diff --git a/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md b/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md index c7f76848b282..007e0cc90b80 100644 --- a/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md +++ b/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md @@ -18,7 +18,11 @@ category: Default community health files are a set of predefined files that provide guidance and templates for maintaining a healthy and collaborative open source project. These files help you automate and standardize various aspects of your project's development and community interaction, promoting transparency, good practices, and collaboration. -You can add default community health files to a repository called `.github`. {% ifversion ghec %}For an {% data variables.enterprise.prodname_emu_org %}, the `.github` repository must be **internal**. For all other accounts, the `.github` repository must be **public**.{% else %}The `.github` repository must be **public**.{% endif %} +You can add default community health files to a repository called `.github`. {% ifversion ghec %}For an {% data variables.enterprise.prodname_emu_org %}, the `.github` repository must be **internal**. For all other eligible accounts, the `.github` repository must be **public**.{% else %}The `.github` repository must be **public**.{% endif %} + +{% ifversion ghec %} +>[!NOTE] A {% data variables.enterprise.prodname_managed_user %} cannot host default community health files for their personal account because their personal `.github` repository can only be private. +{% endif %} {% data variables.product.github %} will use and display default files for any repository owned by the account, regardless of the destination repository's visibility, that does not have its own file of that type. For supported files that can be stored in more than one location, {% data variables.product.github %} uses the following order of precedence: @@ -72,11 +76,11 @@ You cannot create a default license file. License files must be added to individ ## Creating a repository for default files {% data reusables.repositories.create_new %} -1. Use the **Owner** drop-down menu, and select the organization or personal account you want to create default files for. +1. Use the **Owner** drop-down menu, and select the organization or personal account you want to create default files for. {% ifversion ghec %}If you are signed in with a {% data variables.enterprise.prodname_managed_user %}, you must select an organization.{% endif %} ![Screenshot of the owner menu for a new {% data variables.product.prodname_dotcom %} repository. The menu shows two options, octocat and github.](/assets/images/help/repository/create-repository-owner.png) 1. In the "Repository name" field, type **.github**. 1. Optionally, in the "Description" field, type a description. -1. {% ifversion ghec %}If you are creating the repository for an {% data variables.enterprise.prodname_emu_org %}, set the repository status to **Internal**. For any other account, set the status to **Public**.{% else %}Make sure the repository status is set to **Public**.{% endif %} A repository for default files cannot be private. +1. {% ifversion ghec %}If you are creating the repository for an {% data variables.enterprise.prodname_emu_org %}, set the repository status to **Internal**. For any other eligible account, set the status to **Public**.{% else %}Make sure the repository status is set to **Public**.{% endif %} A repository for default files cannot be private. {% data reusables.repositories.initialize-with-readme %} {% data reusables.repositories.create-repo %} 1. In the repository, create one of the supported community health files. Discussion category forms must be in a folder called `.github/DISCUSSION_TEMPLATE`. Issue templates and their configuration file must be in a folder called `.github/ISSUE_TEMPLATE`. {% ifversion fpt or ghec %}A `FUNDING.yml` file must be in the `.github` folder. {% endif %}All other supported files may be in the root of the repository, the `.github` folder, or the `docs` folder. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/creating-new-files). diff --git a/src/ghes-releases/lib/enterprise-dates.json b/src/ghes-releases/lib/enterprise-dates.json index 143cd9273d6f..9dda09691454 100644 --- a/src/ghes-releases/lib/enterprise-dates.json +++ b/src/ghes-releases/lib/enterprise-dates.json @@ -247,7 +247,7 @@ }, "3.17": { "releaseDate": "2025-05-13", - "deprecationDate": "2026-08-25", + "deprecationDate": "2026-09-22", "releaseCandidateDate": "2025-05-13", "generalAvailabilityDate": "2025-06-03" }, @@ -276,10 +276,10 @@ "generalAvailabilityDate": "2026-06-11" }, "3.22": { - "releaseDate": "2026-08-04", - "deprecationDate": "2027-08-25", - "releaseCandidateDate": "2026-08-04", - "generalAvailabilityDate": "2026-08-25" + "releaseDate": "2026-08-11", + "deprecationDate": "2027-09-01", + "releaseCandidateDate": "2026-08-11", + "generalAvailabilityDate": "2026-09-01" }, "3.23": { "releaseDate": "2026-11-10", diff --git a/src/languages/lib/correct-translation-content.ts b/src/languages/lib/correct-translation-content.ts index fb20c56a2328..380a2568b8a7 100644 --- a/src/languages/lib/correct-translation-content.ts +++ b/src/languages/lib/correct-translation-content.ts @@ -570,6 +570,57 @@ export function correctTranslatedContentStrings( 'は一定のルールに従って、インスタンス{% endif %}上のエンタープライズ{% elsif ghes %}内の各ユーザーアカウント{% ifversion ghec %}のユーザー名を決定します。', 'は一定のルールに従って、{% ifversion ghec %}エンタープライズ内{% elsif ghes %}インスタンス上{% endif %}の各ユーザーアカウントのユーザー名を決定します。', ) + + // data/reusables/audit_log/audit-log-search-by-repo.md: the second + // `{%- ifversion ghec or fpt %}` block lost its trim dash (`{%-` → + // `{%`) and the final `{% endif %}` closing the block was dropped + // entirely, leaving the tag unclosed (`tag {% ifversion ghec or fpt %} + // not closed`). This affects both audit-log-search-by-repo.md and its + // transcluding page audit-log-search.md. Restore the trim dash and + // append the missing `{% endif %}`. + content = content.replaceAll( + '{% ifversion ghec or fpt %}\n* `repo:my-org/our-repo` は、`my-org` 組織内の `our-repo` リポジトリで発生したすべてのイベントを検索します。\n* `repo:my-org/our-repo repo:my-org/another-repo` は、`my-org`組織内の `our-repo` および `another-repo` リポジトリで発生したすべてのイベントを検索します。\n* `-repo:my-org/not-this-repo` は、`my-org` 組織内の `not-this-repo` リポジトリで発生したすべてのイベントを除外します。\n\n`repo` 修飾子内にアカウント名を含める必要があります。`repo:our-repo` を検索するだけでは作動しません。', + '{%- ifversion ghec or fpt %}\n* `repo:my-org/our-repo` は、`my-org` 組織内の `our-repo` リポジトリで発生したすべてのイベントを検索します。\n* `repo:my-org/our-repo repo:my-org/another-repo` は、`my-org`組織内の `our-repo` および `another-repo` リポジトリで発生したすべてのイベントを検索します。\n* `-repo:my-org/not-this-repo` は、`my-org` 組織内の `not-this-repo` リポジトリで発生したすべてのイベントを除外します。\n\n`repo` 修飾子内にアカウント名を含める必要があります。`repo:our-repo` を検索するだけでは作動しません。{% endif %}', + ) + + // data/reusables/enterprise-managed/assigning-users.md: the translator + // scrambled `{% ifversion ghec %}...{% else %}...{% endif %}` so that + // `{% endif %}` was relocated to the start of the sentence (as an + // orphan) and `{% ifversion ghec %}` moved into the middle, leaving the + // tag never closed (`tag "endif" not found`). Reconstruct to match + // English ordering: assigning users/groups to the + // {% ifversion ghec %}EMU IdP application{% else %}relevant application + // in your IdP{% endif %}. + content = content.replaceAll( + 'ユーザーまたはグループを IdP {% endif %} の {% ifversion ghec %} {% data variables.product.prodname_emu_idp_application %} アプリケーション {% else %} 関連アプリケーションに割り当てることで', + 'ユーザーまたはグループを {% ifversion ghec %}{% data variables.product.prodname_emu_idp_application %} アプリケーション{% else %}IdP の関連アプリケーション{% endif %}に割り当てることで', + ) + + // data/reusables/actions/self-hosted-runner-management-permissions-required.md: + // the `{% ifversion fpt or ghec %}...{% elsif ghes %}...{% endif %}` + // block was scrambled — `{% endif %}` and `{% elsif ghes %}` were moved + // earlier in the sentence, and `{% ifversion fpt or ghec %}` was moved to + // the end, leaving the tag never closed (`tag "endif" not found`). + // Reconstruct to match English ordering: located in your repository, + // organization, or {% ifversion fpt or ghec %}enterprise account + // settings on {% data variables.product.prodname_dotcom %}{% elsif ghes %} + // enterprise settings on {% data variables.product.prodname_ghe_server %}{% endif %}. + content = content.replaceAll( + 'セルフホステッド ランナーは、リポジトリまたは Organization のいずれかに配置するか、{% data variables.product.prodname_ghe_server %}{% endif %} の {% data variables.product.prodname_dotcom %}{% elsif ghes %} Enterprise 設定の {% ifversion fpt or ghec %} Enterprise アカウント設定に配置することができます。', + 'セルフホステッド ランナーは、リポジトリまたは Organization のいずれかに配置するか、{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} の Enterprise アカウント設定{% elsif ghes %}{% data variables.product.prodname_ghe_server %} の Enterprise 設定{% endif %}に配置することができます。', + ) + + // data/reusables/codespaces/when-an-org-pays.md: the translator split + // `{% elsif fpt %}...{% endif %}` away from its `{% ifversion ghec %}` + // opener, moving `{% ifversion ghec %}` to the end of the sentence and + // leaving the block never closed (`tag "elsif" not found`). + // Reconstruct to match English: This includes {% ifversion ghec %} + // public, private, and internal{% elsif fpt %}both public and + // private{% endif %} repositories. + content = content.replaceAll( + 'これには、パブリック リポジトリ、プライベート リポジトリ、および内部{% elsif fpt %}both パブリック リポジトリとプライベート リポジトリ{% endif %}{% ifversion ghec %}が含まれます。', + 'これには、{% ifversion ghec %}パブリック リポジトリ、プライベート リポジトリ、および内部{% elsif fpt %}パブリック リポジトリとプライベート リポジトリの両方{% endif %}が含まれます。', + ) } if (context.code === 'pt') { @@ -1032,6 +1083,42 @@ export function correctTranslatedContentStrings( '会按照特定规则确定您实例{% endif %}上您企业{% elsif ghes %}中各个用户帐户{% ifversion ghec %}的用户名。', '会按照特定规则确定{% ifversion ghec %}您企业中{% elsif ghes %}您实例上{% endif %}各个用户帐户的用户名。', ) + + // data/reusables/codespaces/when-an-org-pays.md: the translator moved + // `{% ifversion ghec %}` from the start of the conditional to the end + // of the sentence and left `{% elsif fpt %}` mid-sentence with no + // closing tag, so the block never closes (`tag "elsif" not found`). + // Reconstruct to match English: This includes {% ifversion ghec %} + // public, private, and internal{% elsif fpt %}both public and + // private{% endif %} repositories. + content = content.replaceAll( + '这包括{% ifversion ghec %}公共存储库、专用存储库和{% endif %}内部{% elsif fpt %}存储库。', + '这包括{% ifversion ghec %}公共存储库、专用存储库和内部存储库{% elsif fpt %}公共存储库和专用存储库{% endif %}。', + ) + + // data/reusables/actions/permissions-statement-secrets-and-variables-organization.md: + // the translator moved `{% endif %}` from the end of the first + // conditional to the start of the sentence, leaving the tag unclosed + // (`tag "endif" not found`). Reconstruct to match English: Organization + // owners{% ifversion custom-org-roles %} and users with the "..." + // permissions{% endif %} can create secrets or variables... + content = content.replaceAll( + '具有“管理组织操作变量”或“管理组织操作机密”权限{% endif %}的组织所有者{% ifversion custom-org-roles %}和用户可以在组织级别创建机密或变量。', + '组织所有者{% ifversion custom-org-roles %}和具有“管理组织操作变量”或“管理组织操作机密”权限的用户{% endif %}可以在组织级别创建机密或变量。', + ) + + // data/reusables/apps/redirect-uri-wildcard-matching.md: the translator + // scrambled the trailing conditional so `{% else %}` and the date/version + // branches were reordered and `{% ifversion fpt or ghec %}` was moved to + // after `{% endif %}`, leaving `{% else %}` an orphan (`tag "else" not + // found`). Reconstruct to match English: Apps that had a single callback + // URL enabled prior to {% ifversion fpt or ghec %}August 3, + // 2026{% else %}{% data variables.product.prodname_ghe_server %} + // 3.24{% endif %} have wildcard matching enabled... + content = content.replaceAll( + '在 {% else %}2026 年 8 月 3 日{% data variables.product.prodname_ghe_server %}{% endif %} 3.24{% ifversion fpt or ghec %} 之前已启用单个回调 URL 的应用,其回调 URL 已启用通配符匹配。', + '在{% ifversion fpt or ghec %}2026 年 8 月 3 日{% else %}{% data variables.product.prodname_ghe_server %} 3.24{% endif %} 之前已启用单个回调 URL 的应用,其回调 URL 已启用通配符匹配。', + ) } if (context.code === 'ru') { @@ -1836,6 +1923,42 @@ export function correctTranslatedContentStrings( '이전 조직 구성원을 초대하여{% else %}조직에 이전 멤버를{% endif%} 다시 추가하고 해당 사용자의 이전 역할, 액세스 권한, 포크 및 설정을 복원할지 여부를 선택할 수 {% ifversion fpt or ghec %}있습니다.', '{% ifversion fpt or ghec %}이전 조직 구성원을 초대하여{% else %}조직에 이전 멤버를{% endif %} 다시 추가하고 해당 사용자의 이전 역할, 액세스 권한, 포크 및 설정을 복원할지 여부를 선택할 수 있습니다.', ) + + // data/reusables/codespaces/when-an-org-pays.md: the translator split + // `{% elsif fpt %}...{% endif %}` away from its `{% ifversion ghec %}` + // opener, moving `{% ifversion ghec %}` to the end of the sentence and + // leaving the block never closed (`tag "elsif" not found`). + // Reconstruct to match English: This includes {% ifversion ghec %} + // public, private, and internal{% elsif fpt %}both public and + // private{% endif %} repositories. + content = content.replaceAll( + '여기에는 공용, 프라이빗 및 내부{% elsif fpt %}모두 공용 및 프라이빗{% endif %} 리포지토리가 포함됩니다{% ifversion ghec %}.', + '여기에는 {% ifversion ghec %}공용, 프라이빗 및 내부{% elsif fpt %}공용 및 프라이빗 모두{% endif %} 리포지토리가 포함됩니다.', + ) + + // data/reusables/actions/permissions-statement-secrets-and-variables-organization.md: + // the translator moved `{% endif %}` from the end of the first + // conditional to the start of the sentence, leaving the tag unclosed + // (`tag "endif" not found`). Reconstruct to match English: Organization + // owners{% ifversion custom-org-roles %} and users with the "..." + // permissions{% endif %} can create secrets or variables... + content = content.replaceAll( + '"조직 작업 변수 관리" 또는 "조직 작업 비밀 관리" 권한이{% endif %} 있는 조직 소유자{% ifversion custom-org-roles %} 및 사용자는 조직 수준에서 비밀 또는 변수를 만들 수 있습니다.', + '조직 소유자{% ifversion custom-org-roles %} 및 "조직 작업 변수 관리" 또는 "조직 작업 비밀 관리" 권한이 있는 사용자{% endif %}는 조직 수준에서 비밀 또는 변수를 만들 수 있습니다.', + ) + + // data/reusables/apps/redirect-uri-wildcard-matching.md: the translator + // scrambled the trailing conditional so the date/version branches and + // `{% else %}` were reordered ahead of `{% ifversion fpt or ghec %}`, + // leaving `{% else %}` an orphan (`tag "else" not found`). Reconstruct to + // match English: Apps that had a single callback URL enabled prior to + // {% ifversion fpt or ghec %}August 3, 2026{% else %} + // {% data variables.product.prodname_ghe_server %} 3.24{% endif %} have + // wildcard matching enabled... + content = content.replaceAll( + '2026{% else %}{% data variables.product.prodname_ghe_server %}년 8월 3일 3.24{% endif %} 이전에 {% ifversion fpt or ghec %}단일 콜백 URL을 사용하도록 설정된 앱에는 해당 콜백 URL에 대해 와일드카드 일치가 활성화되어 있습니다.', + '{% ifversion fpt or ghec %}2026년 8월 3일{% else %}{% data variables.product.prodname_ghe_server %} 3.24{% endif %} 이전에 단일 콜백 URL을 사용하도록 설정된 앱에는 해당 콜백 URL에 대해 와일드카드 일치가 활성화되어 있습니다.', + ) } if (context.code === 'de') { diff --git a/src/languages/tests/correct-translation-content.ts b/src/languages/tests/correct-translation-content.ts index 27d8bd63e494..3ba2c5d7070d 100644 --- a/src/languages/tests/correct-translation-content.ts +++ b/src/languages/tests/correct-translation-content.ts @@ -2720,4 +2720,120 @@ Para más información, consulta "[AUTOTITLE](/path)". expect(fix(other, 'ko')).toBe(other) }) }) + + // ─── Translation quality agent: 2025 corruption-scan patterns ──────── + // These per-file fixes were found by scanning all 8 translation repos for + // corruption patterns not yet caught by the corrector. Each is a Liquid + // conditional block whose tags were reordered or dropped by the + // translator, breaking the tag-matching parser. + + describe('ja: audit-log-search-by-repo.md per-file fix', () => { + test('restores trim dash and missing endif', () => { + const broken = + '{% ifversion ghec or fpt %}\n* `repo:my-org/our-repo` は、`my-org` 組織内の `our-repo` リポジトリで発生したすべてのイベントを検索します。\n* `repo:my-org/our-repo repo:my-org/another-repo` は、`my-org`組織内の `our-repo` および `another-repo` リポジトリで発生したすべてのイベントを検索します。\n* `-repo:my-org/not-this-repo` は、`my-org` 組織内の `not-this-repo` リポジトリで発生したすべてのイベントを除外します。\n\n`repo` 修飾子内にアカウント名を含める必要があります。`repo:our-repo` を検索するだけでは作動しません。' + const fixed = + '{%- ifversion ghec or fpt %}\n* `repo:my-org/our-repo` は、`my-org` 組織内の `our-repo` リポジトリで発生したすべてのイベントを検索します。\n* `repo:my-org/our-repo repo:my-org/another-repo` は、`my-org`組織内の `our-repo` および `another-repo` リポジトリで発生したすべてのイベントを検索します。\n* `-repo:my-org/not-this-repo` は、`my-org` 組織内の `not-this-repo` リポジトリで発生したすべてのイベントを除外します。\n\n`repo` 修飾子内にアカウント名を含める必要があります。`repo:our-repo` を検索するだけでは作動しません。{% endif %}' + expect(fix(broken, 'ja')).toBe(fixed) + expect(fix(fixed, 'ja')).toBe(fixed) + }) + }) + + describe('ja: assigning-users.md per-file fix', () => { + test('reorders scrambled ifversion/else/endif', () => { + const broken = + 'ユーザーまたはグループを IdP {% endif %} の {% ifversion ghec %} {% data variables.product.prodname_emu_idp_application %} アプリケーション {% else %} 関連アプリケーションに割り当てることで' + const fixed = + 'ユーザーまたはグループを {% ifversion ghec %}{% data variables.product.prodname_emu_idp_application %} アプリケーション{% else %}IdP の関連アプリケーション{% endif %}に割り当てることで' + expect(fix(broken, 'ja')).toBe(fixed) + expect(fix(fixed, 'ja')).toBe(fixed) + }) + }) + + describe('ja: self-hosted-runner-management-permissions-required.md per-file fix', () => { + test('reorders scrambled ifversion/elsif/endif', () => { + const broken = + 'セルフホステッド ランナーは、リポジトリまたは Organization のいずれかに配置するか、{% data variables.product.prodname_ghe_server %}{% endif %} の {% data variables.product.prodname_dotcom %}{% elsif ghes %} Enterprise 設定の {% ifversion fpt or ghec %} Enterprise アカウント設定に配置することができます。' + const fixed = + 'セルフホステッド ランナーは、リポジトリまたは Organization のいずれかに配置するか、{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} の Enterprise アカウント設定{% elsif ghes %}{% data variables.product.prodname_ghe_server %} の Enterprise 設定{% endif %}に配置することができます。' + expect(fix(broken, 'ja')).toBe(fixed) + expect(fix(fixed, 'ja')).toBe(fixed) + }) + }) + + describe('ja: codespaces/when-an-org-pays.md per-file fix', () => { + test('reorders scrambled ifversion/elsif/endif', () => { + const broken = + 'これには、パブリック リポジトリ、プライベート リポジトリ、および内部{% elsif fpt %}both パブリック リポジトリとプライベート リポジトリ{% endif %}{% ifversion ghec %}が含まれます。' + const fixed = + 'これには、{% ifversion ghec %}パブリック リポジトリ、プライベート リポジトリ、および内部{% elsif fpt %}パブリック リポジトリとプライベート リポジトリの両方{% endif %}が含まれます。' + expect(fix(broken, 'ja')).toBe(fixed) + expect(fix(fixed, 'ja')).toBe(fixed) + }) + }) + + describe('zh: codespaces/when-an-org-pays.md per-file fix', () => { + test('reorders scrambled ifversion/elsif/endif', () => { + const broken = + '这包括{% ifversion ghec %}公共存储库、专用存储库和{% endif %}内部{% elsif fpt %}存储库。' + const fixed = + '这包括{% ifversion ghec %}公共存储库、专用存储库和内部存储库{% elsif fpt %}公共存储库和专用存储库{% endif %}。' + expect(fix(broken, 'zh')).toBe(fixed) + expect(fix(fixed, 'zh')).toBe(fixed) + }) + }) + + describe('zh: permissions-statement-secrets-and-variables-organization.md per-file fix', () => { + test('moves misplaced endif to close the ifversion block', () => { + const broken = + '具有“管理组织操作变量”或“管理组织操作机密”权限{% endif %}的组织所有者{% ifversion custom-org-roles %}和用户可以在组织级别创建机密或变量。' + const fixed = + '组织所有者{% ifversion custom-org-roles %}和具有“管理组织操作变量”或“管理组织操作机密”权限的用户{% endif %}可以在组织级别创建机密或变量。' + expect(fix(broken, 'zh')).toBe(fixed) + expect(fix(fixed, 'zh')).toBe(fixed) + }) + }) + + describe('zh: redirect-uri-wildcard-matching.md per-file fix', () => { + test('reorders scrambled ifversion/else/endif', () => { + const broken = + '在 {% else %}2026 年 8 月 3 日{% data variables.product.prodname_ghe_server %}{% endif %} 3.24{% ifversion fpt or ghec %} 之前已启用单个回调 URL 的应用,其回调 URL 已启用通配符匹配。' + const fixed = + '在{% ifversion fpt or ghec %}2026 年 8 月 3 日{% else %}{% data variables.product.prodname_ghe_server %} 3.24{% endif %} 之前已启用单个回调 URL 的应用,其回调 URL 已启用通配符匹配。' + expect(fix(broken, 'zh')).toBe(fixed) + expect(fix(fixed, 'zh')).toBe(fixed) + }) + }) + + describe('ko: codespaces/when-an-org-pays.md per-file fix', () => { + test('reorders scrambled ifversion/elsif/endif', () => { + const broken = + '여기에는 공용, 프라이빗 및 내부{% elsif fpt %}모두 공용 및 프라이빗{% endif %} 리포지토리가 포함됩니다{% ifversion ghec %}.' + const fixed = + '여기에는 {% ifversion ghec %}공용, 프라이빗 및 내부{% elsif fpt %}공용 및 프라이빗 모두{% endif %} 리포지토리가 포함됩니다.' + expect(fix(broken, 'ko')).toBe(fixed) + expect(fix(fixed, 'ko')).toBe(fixed) + }) + }) + + describe('ko: permissions-statement-secrets-and-variables-organization.md per-file fix', () => { + test('moves misplaced endif to close the ifversion block', () => { + const broken = + '"조직 작업 변수 관리" 또는 "조직 작업 비밀 관리" 권한이{% endif %} 있는 조직 소유자{% ifversion custom-org-roles %} 및 사용자는 조직 수준에서 비밀 또는 변수를 만들 수 있습니다.' + const fixed = + '조직 소유자{% ifversion custom-org-roles %} 및 "조직 작업 변수 관리" 또는 "조직 작업 비밀 관리" 권한이 있는 사용자{% endif %}는 조직 수준에서 비밀 또는 변수를 만들 수 있습니다.' + expect(fix(broken, 'ko')).toBe(fixed) + expect(fix(fixed, 'ko')).toBe(fixed) + }) + }) + + describe('ko: redirect-uri-wildcard-matching.md per-file fix', () => { + test('reorders scrambled ifversion/else/endif', () => { + const broken = + '2026{% else %}{% data variables.product.prodname_ghe_server %}년 8월 3일 3.24{% endif %} 이전에 {% ifversion fpt or ghec %}단일 콜백 URL을 사용하도록 설정된 앱에는 해당 콜백 URL에 대해 와일드카드 일치가 활성화되어 있습니다.' + const fixed = + '{% ifversion fpt or ghec %}2026년 8월 3일{% else %}{% data variables.product.prodname_ghe_server %} 3.24{% endif %} 이전에 단일 콜백 URL을 사용하도록 설정된 앱에는 해당 콜백 URL에 대해 와일드카드 일치가 활성화되어 있습니다.' + expect(fix(broken, 'ko')).toBe(fixed) + expect(fix(fixed, 'ko')).toBe(fixed) + }) + }) }) diff --git a/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml b/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml index 82bedb517ff9..f040b29c87d6 100644 --- a/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml +++ b/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml @@ -3925,7 +3925,7 @@ base64Supported: false isduplicate: false - provider: PostHog - supportedSecret: PostHog Feature Flags Secure API Key + supportedSecret: PostHog Project Secret API Key secretType: posthog_feature_flags_secure_api_key isPublic: true isPrivateWithGhas: true diff --git a/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml b/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml index 82bedb517ff9..f040b29c87d6 100644 --- a/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml +++ b/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml @@ -3925,7 +3925,7 @@ base64Supported: false isduplicate: false - provider: PostHog - supportedSecret: PostHog Feature Flags Secure API Key + supportedSecret: PostHog Project Secret API Key secretType: posthog_feature_flags_secure_api_key isPublic: true isPrivateWithGhas: true