diff --git a/.github/workflows/check-broken-links-github-github.yml b/.github/workflows/check-broken-links-github-github.yml index a8e312d4f494..294931b168f8 100644 --- a/.github/workflows/check-broken-links-github-github.yml +++ b/.github/workflows/check-broken-links-github-github.yml @@ -20,7 +20,7 @@ jobs: # need to use a token from a user with access to github/github for this step GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} REPORT_AUTHOR: docs-bot - REPORT_LABEL: github github broken link report + REPORT_LABEL: github github broken link report,workflow-generated REPORT_REPOSITORY: github/docs-content steps: - name: Checkout diff --git a/.github/workflows/copy-api-issue-to-internal.yml b/.github/workflows/copy-api-issue-to-internal.yml index 37d13731caa2..aa3297591b86 100644 --- a/.github/workflows/copy-api-issue-to-internal.yml +++ b/.github/workflows/copy-api-issue-to-internal.yml @@ -45,7 +45,7 @@ jobs: - name: Create an issue in the docs-content repo run: | - new_issue_url="$(gh issue create --title "$ISSUE_TITLE" --body "$ISSUE_BODY" --repo github/docs-content)" + new_issue_url="$(gh issue create --title "$ISSUE_TITLE" --body "$ISSUE_BODY" --repo github/docs-content --label "workflow-generated")" echo 'NEW_ISSUE='$new_issue_url >> $GITHUB_ENV env: GITHUB_TOKEN: ${{secrets.DOCS_BOT_PAT_BASE}} diff --git a/.github/workflows/delete-orphan-translation-files.yml b/.github/workflows/delete-orphan-translation-files.yml index d4fca85a0c7e..2f6116f6062e 100644 --- a/.github/workflows/delete-orphan-translation-files.yml +++ b/.github/workflows/delete-orphan-translation-files.yml @@ -130,6 +130,7 @@ jobs: --body '👋 humans. This PR was generated from docs-internal/.github/workflows/delete-orphan-translation-files.yml. ' \ --repo "${{ matrix.language_repo }}" \ + --label "workflow-generated" \ --head=$branch_name echo "Merge created PR..." retry_command gh pr merge --merge --auto --delete-branch "$branch_name" diff --git a/.github/workflows/generate-code-scanning-query-lists.yml b/.github/workflows/generate-code-scanning-query-lists.yml index d24c20d70abd..7ede7c2d1df9 100644 --- a/.github/workflows/generate-code-scanning-query-lists.yml +++ b/.github/workflows/generate-code-scanning-query-lists.yml @@ -152,7 +152,7 @@ jobs: gh pr create \ --title "Update CodeQL query tables" \ --repo github/docs-internal \ - --label "codeql-query-tables,skip FR board,ready-for-doc-review" \ + --label "codeql-query-tables,skip FR board,ready-for-doc-review,workflow-generated" \ --body '👋 humans. This PR updates the **CodeQL query table reusables** with the latest changes in preparation for the next **CodeQL CLI** release. No action is required from the first responder for the Docs content team. This PR will be reviewed and merged by the Code scanning and GHAS focus team as part of the next release of CodeQL CLI. (Synced from codeql@${{ steps.codeql.outputs.OPENAPI_COMMIT_SHA }}) diff --git a/.github/workflows/moda-allowed-ips.yml b/.github/workflows/moda-allowed-ips.yml index 942bc4465bb1..54a02a71e2ec 100644 --- a/.github/workflows/moda-allowed-ips.yml +++ b/.github/workflows/moda-allowed-ips.yml @@ -49,6 +49,7 @@ jobs: gh pr create \ --title "Update list of allowed IPs" \ --body 'This PR updates the list of allowed IPs in Moda. It is automatically generated.' \ + --label "workflow-generated" \ --head=$branchname echo "Pull request created" diff --git a/.github/workflows/orphaned-features-check.yml b/.github/workflows/orphaned-features-check.yml index 2ab443c1cedf..1e4f23860a78 100644 --- a/.github/workflows/orphaned-features-check.yml +++ b/.github/workflows/orphaned-features-check.yml @@ -97,7 +97,7 @@ jobs: --title "Delete orphaned features ($date)" \ --body "$body" \ --repo github/docs-internal \ - --label docs-content-fr + --label docs-content-fr,workflow-generated - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name == 'schedule' }} diff --git a/.github/workflows/orphaned-files-check.yml b/.github/workflows/orphaned-files-check.yml index a893626e82c1..dcf8dc3542e2 100644 --- a/.github/workflows/orphaned-files-check.yml +++ b/.github/workflows/orphaned-files-check.yml @@ -105,7 +105,7 @@ jobs: --title "Delete orphaned files ($date)" \ --body "$body" \ --repo github/docs-internal \ - --label docs-content-fr + --label docs-content-fr,workflow-generated - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name == 'schedule' }} diff --git a/.github/workflows/sme-review-tracking-issue.yml b/.github/workflows/sme-review-tracking-issue.yml index cb0ab2338d73..e6d7b2eadddd 100644 --- a/.github/workflows/sme-review-tracking-issue.yml +++ b/.github/workflows/sme-review-tracking-issue.yml @@ -54,5 +54,5 @@ jobs: - Reviewer stating they'll need to get back to us at a later time - Review provided was unclear or missing key information, and a follow-up is necessary `, - labels: ['on track','open source', 'sme-review'], + labels: ['on track','open source', 'sme-review', 'workflow-generated'], }); diff --git a/.github/workflows/sync-audit-logs.yml b/.github/workflows/sync-audit-logs.yml index 70acc0312e60..631a7a3a519c 100644 --- a/.github/workflows/sync-audit-logs.yml +++ b/.github/workflows/sync-audit-logs.yml @@ -91,7 +91,7 @@ jobs: Make sure the PR builds successfully and there are no gross errors (for example, a file is deleted). You do not need to validate the contents (that is the responsibility of product teams). If CI does not pass or other problems arise, contact #docs-engineering on slack.' \ --repo github/docs-internal \ - --label audit-log-pipeline \ + --label audit-log-pipeline,workflow-generated \ --head=$branchname echo "Created pull request" diff --git a/.github/workflows/sync-codeql-cli.yml b/.github/workflows/sync-codeql-cli.yml index 8cfd73ce3dc9..89ede9f3748f 100644 --- a/.github/workflows/sync-codeql-cli.yml +++ b/.github/workflows/sync-codeql-cli.yml @@ -108,7 +108,7 @@ jobs: If CI does not pass or other problems arise, contact #docs-engineering on slack.' \ --repo github/docs-internal \ - --label "codeql-cli-pipeline,skip FR board,ready-for-doc-review" + --label "codeql-cli-pipeline,skip FR board,ready-for-doc-review,workflow-generated" - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name != 'workflow_dispatch' }} diff --git a/.github/workflows/sync-openapi.yml b/.github/workflows/sync-openapi.yml index 74abf1f367a3..19ea694bfcd8 100644 --- a/.github/workflows/sync-openapi.yml +++ b/.github/workflows/sync-openapi.yml @@ -114,7 +114,7 @@ jobs: If CI does not pass or other problems arise, contact #docs-engineering on slack.' \ --repo github/docs-internal \ - --label github-openapi-bot \ + --label github-openapi-bot,workflow-generated \ --head=$branchname \ - uses: ./.github/actions/slack-alert diff --git a/.github/workflows/sync-secret-scanning.yml b/.github/workflows/sync-secret-scanning.yml index 60268faa5fc9..f1f7c3aa702e 100644 --- a/.github/workflows/sync-secret-scanning.yml +++ b/.github/workflows/sync-secret-scanning.yml @@ -76,7 +76,7 @@ jobs: If CI does not pass or other problems arise, contact #docs-engineering on Slack.' \ --repo github/docs-internal \ - --label secret-scanning-pipeline,'skip FR board',ready-for-doc-review \ + --label secret-scanning-pipeline,'skip FR board',ready-for-doc-review,workflow-generated \ --head=$branchname - uses: ./.github/actions/slack-alert diff --git a/src/ghes-releases/lib/deprecation-steps.md b/src/ghes-releases/lib/deprecation-steps.md index 488d112341be..8c3c67d8d8cd 100644 --- a/src/ghes-releases/lib/deprecation-steps.md +++ b/src/ghes-releases/lib/deprecation-steps.md @@ -4,6 +4,7 @@ labels: - enterprise deprecation - priority-1 - time sensitive + - workflow-generated --- # Deprecation steps for GHES releases diff --git a/src/ghes-releases/lib/release-templates/release-steps-0.md b/src/ghes-releases/lib/release-templates/release-steps-0.md index edce01ffb755..82032ea01490 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-0.md +++ b/src/ghes-releases/lib/release-templates/release-steps-0.md @@ -8,7 +8,7 @@ labels: - skip FR board - GHES {{ release-number }} - ghes-release-automation - - rhythm of docs operations + - workflow-generated --- This issue tracks Docs work for the GA release of GHES {{ release-number }}. diff --git a/src/ghes-releases/lib/release-templates/release-steps-1.md b/src/ghes-releases/lib/release-templates/release-steps-1.md index dbd120c555b6..d287720bf846 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-1.md +++ b/src/ghes-releases/lib/release-templates/release-steps-1.md @@ -7,6 +7,7 @@ labels: - skip FR board - rhythm of docs operations - GHES {{ release-number }} + - workflow-generated --- ## Instructions for triage diff --git a/src/ghes-releases/lib/release-templates/release-steps-2.md b/src/ghes-releases/lib/release-templates/release-steps-2.md index 93f61b3e4551..abd788f35b81 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-2.md +++ b/src/ghes-releases/lib/release-templates/release-steps-2.md @@ -7,6 +7,7 @@ labels: - skip FR board - GHES {{ release-number }} - rhythm of docs operations + - workflow-generated --- ## Instructions for triage diff --git a/src/ghes-releases/lib/release-templates/release-steps-3.md b/src/ghes-releases/lib/release-templates/release-steps-3.md index c9792d4b07cd..030b0d2c60f8 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-3.md +++ b/src/ghes-releases/lib/release-templates/release-steps-3.md @@ -5,6 +5,7 @@ labels: - new-release - priority-0 - GHES {{ release-number }} + - workflow-generated --- Docs Content will publish docs for the GHES {{ release-number }} RC soon. Please draft a release note for the latest supported version of the CodeQL CLI, and update the docs to reflect the latest supported version. diff --git a/src/ghes-releases/lib/release-templates/release-steps-4.md b/src/ghes-releases/lib/release-templates/release-steps-4.md index 0b097800e7ae..5787979098ee 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-4.md +++ b/src/ghes-releases/lib/release-templates/release-steps-4.md @@ -4,6 +4,7 @@ labels: - Enterprise - priority-0 - skip FR board + - workflow-generated --- Docs Content will publish docs for the GHES {{ release-number }} RC soon. Please update the docs to reflect the minimum required version of the Actions Runner application for the new release. diff --git a/src/ghes-releases/lib/release-templates/release-steps-5.md b/src/ghes-releases/lib/release-templates/release-steps-5.md index 5ddfa696f2ba..6b491e575a39 100644 --- a/src/ghes-releases/lib/release-templates/release-steps-5.md +++ b/src/ghes-releases/lib/release-templates/release-steps-5.md @@ -7,6 +7,7 @@ labels: - priority-0 - skip FR board - rhythm of docs operations + - workflow-generated --- ## Instructions for triage diff --git a/src/release-notes/middleware/ghes-release-notes.ts b/src/release-notes/middleware/ghes-release-notes.ts index 5d403a854a9c..f949ebd9f698 100644 --- a/src/release-notes/middleware/ghes-release-notes.ts +++ b/src/release-notes/middleware/ghes-release-notes.ts @@ -1,7 +1,7 @@ import type { NextFunction, Response } from 'express' import { formatReleases, renderPatchNotes } from '@/release-notes/lib/release-notes-utils' -import { all } from '@/versions/lib/enterprise-server-releases.js' +import { all, latestStable } from '@/versions/lib/enterprise-server-releases.js' import { executeWithFallback } from '@/languages/lib/render-with-fallback.js' import { getReleaseNotes } from './get-release-notes' import type { Context, ExtendedRequest } from '@/types' @@ -87,7 +87,7 @@ export default async function ghesReleaseNotesContext( // GHES release notes on docs started with 2.20 but older release notes exist on enterprise.github.com. // So we want to use _all_ GHES versions when calculating next and previous releases. req.context.latestPatch = req.context.ghesReleaseNotes![0].version - req.context.latestRelease = all[0] + req.context.latestRelease = latestStable // Add convenience props for "Supported releases" section on GHES Admin landing page (NOT release notes). req.context.ghesReleases.forEach((release) => { diff --git a/src/release-notes/tests/yaml.ts b/src/release-notes/tests/yaml.ts index 0831d2b86d5d..16b5fcd41936 100644 --- a/src/release-notes/tests/yaml.ts +++ b/src/release-notes/tests/yaml.ts @@ -6,6 +6,8 @@ import { beforeAll, describe, expect, test } from 'vitest' import yaml from 'js-yaml' import { liquid } from '@/content-render/index.js' +import { getDataByLanguage } from '@/data-directory/lib/get-data.js' +import { allVersions } from '@/versions/lib/all-versions.js' interface ReleaseNoteContent { intro: string @@ -34,7 +36,7 @@ describe('lint enterprise release notes', () => { yamlContent = yaml.load(fileContents) as ReleaseNoteContent }) - test('contains valid liquid', () => { + test('contains valid liquid', async () => { const { intro, sections } = yamlContent let toLint: Record = { intro } for (const key in sections) { @@ -54,9 +56,28 @@ describe('lint enterprise release notes', () => { }) } + // Create context with site data for rendering liquid variables + const context = { + currentLanguage: 'en', + currentVersionObj: allVersions['free-pro-team@latest'], + site: { + data: { + reusables: getDataByLanguage('reusables', 'en'), + variables: getDataByLanguage('variables', 'en'), + ui: getDataByLanguage('ui', 'en'), + }, + }, + } + for (const key in toLint) { if (!toLint[key]) continue + // First check if liquid parses correctly expect(() => liquid.parse(toLint[key]), `${key} contains invalid liquid`).not.toThrow() + // Then check if liquid renders correctly with context + await expect( + liquid.parseAndRender(toLint[key], context), + `${key} contains liquid that fails to render`, + ).resolves.not.toThrow() } }) diff --git a/src/search/components/input/AskAIResults.tsx b/src/search/components/input/AskAIResults.tsx index 7b135839de0f..4b1d6afc84fe 100644 --- a/src/search/components/input/AskAIResults.tsx +++ b/src/search/components/input/AskAIResults.tsx @@ -381,54 +381,6 @@ export function AskAIResults({ return (
- {!aiCouldNotAnswer && references && references.length > 0 ? ( - <> - - - - {t('search.ai.references')} - - {references - .map((source, index) => { - if (index >= MAX_REFERENCES_TO_SHOW) { - return null - } - const refIndex = index + referencesIndexOffset - return ( - { - referenceOnSelect(source.url) - }} - active={refIndex === selectedIndex} - ref={(element) => { - if (listElementsRef.current) { - listElementsRef.current[refIndex] = element - } - }} - > - - {source.title} - - ) - }) - .filter(Boolean)} - - - - ) : null}
) : null} + {!aiCouldNotAnswer && references && references.length > 0 ? ( + <> +