From 3cca078be57c5d95365d86762d2662db4a94a593 Mon Sep 17 00:00:00 2001
From: asaf
Date: Mon, 15 Dec 2025 17:52:56 -0500
Subject: [PATCH 1/2] Fix app.pulumi.com links opening in new tabs
Treat subdomains of pulumi.com as internal links so they don't open in new tabs. The external-links.ts script now checks for subdomain relationships instead of exact domain match, allowing app.pulumi.com to be recognized as internal when linking from pulumi.com.
---
theme/src/ts/external-links.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/theme/src/ts/external-links.ts b/theme/src/ts/external-links.ts
index d7f139d788bb..8f273220aa9f 100644
--- a/theme/src/ts/external-links.ts
+++ b/theme/src/ts/external-links.ts
@@ -26,8 +26,12 @@
const url = new URL(href, window.location.origin);
const linkDomain = url.hostname.replace(/^www\./, '');
- // If the domain is different from the current domain, it's external
- if (linkDomain !== currentDomain) {
+ // Check if link is internal (same domain or subdomain relationship)
+ const isInternal = linkDomain === currentDomain ||
+ linkDomain.endsWith('.' + currentDomain) ||
+ currentDomain.endsWith('.' + linkDomain);
+
+ if (!isInternal) {
// Add target="_blank" and rel="noopener" (for security)
link.setAttribute('target', '_blank');
From a5d327dc0409155ef950b96080ec1d5893f71ec0 Mon Sep 17 00:00:00 2001
From: asaf
Date: Tue, 16 Dec 2025 09:10:00 -0500
Subject: [PATCH 2/2] Remove hardcoded target="_blank" from app.pulumi.com
links
The JavaScript fix in external-links.ts only affects links that don't
already have a target attribute. These files had target="_blank"
hardcoded on app.pulumi.com links, causing them to still open in new
tabs. Removed the attribute so the JavaScript subdomain detection logic
can properly treat them as internal links.
Files updated:
- theme/stencil/src/components/header-cta/header-cta.tsx
- theme/stencil/src/components/pricing-cta/pricing-cta.tsx
- layouts/shortcodes/templates/pulumi-new.html
- layouts/shortcodes/console-note.html
- layouts/partner/aws.html
- layouts/partials/top-nav.html
- layouts/partials/home/cli.html
- layouts/partials/header.html
- layouts/partials/docs-top-nav.html
- layouts/page/reinvent.html
- content/docs/reference/cloud-rest-api/api-basics/_index.md
- content/docs/iac/concepts/state-and-backends.md
- content/docs/deployments/get-started/_index.md
---
content/docs/deployments/get-started/_index.md | 2 +-
content/docs/iac/concepts/state-and-backends.md | 6 +++---
content/docs/reference/cloud-rest-api/api-basics/_index.md | 2 +-
layouts/page/reinvent.html | 4 ++--
layouts/partials/docs-top-nav.html | 2 +-
layouts/partials/header.html | 2 +-
layouts/partials/home/cli.html | 2 +-
layouts/partials/top-nav.html | 2 +-
layouts/partner/aws.html | 2 +-
layouts/shortcodes/console-note.html | 4 ++--
layouts/shortcodes/templates/pulumi-new.html | 2 +-
theme/stencil/src/components/header-cta/header-cta.tsx | 2 +-
theme/stencil/src/components/pricing-cta/pricing-cta.tsx | 4 ++--
13 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/content/docs/deployments/get-started/_index.md b/content/docs/deployments/get-started/_index.md
index f897205c76c5..78b90861a407 100644
--- a/content/docs/deployments/get-started/_index.md
+++ b/content/docs/deployments/get-started/_index.md
@@ -28,7 +28,7 @@ New to Pulumi or evaluating your options? Read [Pulumi Cloud and Open Source Pul
The Pulumi Individual Edition is free forever for unlimited individual use. Create an account to start building with Pulumi Cloud:
-Create an Account
+Create an Account
When you sign in, a personal organization is automatically created. You can create unlimited stacks, encrypt configuration and secrets, and browse stack history.
diff --git a/content/docs/iac/concepts/state-and-backends.md b/content/docs/iac/concepts/state-and-backends.md
index 063a558c98ba..58547bb723d8 100644
--- a/content/docs/iac/concepts/state-and-backends.md
+++ b/content/docs/iac/concepts/state-and-backends.md
@@ -43,7 +43,7 @@ Pulumi supports two classes of state backends for storing your infrastructure st
Pulumi's SDK works great with all backends, although some details differ between them.
-Pulumi Cloud, hosted at `app.pulumi.com`, is the default backend, as it provides the best combination of usability, safety, and security for most users. Important features include:
+Pulumi Cloud, hosted at `app.pulumi.com`, is the default backend, as it provides the best combination of usability, safety, and security for most users. Important features include:
- Robust state management, with transactional checkpointing for fault tolerance and recovery
- Concurrent state locking to prevent corrupting your infrastructure state in a team environment
@@ -53,7 +53,7 @@ Pulumi Cloud, hosted at `app.pu
- Secure access to cloud resource metadata, with client-side authentication to your cloud provider
- Team policies, including Policy as Code and Role Based Access Control (RBAC)
-The Pulumi Cloud backend requires no additional configuration after [installing the CLI](/docs/install/). Pulumi offers this backend hosted online free for individuals, with [advanced tiers](/pricing/) available for teams and enterprises (with free trials). It has successfully undergone multiple security audits including SOC2, pen-testing, and more.
+The Pulumi Cloud backend requires no additional configuration after [installing the CLI](/docs/install/). Pulumi offers this backend hosted online free for individuals, with [advanced tiers](/pricing/) available for teams and enterprises (with free trials). It has successfully undergone multiple security audits including SOC2, pen-testing, and more.
> To learn more about the Pulumi Cloud backend's design, including why it doesn't need your cloud credentials, see [Pulumi Cloud Architecture](#pulumi-cloud-architecture). If you are interested in the hosting your own instance, see the [Self-Hosting User Guide](/docs/pulumi-cloud/self-hosted/).
@@ -128,7 +128,7 @@ Enter your access token from https://app.pulumi.com/account/tokens
To automatically generate and use a new access token, hit ``. This will open a web browser to interact with Pulumi Cloud and request a token. If this is your first time using Pulumi Cloud, you will be asked to authenticate using your chosen identity provider (GitHub, GitLab, Atlassian, SAML/SSO, or email).
-To view your access tokens, or create a new one manually, view the Access Tokens page. You will see a list of past tokens, when they were last used, as well as the ability to revoke them.
+To view your access tokens, or create a new one manually, view the Access Tokens page. You will see a list of past tokens, when they were last used, as well as the ability to revoke them.
diff --git a/content/docs/reference/cloud-rest-api/api-basics/_index.md b/content/docs/reference/cloud-rest-api/api-basics/_index.md
index d906b16e54c4..caa6564af07c 100644
--- a/content/docs/reference/cloud-rest-api/api-basics/_index.md
+++ b/content/docs/reference/cloud-rest-api/api-basics/_index.md
@@ -33,7 +33,7 @@ The `Authorization` header must be in the form below with the literal string `to
Authorization: token {token}
```
-To view your access tokens, or create a new one, view the Access Tokens page. You will see a list of past tokens, when they were last used, and have the ability to revoke them.
+To view your access tokens, or create a new one, view the Access Tokens page. You will see a list of past tokens, when they were last used, and have the ability to revoke them.
The Pulumi Cloud REST API will return a 401 status code if the token is missing or invalid.
diff --git a/layouts/page/reinvent.html b/layouts/page/reinvent.html
index f5ac8289fe83..c9bf454a998d 100644
--- a/layouts/page/reinvent.html
+++ b/layouts/page/reinvent.html
@@ -29,8 +29,8 @@ See How Neo Automates AWS Operations
Watch Neo handle patching, policy checks, drift remediation, and cost cleanups powered by Amazon Bedrock - so you can focus on strategy instead of toil.
diff --git a/layouts/partials/docs-top-nav.html b/layouts/partials/docs-top-nav.html
index aef9222ddf09..c302f865ba12 100644
--- a/layouts/partials/docs-top-nav.html
+++ b/layouts/partials/docs-top-nav.html
@@ -62,7 +62,7 @@
-
+
{{ partial "top-nav-user-toggle" }}
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
index a491ba483fe8..be254287d1c4 100644
--- a/layouts/partials/header.html
+++ b/layouts/partials/header.html
@@ -45,7 +45,7 @@
-
+
{{ partial "top-nav-user-toggle" }}
diff --git a/layouts/partials/home/cli.html b/layouts/partials/home/cli.html
index 7459de2c5938..410b9fc5017c 100644
--- a/layouts/partials/home/cli.html
+++ b/layouts/partials/home/cli.html
@@ -37,7 +37,7 @@
diff --git a/layouts/partials/top-nav.html b/layouts/partials/top-nav.html
index a7573d54692a..acc2cdda0f08 100644
--- a/layouts/partials/top-nav.html
+++ b/layouts/partials/top-nav.html
@@ -64,7 +64,7 @@
-
+
{{ partial "top-nav-user-toggle" }}
diff --git a/layouts/partner/aws.html b/layouts/partner/aws.html
index 4e906b397027..23bcfd16bd05 100644
--- a/layouts/partner/aws.html
+++ b/layouts/partner/aws.html
@@ -12,7 +12,7 @@ Deploy AWS Infrastructure at the Speed of
deployments while maintaining enterprise governance and compliance.
diff --git a/layouts/shortcodes/console-note.html b/layouts/shortcodes/console-note.html
index 34fd4b6d4603..3e36467c27ba 100644
--- a/layouts/shortcodes/console-note.html
+++ b/layouts/shortcodes/console-note.html
@@ -5,8 +5,8 @@
- If you are using the Pulumi Cloud backend, you can follow the "View in Browser" link displayed in the
- CLI output. This will open the update in Pulumi Cloud, where you can view the output and explore detailed
+ If you are using the Pulumi Cloud backend, you can follow the "View in Browser" link displayed in the
+ CLI output. This will open the update in Pulumi Cloud, where you can view the output and explore detailed
information about your stack such as its activity, resources, and configuration.
diff --git a/layouts/shortcodes/templates/pulumi-new.html b/layouts/shortcodes/templates/pulumi-new.html
index 283f9deb4be9..274be5f3ad10 100644
--- a/layouts/shortcodes/templates/pulumi-new.html
+++ b/layouts/shortcodes/templates/pulumi-new.html
@@ -41,7 +41,7 @@
diff --git a/theme/stencil/src/components/header-cta/header-cta.tsx b/theme/stencil/src/components/header-cta/header-cta.tsx
index 8d390986cfd6..47258dfa5ce7 100644
--- a/theme/stencil/src/components/header-cta/header-cta.tsx
+++ b/theme/stencil/src/components/header-cta/header-cta.tsx
@@ -39,7 +39,7 @@ export class HeaderCta {
if (this.isLoggedIn) {
return(
- Dashboard
+ Dashboard
);
}
diff --git a/theme/stencil/src/components/pricing-cta/pricing-cta.tsx b/theme/stencil/src/components/pricing-cta/pricing-cta.tsx
index 5f83bd6d7303..bc0a050f425a 100644
--- a/theme/stencil/src/components/pricing-cta/pricing-cta.tsx
+++ b/theme/stencil/src/components/pricing-cta/pricing-cta.tsx
@@ -44,12 +44,12 @@ export class pricingCta {
if (this.isLoggedIn) {
return(
- {this.signedInText}
+ {this.signedInText}
);
}
return (
- {this.signedOutText}
+ {this.signedOutText}
);
}