From 53320e8dddfa671d3f7e0f8c37d20128b25c0f26 Mon Sep 17 00:00:00 2001 From: Duncan Mackenzie Date: Mon, 31 Aug 2026 16:05:54 -0700 Subject: [PATCH 1/2] draft page --- .../release-stages.mdx | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/evaluate/development-production-features/release-stages.mdx b/docs/evaluate/development-production-features/release-stages.mdx index d4a112cb0f..ba92305512 100644 --- a/docs/evaluate/development-production-features/release-stages.mdx +++ b/docs/evaluate/development-production-features/release-stages.mdx @@ -78,3 +78,46 @@ There may be exceptions for different features, but this is the typical expectat Any variation will be documented. ::: + + +## Features currently in Pre-release + +| Feature | Notes | +| --- | --- | +| [GCP Cloud Run serverless workers](/develop/go/workers/serverless-workers/cloud-run) | Available in most SDKs; contact your account team for access. | +| [Standalone Nexus Operations](/encyclopedia/nexus/standalone-nexus-operation) | | +| [OpenTelemetry v2 integration](/develop/go/integrations/opentelemetry-v2) | Go SDK only | +| [Temporal Cloud CLI extension](/cli/setup-cli) | | +| [Cloud Projects](/cloud/projects) | | +| [Workflow Pause](/encyclopedia/workflow/workflow-pause) | | +| [Deep Agents integration](/develop/python/integrations/deepagents) | Python SDK | +| [Custom Roles](/cloud/manage-access/custom-roles) | Temporal Cloud | +| [Temporal Proxy](/production-deployment/temporal-proxy) | | +| [Automated migration to Temporal Cloud](/cloud/migrate/automated) | | +| [Principal Attribution](/encyclopedia/workflow/workflow-execution/event) | Event History field | +| Strands Agents integration | ⚠️ TypeScript SDK page calls this "experimental," not Pre-release — needs a stage decision before this row is trustworthy | + +## Features currently in Public Preview + +| Feature | Notes | +| --- | --- | +| [AWS Lambda serverless workers](/develop/go/workers/serverless-workers/aws-lambda) | | +| [Rust SDK](/develop/rust) | Applies to the whole SDK | +| [Standalone Activities](/encyclopedia/activities/standalone-activity) | Java SDK support is Pre-release | +| [External Storage (claim-check)](/develop/go/best-practices/data-handling/external-storage) | ⚠️ TypeScript docs currently show this as Pre-release — stale, needs fixing either way | +| [Activity Operations API](/encyclopedia/activities/activity-operations) | | +| [Cloud High Availability](/cloud/high-availability) | Same-region replication | +| [Upgrade on Continue-As-New](/production-deployment/worker-deployments/worker-versioning/upgrade-on-continue-as-new) | Worker Versioning | +| [Terraform Provider](/cloud/terraform-provider) | | +| [Cloud Billing API](/cloud/billing-and-usage/billing) | | +| [Workflow Streams](/workflow-streams) | | +| [Eager Workflow Start](/develop/worker-performance) | | +| [Update-With-Start](/develop/ruby/workflows/message-passing) | ⚠️ Only tagged on the Ruby page — other SDKs show no tag at all, worth confirming actual status | +| [Temporal Ops skill](/with-ai) | AI dev tooling | +| [Temporal Serverless skill](/with-ai) | AI dev tooling | +| [OpenAI Agents OpenTelemetry plugin](/develop/python/integrations/openai-agents) | Python | +| [Strands Agents integration](/develop/python/integrations/strands-agents) | Python | +| [LangSmith integration](/develop/python/integrations/langsmith) | Python and TypeScript | +| [LangGraph integration](/develop/python/integrations/langgraph) | Python | +| [AI SDK by Vercel integration](/develop/typescript/integrations/ai-sdk) | TypeScript | +| [Spring AI integration](/develop/java/integrations/spring-ai) | Java | From a0a62c687f1a70b54de6ca7153538b4032ec4853 Mon Sep 17 00:00:00 2001 From: Duncan Mackenzie Date: Tue, 1 Sep 2026 10:00:16 -0700 Subject: [PATCH 2/2] Full registry generated table --- .../java/activities/standalone-activities.mdx | 1 + .../data-handling/external-storage.mdx | 2 +- .../release-stages.mdx | 47 +--------- readme/COMPONENTS.md | 59 +++++++++++- readme/COMPONENT_REGISTRY.md | 5 +- readme/MARKDOWN_PIPELINE.md | 2 + .../feature-stage-table.mjs | 59 ++++++++++++ scripts/mdx-to-md.mjs | 38 ++++++-- .../FeatureStageLabel/FeatureStageLabel.js | 14 +++ .../elements/FeatureStageLabel/index.js | 1 + .../ReleaseNoteHeader/ReleaseNoteHeader.js | 20 +++-- .../elements/Tables/FeatureStageTable.js | 51 +++++++++++ src/components/elements/Tables/index.js | 1 + src/components/elements/index.js | 1 + src/constants/featureReleaseTypes.js | 89 +++++++++++++++++-- src/constants/featureReleaseTypes.test.mjs | 60 +++++++++++++ tests/test-mdx-to-md.mjs | 56 +++++++++++- 17 files changed, 433 insertions(+), 73 deletions(-) create mode 100644 scripts/component-handlers/feature-stage-table.mjs create mode 100644 src/components/elements/FeatureStageLabel/FeatureStageLabel.js create mode 100644 src/components/elements/FeatureStageLabel/index.js create mode 100644 src/components/elements/Tables/FeatureStageTable.js create mode 100644 src/constants/featureReleaseTypes.test.mjs diff --git a/docs/develop/java/activities/standalone-activities.mdx b/docs/develop/java/activities/standalone-activities.mdx index 24d316b4f8..e2341df20f 100644 --- a/docs/develop/java/activities/standalone-activities.mdx +++ b/docs/develop/java/activities/standalone-activities.mdx @@ -15,6 +15,7 @@ import { ReleaseNoteHeader } from '@site/src/components'; [Standalone Activities](/standalone-activity) are Activities that run independently, without being orchestrated by a diff --git a/docs/develop/typescript/best-practices/data-handling/external-storage.mdx b/docs/develop/typescript/best-practices/data-handling/external-storage.mdx index fda6df5e20..d4aefe8ebd 100644 --- a/docs/develop/typescript/best-practices/data-handling/external-storage.mdx +++ b/docs/develop/typescript/best-practices/data-handling/external-storage.mdx @@ -12,7 +12,7 @@ description: Offload large payloads to external storage using the claim check pa import { ReleaseNoteHeader } from '@site/src/components'; - + APIs and configuration may change before General Availability. Join the [#large-payloads Slack channel](https://temporalio.slack.com/archives/C09VA2DE15Y) to provide feedback or ask for help. diff --git a/docs/evaluate/development-production-features/release-stages.mdx b/docs/evaluate/development-production-features/release-stages.mdx index ba92305512..08b2c94227 100644 --- a/docs/evaluate/development-production-features/release-stages.mdx +++ b/docs/evaluate/development-production-features/release-stages.mdx @@ -8,6 +8,8 @@ tags: - Temporal --- +import { FeatureStageTable } from '@site/src/components'; + :::tip CHANGELOG To stay up-to-date with the latest feature changes, visit the [changelog](https://temporal.io/change-log). ::: @@ -27,6 +29,8 @@ Product Release Guide Expectations: | **Feature Cloud pricing** | No additional cost. | Pricing changes are kept to a minimum. | Pricing is stable. | | **Feature Interoperability** | Limited. | Features are compatible with each other, unless otherwise stated. | Features are compatible with each other. | + + ## Pre-release {/* #pre-release */} **Access:** Most Pre-release features are released in the open source Temporal software and are publicly available. @@ -78,46 +82,3 @@ There may be exceptions for different features, but this is the typical expectat Any variation will be documented. ::: - - -## Features currently in Pre-release - -| Feature | Notes | -| --- | --- | -| [GCP Cloud Run serverless workers](/develop/go/workers/serverless-workers/cloud-run) | Available in most SDKs; contact your account team for access. | -| [Standalone Nexus Operations](/encyclopedia/nexus/standalone-nexus-operation) | | -| [OpenTelemetry v2 integration](/develop/go/integrations/opentelemetry-v2) | Go SDK only | -| [Temporal Cloud CLI extension](/cli/setup-cli) | | -| [Cloud Projects](/cloud/projects) | | -| [Workflow Pause](/encyclopedia/workflow/workflow-pause) | | -| [Deep Agents integration](/develop/python/integrations/deepagents) | Python SDK | -| [Custom Roles](/cloud/manage-access/custom-roles) | Temporal Cloud | -| [Temporal Proxy](/production-deployment/temporal-proxy) | | -| [Automated migration to Temporal Cloud](/cloud/migrate/automated) | | -| [Principal Attribution](/encyclopedia/workflow/workflow-execution/event) | Event History field | -| Strands Agents integration | ⚠️ TypeScript SDK page calls this "experimental," not Pre-release — needs a stage decision before this row is trustworthy | - -## Features currently in Public Preview - -| Feature | Notes | -| --- | --- | -| [AWS Lambda serverless workers](/develop/go/workers/serverless-workers/aws-lambda) | | -| [Rust SDK](/develop/rust) | Applies to the whole SDK | -| [Standalone Activities](/encyclopedia/activities/standalone-activity) | Java SDK support is Pre-release | -| [External Storage (claim-check)](/develop/go/best-practices/data-handling/external-storage) | ⚠️ TypeScript docs currently show this as Pre-release — stale, needs fixing either way | -| [Activity Operations API](/encyclopedia/activities/activity-operations) | | -| [Cloud High Availability](/cloud/high-availability) | Same-region replication | -| [Upgrade on Continue-As-New](/production-deployment/worker-deployments/worker-versioning/upgrade-on-continue-as-new) | Worker Versioning | -| [Terraform Provider](/cloud/terraform-provider) | | -| [Cloud Billing API](/cloud/billing-and-usage/billing) | | -| [Workflow Streams](/workflow-streams) | | -| [Eager Workflow Start](/develop/worker-performance) | | -| [Update-With-Start](/develop/ruby/workflows/message-passing) | ⚠️ Only tagged on the Ruby page — other SDKs show no tag at all, worth confirming actual status | -| [Temporal Ops skill](/with-ai) | AI dev tooling | -| [Temporal Serverless skill](/with-ai) | AI dev tooling | -| [OpenAI Agents OpenTelemetry plugin](/develop/python/integrations/openai-agents) | Python | -| [Strands Agents integration](/develop/python/integrations/strands-agents) | Python | -| [LangSmith integration](/develop/python/integrations/langsmith) | Python and TypeScript | -| [LangGraph integration](/develop/python/integrations/langgraph) | Python | -| [AI SDK by Vercel integration](/develop/typescript/integrations/ai-sdk) | TypeScript | -| [Spring AI integration](/develop/java/integrations/spring-ai) | Java | diff --git a/readme/COMPONENTS.md b/readme/COMPONENTS.md index 4fb41058e4..436438bfdb 100644 --- a/readme/COMPONENTS.md +++ b/readme/COMPONENTS.md @@ -27,6 +27,8 @@ Whether you’re using core components or experimenting with new ones, this guid - [Using SdkGuideLinks](#using-sdkguidelinks) - [Using AnnotatedCode](#using-annotatedcode) - [Using ReleaseNoteHeader](#using-release-note-header) +- [Using FeatureStageLabel](#using-featurestagelabel) +- [Using FeatureStageTable](#using-featurestagetable) ## Finding Components @@ -521,9 +523,22 @@ Role: To provide a consistent component for adding, updating, and removing relea Usage: -In `/src/constants`, update the [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) file to include the release stage for the feature you want. +In `/src/constants`, update the [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) file to include the feature you want, its stage, and its display metadata (used by the `FeatureStageTable` on the [release stages page](../docs/evaluate/development-production-features/release-stages.mdx)). -Example: `serverlessWorkers: "prerelease"` +```js +serverlessWorkers: { + stage: "prerelease", + name: "Serverless Workers", + description: "Run a Temporal Worker as a serverless function invoked by Temporal Cloud.", + infoLink: "/serverless-workers", + // Optional — only add this when a feature's stage genuinely differs by SDK + // language. Keys must match ReleaseNoteHeader's SDK language vocabulary + // (".NET" | "Go" | "Java" | "PHP" | "Python" | "Ruby" | "Rust" | "TypeScript"). + languageOverrides: { + Java: "publicPreview", + }, +}, +``` Then on the pages you want it to show, add this to the top of the content, right below the frontmatter. The `featureName` prop is how you share the release stages you add to `featureReleaseTypes.js` across pages. @@ -569,4 +584,42 @@ Use the `href` prop to make the `children` content a link. > Sign up for updates to be notified when Serverless Workers reach Public Preview. -``` \ No newline at end of file +``` + +If a feature's `languageOverrides` includes the SDK this page is about, add the `language` prop so the badge resolves to that language's stage instead of the feature's default. +```js + +``` + +## Using FeatureStageLabel + +Role: The inline sibling of `ReleaseNoteHeader`, for mentioning a feature's stage mid-sentence in prose instead of as a page-level banner. Sourced from the same [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) registry, so these mentions can't drift out of sync with the banner the way a hand-written `[Public Preview](/evaluate/development-production-features/release-stages#public-preview)` link can. + +Usage: + +```js +import { FeatureStageLabel } from '@site/src/components'; + +The Rust SDK is in , and its API can change between releases. +``` + +Accepts the same `featureName`, `language`, and `type` props as `ReleaseNoteHeader`, resolved the same way. Renders a plain prose link — no pill/badge styling — since it's meant to sit inline in a sentence. + +## Using FeatureStageTable + +Role: Renders every feature currently in `featureReleaseTypes.js`, grouped by stage, as a Markdown-style table. Used on the [release stages page](../docs/evaluate/development-production-features/release-stages.mdx) to give a single, always-current view of what's non-GA — no separate list to hand-maintain. + +Usage: + +```js +import { FeatureStageTable } from '@site/src/components'; + + +``` + +Takes no props — it reads `featureReleaseTypes.js` directly, so a feature appears here automatically once it has a registry entry with `name`, `description`, and `infoLink`. Each stage section (Pre-release, Public Preview) is its own table with two columns, Feature and Details — there's no separate Stage column, since the section heading already says it. The Details cell is the feature's `description`; a feature with a `languageOverrides` entry gets a bolded note appended (e.g. "…without a Workflow orchestrating it. **Note:** Java support is in Pre-release.") instead of a separate row per language. + +Write `description` as its own brief, feature-specific summary — what the feature actually does, in one sentence — rather than reusing the target page's meta `description` verbatim. A page's meta description is written for the whole page and SEO, so it's often too broad (e.g. a general SDK setup page) or too generic ("Learn how...") for a table row about one specific feature. \ No newline at end of file diff --git a/readme/COMPONENT_REGISTRY.md b/readme/COMPONENT_REGISTRY.md index 57c55de5ba..ca3d0c0b43 100644 --- a/readme/COMPONENT_REGISTRY.md +++ b/readme/COMPONENT_REGISTRY.md @@ -2,13 +2,13 @@ Generated by `scripts/audit-components.mjs`. Run to update. -**Coverage: 43/51 (84%)** +**Coverage: 44/52 (85%)** | Component | File Count | Strategy | Covered | |-----------|------------|----------|---------| +| `ReleaseNoteHeader` | 84 | `release-note-header` | ✅ | | `TabItem` | 84 | `tabitem` | ✅ | | `Tabs` | 83 | `tabs` | ✅ | -| `ReleaseNoteHeader` | 76 | `release-note-header` | ✅ | | `NoZoom` | 60 | `UNKNOWN` | ❌ | | `RelatedReadContainer` | 23 | `related-read-container` | ✅ | | `RelatedReadItem` | 20 | `related-read-item` | ✅ | @@ -44,6 +44,7 @@ Generated by `scripts/audit-components.mjs`. Run to update. | `CallerWorkflow` | 1 | `UNKNOWN` | ❌ | | `SdkOverviewCards` | 1 | `sdk-overview-cards` | ✅ | | `TemporalLifecycleDemo` | 1 | `UNKNOWN` | ❌ | +| `FeatureStageTable` | 1 | `feature-stage-table` | ✅ | | `CloudRegionCount` | 1 | `strip-block` | ✅ | | `GuidesGrid` | 1 | `UNKNOWN` | ❌ | | `HeroWrapper` | 1 | `strip-tag` | ✅ | diff --git a/readme/MARKDOWN_PIPELINE.md b/readme/MARKDOWN_PIPELINE.md index a78c9925fc..01eee1b839 100644 --- a/readme/MARKDOWN_PIPELINE.md +++ b/readme/MARKDOWN_PIPELINE.md @@ -130,6 +130,8 @@ Each component maps to a strategy in `COMPONENT_REGISTRY` (in `scripts/mdx-to-md | YouTube/`