Redesign landing page with a simple static page - #1
Draft
yasmewad wants to merge 84 commits into
Draft
Conversation
…mithy-lang#3096) * Fix trait-codegen failure when string literals contain dollar signs Add defer() and writeLazy() to AbstractCodeWriter, enabling lazy resolution of format expressions at toString() time without re-parsing the entire output. Update TraitCodegenWriter to use defer() for type name placeholders instead of a second format() pass that would misinterpret literal $ characters in generated code. * Add changelog entry
Add the aws.apigateway#minimumCompressionSize integer trait with @range(min: 0, max: 10485760) validation. The OpenAPI mapper converts it to the x-amazon-apigateway-minimum-compression-size extension for REST APIs.
- Repoint retired /apigateway/api-reference/resource/<name>/ URLs to
their current /apigateway/latest/api/API_<Name>.html replacements:
- Integration.passthroughBehavior
- VpcLink
- API Gateway integration
- IntegrationResponse
- Correct the x-amazon-apigateway-request-validator label to point at
the singular top-level extension page rather than the nested object
schema page.
…y-lang#3080)" This reverts commit 3441963.
…utput buffer (smithy-lang#3100) * Optimize deferred render to do a single input scan and use a single output buffer * Use parallel linear storage of placeholders and suppliers * Run spotlessApply to fix formatting
* Add three sub-fields to integration trait The `@aws.apigateway#integration` trait was missing three public REST API fields that customers configure via OpenAPI extensions: `tlsConfig` for certificate validation, `responseTransferMode` for response streaming, and `integrationTarget` for VPC Links V2 private integrations. Add all three as optional members on the integration structure with a new `TlsConfig` nested structure for the TLS configuration. The OpenAPI mapper picks up the new fields automatically via `NodeMapper` serialization. Add `integrationTarget` to the `CloudFormationSubstitution` paths for `Fn::Sub` wrapping since it contains ARN values. * revert two buildinfo files
* Add apiKeyRequired trait and OpenAPI mapper API Gateway supports requiring an API key on individual operations for usage plan enforcement. This is separate from the @httpApiKeyAuth authentication scheme. Add the `aws.apigateway#apiKeyRequired` annotation trait, scoped to operations. The OpenAPI mapper adds an `api_key` security scheme to components and a per-operation security requirement on annotated operations. * Fix RST header length and changelog formatting Fix overlong RST header underline for apiKeyRequired trait. Lowercase 'is converted' in OpenAPI guide. Update changelog to past tense with backticks. Apply code formatting. * Update smithy-aws-apigateway-openapi/src/main/java/software/amazon/smithy/aws/apigateway/openapi/AddApiKeyRequired.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-openapi/src/main/java/software/amazon/smithy/aws/apigateway/openapi/AddApiKeyRequired.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> --------- Co-authored-by: Manuel Sugawara <sugmanue@amazon.com>
* Add resourcePolicy trait and OpenAPI mapper API Gateway REST APIs support resource policies that control which principals can invoke the API. Until now, customers had to use `jsonAdd` workarounds in smithy-build.json to attach a resource policy to the generated OpenAPI document. Add the `aws.apigateway#resourcePolicy` document trait, scoped to service shapes, along with an OpenAPI mapper that converts the trait value to the top-level `x-amazon-apigateway-policy` extension. Smithy passes the policy document through without validation since IAM validates the policy at API Gateway import time. * Update docs/source-2.0/aws/amazon-apigateway.rst * Update docs/source-2.0/guides/model-translations/converting-to-openapi.rst * Apply suggestion from @kstich --------- Co-authored-by: Kevin Stich <kevin@kstich.com>
* Add endpointConfiguration trait API Gateway REST APIs have an endpoint configuration that specifies the endpoint type (EDGE, REGIONAL, or PRIVATE), optional VPC endpoint IDs, and whether the default execute-api endpoint is disabled. Add the `aws.apigateway#endpointConfiguration` structure trait with a required `types` enum list, optional `vpcEndpointIds` list, and optional `disableExecuteApiEndpoint` boolean. No OpenAPI mapper is included; `vpcEndpointIds` and `disableExecuteApiEndpoint` exist in the `x-amazon-apigateway-endpoint-configuration` extension but a mapper can be added separately if needed. * Update docs/source-2.0/aws/amazon-apigateway.rst * Expand VPC acronym and link endpoint IDs docs Expand 'VPC' to 'Virtual Private Cloud (VPC)' and link 'endpoint IDs' to the VPC PrivateLink documentation in the trait summary. Update changelog to past tense with backticks. --------- Co-authored-by: Kevin Stich <kevin@kstich.com>
* Add gatewayResponses trait and OpenAPI mapper API Gateway REST APIs support custom gateway responses that customize error responses for authentication failures, integration errors, and other API Gateway-generated errors. Add the `aws.apigateway#gatewayResponses` map trait that maps response type keys to gateway response structures containing statusCode, responseParameters, and responseTemplates. The OpenAPI mapper writes the trait value to the `x-amazon-apigateway-gateway-responses` extension. The mapper runs before the CORS gateway responses mapper so that customer-defined response parameters take precedence over CORS-generated headers. * Refactor GatewayResponsesTrait to use builder pattern Add GatewayResponse value class with builder following the same pattern as AuthorizersTrait and DefineConditionKeysTrait. Add DANGER validator for gatewayResponses and CORS conflicts. Fix RST header formatting in documentation. * Update smithy-aws-apigateway-openapi/src/main/java/software/amazon/smithy/aws/apigateway/openapi/AddGatewayResponses.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> * Replace streams with loops and add bulk builder methods Replace stream-based serialization with plain loops in GatewayResponse.toNode() and GatewayResponsesTrait.createNode(). Add responses(), responseParameters(), and responseTemplates() bulk setter methods to the builders. * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponse.java * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponse.java * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java * Update smithy-aws-apigateway-openapi/src/main/java/software/amazon/smithy/aws/apigateway/openapi/AddGatewayResponses.java * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java * Update smithy-aws-apigateway-traits/src/main/java/software/amazon/smithy/aws/apigateway/traits/GatewayResponsesTrait.java --------- Co-authored-by: Manuel Sugawara <sugmanue@amazon.com>
* Add apiTlsPolicy trait and OpenAPI mapper API Gateway REST APIs have a TLS security policy and an optional endpoint access mode that control the TLS version, cipher suite, and how the API endpoint can be accessed. These were previously only configurable via OpenAPI extensions. Add the `aws.apigateway#apiTlsPolicy` structure trait with a required `securityPolicy` field and an optional `endpointAccessMode` field. The OpenAPI mapper writes `securityPolicy` to `x-amazon-apigateway-security-policy` and `endpointAccessMode` to `x-amazon-apigateway-endpoint-access-mode` as separate top-level extensions, matching how API Gateway reads them at import time. * Update docs/source-2.0/aws/amazon-apigateway.rst * Update docs/source-2.0/guides/model-translations/converting-to-openapi.rst * Apply suggestion from @kstich * Remove vscode settings and add .vscode/ to .gitignore * Remove accidentally committed local files * Fix docs to include all merged content plus TLS sections --------- Co-authored-by: Kevin Stich <kevin@kstich.com>
API Gateway supports OAuth scopes on operations that use Cognito authorizers. In OpenAPI, scopes appear in the security requirement array for each operation. The existing @Authorizer trait is a string and cannot be extended to include scopes without a breaking change. Add the `aws.apigateway#authorizationScopes` list trait, scoped to operations that have the @Authorizer trait applied. The existing `AddAuthorizers` mapper now includes the scope list in the security requirement when the trait is present. The mapper writes per-operation security when scopes are present, even if the operation inherits its authorizer from the service.
…lang#3106) * Add a new query test for empty output with response metadata * Add changelog entry
…orrowed` (smithy-lang#3107) * Add copy-on-write optimization for `toBuilder()` via `BuilderRef.setBorrowed` * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Bumps the npm group in /docs/landing-page with 7 updates: | Package | From | To | | --- | --- | --- | | [i18next](https://github.com/i18next/i18next) | `26.0.8` | `26.0.9` | | [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.5` | `19.2.6` | | [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.5` | `19.2.6` | | [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.3.0` | | [globals](https://github.com/sindresorhus/globals) | `17.5.0` | `17.6.0` | | [postcss](https://github.com/postcss/postcss) | `8.5.12` | `8.5.14` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.1` | `8.59.2` | Updates `i18next` from 26.0.8 to 26.0.9 - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](i18next/i18next@v26.0.8...v26.0.9) Updates `react` from 19.2.5 to 19.2.6 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react) Updates `react-dom` from 19.2.5 to 19.2.6 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react-dom) Updates `eslint` from 10.2.1 to 10.3.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v10.2.1...v10.3.0) Updates `globals` from 17.5.0 to 17.6.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](sindresorhus/globals@v17.5.0...v17.6.0) Updates `postcss` from 8.5.12 to 8.5.14 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](postcss/postcss@8.5.12...8.5.14) Updates `typescript-eslint` from 8.59.1 to 8.59.2 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.2/packages/typescript-eslint) --- updated-dependencies: - dependency-name: i18next dependency-version: 26.0.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: react dependency-version: 19.2.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: react-dom dependency-version: 19.2.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: eslint dependency-version: 10.3.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm - dependency-name: globals dependency-version: 17.6.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm - dependency-name: postcss dependency-version: 8.5.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: typescript-eslint dependency-version: 8.59.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] <support@github.com>
…-lang#3108) * Revert "Revert "Apply jsonName to examples trait in OpenAPI" (smithy-lang#2687)" This reverts commit 195157f. * Add changelog
* Fixed trait codegen to generate more specific return type for trait provider * Added changelog entry
The renameShapes projection transform silently downgrades typed traits to DynamicTrait. After running renameShapes, operation.getTrait(SomeTrait.class) returns empty even though the trait is still on the shape — because what's stored is now an untyped DynamicTrait. Two issues compound: 1. smithy-build/transforms/RenameShapes calls ModelTransformer.create() (the global singleton) instead of using context.getTransformer(). Every other transform in smithy-build/transforms/ already uses the context's transformer; RenameShapes is the lone holdout. The singleton is built once with smithy-model's classloader and can't see trait providers in sibling jars. 2. smithy-model/transform/ModelTransformer — even when callers construct a transformer via createWithServiceProviders(cl), the classloader is used to discover plugins and then thrown away. The 2-arg renameShapes(model, renamed) overload calls Model.assembler() with no classloader, so trait reassembly uses smithy-model's classloader and SPI providers from sibling jars (e.g. rules-engine traits) are never found. Anything not in smithy-model itself falls through to DynamicTrait. Adds a regression test in each module: an empty URLClassLoader (no SPI providers) is passed to the transformer/context, and we assert that a typed DeprecatedTrait becomes a DynamicTrait after renameShapes — which only happens if the empty classloader is honored end-to-end.
Scoping models when converting to JSON Schema no longer routes through filterShapes, instead constructing a model piecemeal via Model.Builder. This, combined with using the iterator directly, produces a 40-80% improvement in the speed of converting to JSON Schema. The two paths that performed this work are now consolidated and a JMH benchmark is added.
API Gateway supports OAuth scopes on operations that use Cognito User Pools authorizers. The aws.apigateway#authorizationScopes trait added in smithy-lang#3084 targeted only the operations annotated with @Authorizer. That trait pairs scopes with the generic API Gateway authorizer trait, but scopes only apply when the authorizer is Cognito so the trait belongs alongside @cognitoUserPools in the aws.auth namespace. Add the `aws.auth#cognitoUserPoolsScopes` list trait, selectable only on operations bound to a service with the @cognitoUserPools trait applied. The new `AddCognitoUserPoolsScopes` OpenAPI mapper writes a per-operation security requirement using the Cognito scheme name when the trait is present.
API Gateway REST APIs support an ipAddressType property on the endpoint configuration that controls whether an API accepts IPv4, IPv6, or both. The @endpointConfiguration trait did not model this property, and the trait had no OpenAPI mapper, so VPC endpoint IDs and the default-endpoint disable flag had to be set via jsonAdd workarounds. Add an ipAddressType string member to the trait with supported values `ipv4` and `dualstack`. Add the AddEndpointConfiguration OpenAPI mapper that writes vpcEndpointIds and disableExecuteApiEndpoint to the x-amazon-apigateway-endpoint-configuration extension. The types and ipAddressType members are omitted because they are configured outside of the OpenAPI document at API import time. Add a CloudFormation substitution path for vpcEndpointIds.
setx reads from the session %PATH% (system + user combined) and silently truncates at 1024 characters, corrupting the user PATH on install. Use PowerShell's SetEnvironmentVariable to append only to the user PATH from the registry, with no length limit. Also fix the warmup call to use the full installed path instead of relying on the new PATH entry being active in the current session.
Group traits by task (authentication, method/response, integrations, endpoint and access control) and alphabetize within each group. Add Validation sub-sections for traits with validators, cross-references between aws.apigateway and aws.auth authorization traits, and a section listing public traits from other namespaces that influence API Gateway OpenAPI generation. Fix dead developer-guide links. In the OpenAPI guide, expand the Other traits table, demote Cognito and API key sections under Authorizers, and add a Recommendations section covering jsonAdd, substitutions, and CloudFormation Fn::Sub patterns.
The `HttpBindingsMissingValidator` had a top-level short-circuit that returned early when no shape in the model carried `@http`. Services with a protocol like `restJson1` that requires `@http` on all operations would pass validation silently when no operations had the trait yet.
The error deconflicting logic in `OpenApiConverter` read `config.getOnErrorStatusConflict()` before either `composedMapper.updateDefaultSettings` or `openApiProtocol.updateDefaultSettings` was called. This made it impossible for protocols or mappers to set the strategy. Move the deconflict block to after both `updateDefaultSettings` calls, and set the model and config on the JSON schema converter builder afterward so they reflect the final state.
This reverts commit 404b9d6.
This adds a shapeClosures metadata key that allows users to define closures of shapes that are not necessarily rooted in a service shape. This is primarily motivated by the desire to code-generate types without service or client framing, but is left open enough to be used for other purposes.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This adds a method to get the root shapes in a closure. That is, shapes directly matched by the selector or directly part of an included namespace. This also removes the prelude filter. People can do that themselves.
This fixes a bug in smithy-syntax where comments (including doc comments) after an unused import would be removed along with the unused import. This is because those comments live in the BR tree at the end of the import tree, and that entire tree was being removed. This updates the removal logic to preserve those comments by moving them up into the nearest surviving statement.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add message property to waiter acceptors Add an optional `message` field to waiter acceptors that allows extracting a human-readable message from the operation output via a JMESPath expression. This enables waiter consumers (e.g., SDKs, CLIs, CloudFormation) to surface actionable failure reasons to users. The expression must resolve to a string or array of strings and is only valid on acceptors with a failure state. Validations: - ERROR if message is set on a non-failure acceptor - ERROR if the JMESPath expression has invalid syntax - DANGER if the expression resolves to a type other than string or array of strings * Update .changes/next-release/feature-1120732e68f3ba35880b7a61adb4cb988ad08422.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Simplify message to string-only, use ERROR severity for all invalid cases * Strict type check: reject ANY, require provably STRING * Support list<string> in message JMESPath with element type validation --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This adds a custom smithyFormat task that formats all Smithy model sources in the repo. This has to be done as a custom task for most packages because they are upstream dependencies of smithy-cli. Using the gradle plugin's formatting capability for these packages would create a gradle task cycle. Packages that are downstream of smithy-cli (such as the AWS protocol tests package) can safely use the smithyFormat task provided by the gradle plugin without creating a task cycle. An alternative to fixing this cycle would be to just use the published smithy-cli, but that's unsuitable since we really do want to be using the local copy with updated changes. This also adds a top-level smithyFormat task that runs the formatter in every subproject that has it (either via the custom task or via the gradle plugin). Fixes smithy-lang#2231
This runs the Smithy formatter on all IDL sources.
…thy-lang#3157) * Add test cases for AWS JSON protocols using different namespaces * Update .changes/next-release/feature-115f276aaf230e5e0b9502b6d0bcc9594962b529.json Co-authored-by: Manuel Sugawara <sugmanue@amazon.com> --------- Co-authored-by: Manuel Sugawara <sugmanue@amazon.com>
Bumps the gradle group with 2 updates: [software.amazon.api.models:s3](https://github.com/aws/api-models-aws) and [com.gradleup.shadow](https://github.com/GradleUp/shadow). Updates `software.amazon.api.models:s3` from 1.0.18 to 1.0.19 - [Commits](https://github.com/aws/api-models-aws/commits) Updates `com.gradleup.shadow` from 9.4.1 to 9.4.2 - [Release notes](https://github.com/GradleUp/shadow/releases) - [Commits](GradleUp/shadow@9.4.1...9.4.2) --- updated-dependencies: - dependency-name: software.amazon.api.models:s3 dependency-version: 1.0.19 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle - dependency-name: com.gradleup.shadow dependency-version: 9.4.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Gradle was pinned to 9.1.0 since spotless started failing with more recent versions of it. This change upgrades to 9.5.1, and to avoid spotless failures does: 1) disables Kotlin linting, 2) sets the eclipse version to 4.40 in the plugin.
…ng#3161) Bumps org.mock-server:mockserver-netty from 5.15.0 to 7.0.0. --- updated-dependencies: - dependency-name: org.mock-server:mockserver-netty dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…mithy-lang#3103) Bumps [i18next-http-backend](https://github.com/i18next/i18next-http-backend) from 3.0.6 to 4.0.0. - [Changelog](https://github.com/i18next/i18next-http-backend/blob/master/CHANGELOG.md) - [Commits](i18next/i18next-http-backend@v3.0.6...v4.0.0) --- updated-dependencies: - dependency-name: i18next-http-backend dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add tlsConfig, responseTransferMode, and integrationTarget to the @integration trait table and the converting-to-openapi guide. Add the "Minimum compression size" section with a Smithy-to-OpenAPI conversion example, and add integrationTarget to the CloudFormation substitution paths list.
* Skip clientOptional members in AddedRequiredMember The AddedRequiredMember evaluator flagged any net-new member carrying @required without @default as backwards-incompatible, even when the member was also marked @clientOptional. That contradicts the model evolution design: @clientOptional is the sanctioned escape hatch for adding a @required member, since clients treat the member as optional and the service owns validation. The sibling ChangedNullability evaluator already exempts @clientOptional members; AddedRequiredMember now does the same so the two agree on what counts as a safe nullability change. * Update .changes/next-release/bugfix-f5f810abf0f6986480e08df52c82c8201eb20f42.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Bumps the npm group with 23 updates in the /docs/landing-page directory: | Package | From | To | | --- | --- | --- | | [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.15` | `1.1.16` | | [@radix-ui/react-navigation-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/navigation-menu) | `1.2.14` | `1.2.15` | | [i18next](https://github.com/i18next/i18next) | `26.3.0` | `26.3.1` | | [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `1.16.0` | `1.18.0` | | [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.6` | `19.2.7` | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.15` | `19.2.17` | | [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.6` | `19.2.7` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `10.4.1` | `10.4.5` | | [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `10.4.1` | `10.4.5` | | [@storybook/addon-onboarding](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/onboarding) | `10.4.1` | `10.4.5` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `10.4.1` | `10.4.5` | | [@storybook/react-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite) | `10.4.1` | `10.4.5` | | [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.3.0` | `4.3.1` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.9.1` | `25.9.3` | | [eslint](https://github.com/eslint/eslint) | `10.4.0` | `10.5.0` | | [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | `0.5.2` | `0.5.3` | | [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) | `10.4.1` | `10.4.5` | | [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.5` | `17.0.7` | | [prettier](https://github.com/prettier/prettier) | `3.8.3` | `3.8.4` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `10.4.1` | `10.4.5` | | [tsx](https://github.com/privatenumber/tsx) | `4.22.3` | `4.22.4` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.60.0` | `8.61.0` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.14` | `8.0.16` | Updates `@radix-ui/react-dialog` from 1.1.15 to 1.1.16 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dialog) Updates `@radix-ui/react-navigation-menu` from 1.2.14 to 1.2.15 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/navigation-menu/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/navigation-menu) Updates `@radix-ui/react-slot` from 1.2.4 to 1.2.5 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slot/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slot) Updates `i18next` from 26.3.0 to 26.3.1 - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](i18next/i18next@v26.3.0...v26.3.1) Updates `lucide-react` from 1.16.0 to 1.18.0 - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.18.0/packages/lucide-react) Updates `react` from 19.2.6 to 19.2.7 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react) Updates `@types/react` from 19.2.15 to 19.2.17 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `react-dom` from 19.2.6 to 19.2.7 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react-dom) Updates `@storybook/addon-docs` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/addons/docs) Updates `@storybook/addon-links` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/addons/links) Updates `@storybook/addon-onboarding` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/addons/onboarding) Updates `@storybook/addon-themes` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/addons/themes) Updates `@storybook/react-vite` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/frameworks/react-vite) Updates `@tailwindcss/postcss` from 4.3.0 to 4.3.1 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.1/packages/@tailwindcss-postcss) Updates `@types/node` from 25.9.1 to 25.9.3 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@types/react` from 19.2.15 to 19.2.17 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `eslint` from 10.4.0 to 10.5.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v10.4.0...v10.5.0) Updates `eslint-plugin-react-refresh` from 0.5.2 to 0.5.3 - [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases) - [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md) - [Commits](ArnaudBarre/eslint-plugin-react-refresh@v0.5.2...v0.5.3) Updates `eslint-plugin-storybook` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/lib/eslint-plugin) Updates `lint-staged` from 17.0.5 to 17.0.7 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](lint-staged/lint-staged@v17.0.5...v17.0.7) Updates `prettier` from 3.8.3 to 3.8.4 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.8.3...3.8.4) Updates `storybook` from 10.4.1 to 10.4.5 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.4.5/code/core) Updates `tailwindcss` from 4.3.0 to 4.3.1 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.1/packages/tailwindcss) Updates `tsx` from 4.22.3 to 4.22.4 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](privatenumber/tsx@v4.22.3...v4.22.4) Updates `typescript-eslint` from 8.60.0 to 8.61.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.61.0/packages/typescript-eslint) Updates `vite` from 8.0.14 to 8.0.16 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v8.0.16/packages/vite) --- updated-dependencies: - dependency-name: "@radix-ui/react-dialog" dependency-version: 1.1.16 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@radix-ui/react-navigation-menu" dependency-version: 1.2.15 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@radix-ui/react-slot" dependency-version: 1.2.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: i18next dependency-version: 26.3.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: lucide-react dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm - dependency-name: react dependency-version: 19.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@types/react" dependency-version: 19.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: react-dom dependency-version: 19.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@storybook/addon-docs" dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@storybook/addon-links" dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@storybook/addon-onboarding" dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@storybook/addon-themes" dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@storybook/react-vite" dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@tailwindcss/postcss" dependency-version: 4.3.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@types/node" dependency-version: 25.9.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: "@types/react" dependency-version: 19.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: eslint dependency-version: 10.5.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm - dependency-name: eslint-plugin-react-refresh dependency-version: 0.5.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: eslint-plugin-storybook dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: lint-staged dependency-version: 17.0.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: prettier dependency-version: 3.8.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: storybook dependency-version: 10.4.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: tailwindcss dependency-version: 4.3.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: tsx dependency-version: 4.22.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm - dependency-name: typescript-eslint dependency-version: 8.61.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm - dependency-name: vite dependency-version: 8.0.16 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Removes the old vendored JSON parsing code that required creating the entire model as a Node before loading. Now we stream from JSON and only create Nodes for traits and metadata and things that need Nodes. Loading a model from a Node or unparsed string still work correctly.
yasmewad
force-pushed
the
landing-page-ember-redesign
branch
from
June 18, 2026 15:53
5391a0b to
83751ac
Compare
The smithy.io landing page was a React/Vite/Storybook app under docs/landing-page/ that pulled in a Node toolchain and roughly 50 npm dependencies solely to server-render a single static index.html. The build step and dependency tree were disproportionate to the output and were a recurring maintenance and supply-chain burden. Replace it with docs/landing/index.html: one self-contained page with inline style and script, no framework and no build step. The only external resource is the Google Fonts stylesheet. The Makefile's merge-versions target copies the page and its assets into the site root, so the page ships by file copy rather than a Node build, and the Setup Node steps and npm dependabot entry are no longer needed. The page documents its own architecture and invariants in CLAUDE.md so future contributors can extend it without reintroducing tooling.
The page declared Open Graph and Twitter card metadata but had no image, so link previews rendered without a thumbnail. Add a 1200x630 share image (assets/og-cover.png) rendered from og-cover-source.html, referenced by absolute URL as og:image and twitter:image. The image is a raster PNG because most unfurlers do not render SVG. Add BRAND.md as the canonical design-system artifact: the color tokens for both modes, typography, layout and motion tokens, the accessibility bar, and guidance for propagating the theme to the rest of the docs site, so future visual updates have a single reference to follow.
yasmewad
force-pushed
the
landing-page-ember-redesign
branch
from
June 18, 2026 22:15
0b22a31 to
07b9ac9
Compare
Remove the "One model. Every language." eyebrow from the share card so it matches the landing page, which dropped that line, and regenerate assets/og-cover.png. Drop the docs/landing/.gitignore that listed local-only scratch directories; those are excluded locally instead so the published tree carries no reference to them.
Java has a Smithy server generator (smithy-java), so include it in the Servers showcase alongside TypeScript; bump the count to 5.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Redesigns the smithy.io landing page as a single self-contained static page (
docs/landing/index.html+assets/). The previous landing page was a React/Vite/Storybook app (docs/landing-page/) that required a Node toolchain and ~50 npm dependencies just to server-render one staticindex.html. The new page needs no framework, no build step, and no runtime dependency — the only external resource is the Google Fonts stylesheet.Hero
Sections
Full-page scroll (recordings)
Social share card (og:image)
What changed
docs/landing/— the new page (index.html),assets/,og-cover-source.html(the OG-image source card),README.md,CLAUDE.md, andBRAND.md.docs/Makefile—merge-versionsnow copieslanding/index.html+landing/assets/into the site root (dropped thebuild-landing-pagenpm step). README/CLAUDE.md/BRAND.md/og-cover-source.htmlare not shipped.ci.yml,make-docs.yml) and the npm dependabot entry.docs/landing-page/— the old React app (144 files).Design & content
smithy build→ Client SDKs · Servers · Documentation · OpenAPI.smithy build, not an external linter.@retryableto an error (genuinely additive).Weatherexample matchessource-2.0/; protocol details follow the Coral protocols reference.Quality gates
:focus-visiblerings, single<h1>+ ordered headings, real<button>theme toggle witharia-pressed, mobile hamburger witharia-expanded/Esc/focus,prefers-reduced-motion, ≥44px tap targets, 200% zoom. Responsive 320–2560px with no horizontal overflow.eval/innerHTML; alltarget="_blank"carryrel="noopener";localStoragelimited to a validatedsmithy-modekey. Removing the React app is a meaningful supply-chain reduction./2.0/…,/implementations.html) and external links verified live.Test plan