Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ If members of your enterprise access {% data variables.location.product_location
* Interactions with a resource owned by the personal account, including a repository, gist, or project
* Interactions with a public repository owned by an organization in your enterprise

{% data variables.product.github %} does not display IP address in the audit log for `api.request` events triggered by GraphQL requests.
{% data variables.product.github %} does not display IP addresses in the audit log for `api.request` events that do not have repository context, such as requests triggered by GraphQL or requests to endpoints that reference only a user or organization.

## Enabling display of IP addresses in the audit log

Expand Down
8 changes: 8 additions & 0 deletions content/billing/get-started/how-billing-works.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ For credit card and PayPal payments, the billing date is the day you started a p

Most users pay for {% data variables.product.github %} using metered billing. The billing cycle for all metered products is a fixed period from the first day to the last day of the month.

### Authorization holds

You may see an authorization hold on your provided payment method upon initiating a subscription or trial. Depending on your bank or card issuer, this may result in the appearance of a transaction or charge.

Authorization holds are temporary and released as quickly as possible. If the authorization hold persists for longer than 10 business days, we suggest reaching out to your bank or card issuer.

If the authorization is unsuccessful, the chosen service will not be activated and the account may be locked. For more more information, see [AUTOTITLE](/billing/how-tos/troubleshooting/locked-account#unlocking-an-accounts-features-due-to-a-failed-authorization-hold).

## How do I see what I'm billed for?

You can see the billing and usage information for your account at anytime in the "Billing and licensing" pages of your account or using the REST API. For more information, see [AUTOTITLE](/billing/how-tos/products/view-product-use).
Expand Down
12 changes: 11 additions & 1 deletion content/billing/how-tos/troubleshooting/locked-account.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,20 @@ You can unlock and access your account by updating your account's payment method

You can downgrade your user account or organization to {% data variables.product.prodname_free_team %} to continue with the same advanced features in public repositories. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan).

## Unlocking an organization's features due to a declined payment
## Unlocking an account's features due to a declined payment

If your account's advanced features are locked due to a declined payment, you'll need to update your billing information to trigger a newly authorized charge.

{% data reusables.billing.manage-payment-info %}

If the new billing information is approved, we will immediately charge you for the paid product you chose. The account will automatically unlock when a payment has been successfully processed. Payments may take up to 24 hours to process.

## Unlocking an account's features due to a failed authorization hold

When initiating a subscription or trial, we verify the entered payment method using an authorization hold. If the hold is unsuccessful, the chosen subscription or trial will not activate.

If your account's advanced features are locked due to a failed authorization hold, you'll need to update your billing information to trigger a new authorization.

{% data reusables.billing.manage-payment-info %}

If the new authorization is successful, the account will automatically unlock and you will be able to proceed with the chosen subscription.
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ After you enable the feature, you can access the audit log to view events that i

{% data variables.product.github %} displays an IP address for each event in the organization audit log that meets these criteria.

* The actor is an organization member or owner
* The actor is an organization member or owner.
* The target is either an organization-owned repository that is private or internal, or an organization resource that is not a repository, such as a project.
* For `api.request` events, the request was not triggered by GraphQL.
* For `api.request` events, the request must have repository context; requests triggered by GraphQL or to endpoints that reference only a user or organization do not meet this condition.

## Enabling display of IP addresses in the audit log

Expand Down
4 changes: 2 additions & 2 deletions src/fixtures/fixtures/content/get-started/carousel/index.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: Carousel Test Category
title: Landing Page Carousel
intro: 'A test category page for testing the LandingCarousel component.'
versions:
fpt: '*'
ghes: '*'
ghec: '*'
layout: category-landing
layout: discovery-landing
recommended:
- /category-one/article-one
- /category-one/article-two
Expand Down
1 change: 1 addition & 0 deletions src/fixtures/fixtures/content/get-started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ children:
- /versioning
- /learning-about-github
- /empty-categories
- /test-journey
- /carousel
- /article-grid-discovery
- /article-grid-bespoke
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Test Journey Landing
title: Journey Landing
intro: 'Test page for journey tracks functionality'
layout: journey-landing
versions:
Expand Down
1 change: 0 additions & 1 deletion src/fixtures/fixtures/content/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ children:
# as if the URL had been `/en/free-pro-team@latest/get-started/anything`.
- search
- get-started
- test-journey
- early-access
- pages
- code-security
Expand Down
16 changes: 8 additions & 8 deletions src/fixtures/tests/playwright-rendering.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1008,7 +1008,7 @@ test('open search, Ask AI returns 400 error and shows general search results', a

test.describe('LandingCarousel component', () => {
test('displays carousel on test page', async ({ page }) => {
await page.goto('/get-started/carousel?feature=discovery-landing')
await page.goto('/get-started/carousel')

const carousel = page.locator('[data-testid="landing-carousel"]')
await expect(carousel).toBeVisible()
Expand All @@ -1026,7 +1026,7 @@ test.describe('LandingCarousel component', () => {

test('navigation works on desktop', async ({ page }) => {
await page.setViewportSize({ width: 1200, height: 800 })
await page.goto('/get-started/carousel?feature=discovery-landing')
await page.goto('/get-started/carousel')

const carousel = page.locator('[data-testid="landing-carousel"]')
await expect(carousel).toBeVisible()
Expand All @@ -1046,7 +1046,7 @@ test.describe('LandingCarousel component', () => {

test('responsive behavior on mobile', async ({ page }) => {
await page.setViewportSize({ width: 375, height: 667 })
await page.goto('/get-started/carousel?feature=discovery-landing')
await page.goto('/get-started/carousel')

const carousel = page.locator('[data-testid="landing-carousel"]')
await expect(carousel).toBeVisible()
Expand All @@ -1059,7 +1059,7 @@ test.describe('LandingCarousel component', () => {

test.describe('Journey Tracks', () => {
test('displays journey tracks on landing pages', async ({ page }) => {
await page.goto('/get-started?feature=journey-landing')
await page.goto('/get-started/test-journey')

const journeyTracks = page.locator('[data-testid="journey-tracks"]')
await expect(journeyTracks).toBeVisible()
Expand All @@ -1075,7 +1075,7 @@ test.describe('Journey Tracks', () => {
})

test('track expansion and collapse functionality', async ({ page }) => {
await page.goto('/get-started?feature=journey-landing')
await page.goto('/get-started/test-journey')

const firstTrack = page.locator('[data-testid="journey-track"]').first()
const expandButton = firstTrack.locator('summary')
Expand All @@ -1095,7 +1095,7 @@ test.describe('Journey Tracks', () => {
})

test('article navigation within tracks', async ({ page }) => {
await page.goto('/get-started?feature=journey-landing')
await page.goto('/get-started/test-journey')

const firstTrack = page.locator('[data-testid="journey-track"]').first()
const expandButton = firstTrack.locator('summary')
Expand All @@ -1112,7 +1112,7 @@ test.describe('Journey Tracks', () => {
})

test('preserves version in journey track links', async ({ page }) => {
await page.goto('/enterprise-cloud@latest/get-started?feature=journey-landing')
await page.goto('/enterprise-cloud@latest/get-started/test-journey')

const firstTrack = page.locator('[data-testid="journey-track"]').first()
const expandButton = firstTrack.locator('summary')
Expand All @@ -1127,7 +1127,7 @@ test.describe('Journey Tracks', () => {
})

test('handles liquid template rendering in track content', async ({ page }) => {
await page.goto('/get-started?feature=journey-landing')
await page.goto('/get-started/test-journey')

const tracks = page.locator('[data-testid="journey-track"]')

Expand Down
7 changes: 5 additions & 2 deletions src/journeys/components/JourneyTrackCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,19 @@ import { useRouter } from 'next/router'
import { Link } from '@/frame/components/Link'
import type { JourneyContext } from '@/journeys/lib/journey-path-resolver'
import { useTranslation } from '@/languages/components/useTranslation'
import { useVersion } from '@/versions/components/useVersion'

type Props = {
journey: JourneyContext
}

export function JourneyTrackCard({ journey }: Props) {
const { locale } = useRouter()
const { currentVersion } = useVersion()
const { t } = useTranslation('journey_track_nav')
const { trackTitle, journeyTitle, journeyPath, nextGuide, numberOfGuides, currentGuideIndex } =
journey
const fullPath = `/${locale}/${currentVersion}${journeyPath}?feature=journey-landing`

return (
<div
Expand All @@ -21,7 +24,7 @@ export function JourneyTrackCard({ journey }: Props) {
>
<div className="d-flex flex-column width-full">
<h2 className="h4">
<Link href={`/${locale}${journeyPath}`} className="mb-1 text-underline">
<Link href={fullPath} className="mb-1 text-underline">
{journeyTitle}
</Link>
</h2>
Expand All @@ -41,7 +44,7 @@ export function JourneyTrackCard({ journey }: Props) {
</Link>
</>
) : (
<Link href={`/${locale}${journeyPath}`} className="h5 text-bold color-fg f5 ml-1">
<Link href={fullPath} className="h5 text-bold color-fg f5 ml-1">
{t('more_articles')}
</Link>
)}
Expand Down
4 changes: 3 additions & 1 deletion src/journeys/lib/journey-path-resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { getPathWithoutLanguage, getPathWithoutVersion } from '@/frame/lib/path-
import { renderContent } from '@/content-render/index'
import { executeWithFallback } from '@/languages/lib/render-with-fallback'
import getApplicableVersions from '@/versions/lib/get-applicable-versions'
import Permalink from '@/frame/lib/permalink'
import getLinkData from './get-link-data'

export interface JourneyContext {
Expand Down Expand Up @@ -170,7 +171,8 @@ export async function resolveJourneyContext(
trackName: track.id,
trackTitle: track.title,
journeyTitle: journeyPage.title || '',
journeyPath: journeyPage.permalink || `/${journeyPage.relativePath || ''}`,
journeyPath:
journeyPage.permalink || Permalink.relativePathToSuffix(journeyPage.relativePath || ''),
currentGuideIndex: guideIndex,
numberOfGuides: track.guides.length,
}
Expand Down
Loading