Skip to content

Add Posta hosting integration - #1461

Merged
aaronpowell merged 40 commits into
CommunityToolkit:mainfrom
axies20:Posta
Aug 7, 2026
Merged

aaronpowell merged 40 commits into
CommunityToolkit:mainfrom
axies20:Posta

Conversation

@axies20

@axies20 axies20 commented Jul 8, 2026 •

Copy link
Copy Markdown
Contributor

Adds new Posta integrations for Posta, a self-hosted email delivery platform:

  • CommunityToolkit.Aspire.Hosting.Posta models and orchestrates the Posta container.
  • CommunityToolkit.Aspire.Posta provides a discoverable typed HTTP client.

This PR adds:

  • PostaResource with connection properties for the Posta HTTP API/dashboard
  • AddPosta(...) for adding the Posta container resource
  • WithReference(...) support for connecting Posta to PostgreSQL and Redis resources
  • PostaOptions for web URLs, rate limits, OAuth, blob storage, SMTP, inbound email, email verification, metrics, and advanced switches
  • Aspire parameter support for secrets such as JWT secret, admin password, SMTP password, OAuth client secret, S3 keys, encryption key, inbound webhook secret, PostgreSQL URL, and Redis password
  • HTTP health checks for /healthz and /readyz
  • a typed Posta HTTP client with keyed and unkeyed DI registration
  • an example AppHost under examples/posta
  • README documentation, unit tests, and an AppHost smoke test

The container image is pinned to jkaninda/posta:0.13.1.

PR Checklist

  • Created a feature/dev branch in the fork
  • Based on the latest toolkit main
  • New integration documentation is included
  • NuGet package descriptions are included
  • Tests cover the changes
  • Contains no intentional breaking changes
  • Code follows repository style conventions

Validation

dotnet test tests/CommunityToolkit.Aspire.Posta.Tests/CommunityToolkit.Aspire.Posta.Tests.csproj
dotnet test tests/CommunityToolkit.Aspire.Hosting.Posta.Tests/CommunityToolkit.Aspire.Hosting.Posta.Tests.csproj --no-restore

Results:

  • Client integration: 10 passed, 0 failed
  • Hosting integration: 22 passed, 0 failed

axies20 added 2 commits July 8, 2026 14:01
- Introduced `CommunityToolkit.Aspire.Hosting.Posta` project for integrating Posta with PostgreSQL and Redis.
- Added extension methods for configuring Posta containers, health checks, and resource dependencies.
- Created test projects for validating Posta container configuration and health checks.
- Added example projects under `examples/posta` showcasing Posta integration with PostgreSQL and Redis.
- Updated solution file and package references to include the new Posta project.
- Introduced `CommunityToolkit.Aspire.Hosting.Posta` project for integrating Posta as a containerized resource.
- Added extension methods for configuring Posta containers, including support for PostgreSQL, Redis, and advanced environment options.
- Defined Posta resource options, container image tags, and health check configurations.
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1461

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1461"

axies20 added 27 commits July 8, 2026 14:06
…ources to `AddPosta`. Refine README to reflect updated API and usage.
…nces

- Introduced tests to validate `AddPosta` behavior with null database and Redis inputs, ensuring proper exception handling.
- Added test to confirm PostgreSQL and Redis configuration via environment variables.
…dPosta` methods. Extend methods to support chained references.
… Remove redundant overloads in `PostaHostingExtensions`.
…d `RedisAddress`; refine README to clarify environment configuration usage.
…ble assignments with `Set` and `SetIfNotNull` methods for improved readability and consistency.
…tion values, ensuring flexibility and enhanced security.
… and improve environment variable assertions.
…ve method null-checks and chaining logic.
…up by replacing `SetIfNotNull` with `SetParameter`, adding default values, and introducing `SetIfAbsent` to prevent overwrites.
… resource builders for improved flexibility and configurability.
- Introduced `PostaEmailVerificationOptions`, `PostaGoogleOAuthOptions`, `PostaInboundSmtpOptions`, `PostaS3BlobStorageOptions`, and `PostaSystemSmtpOptions` for parameterized configuration.
- Added `PostaEnvironmentVariables` to define constants for environment variable keys.
- Created `launchSettings.json` example for local hosting configuration.
…tion, enhance environment variable assertions, and streamline option setup.
…, improve secret handling, and streamline examples.
…constants, improve environment variable handling, and modularize configuration setup.
…types, add defaults, and improve XML summaries for configuration properties.
- Introduced core model definitions for Posta API, including support for templates, emails, and applications.
- Added project structure, including example, source, and test projects.
- Configured dependency requirements, project references, and test configurations.
axies20 added 2 commits July 23, 2026 00:29
…ents

- Introduced `WithDataVolume` and `WithDataBindMount` extension methods to configure filesystem-backed attachment storage.
- Updated `README.md` with examples and details for volume/bind mount usage.
- Added unit tests to validate volume and bind mount behavior.
@github-actions github-actions Bot added the Stale label Aug 3, 2026
@aaronpowell aaronpowell removed the Stale label Aug 4, 2026
aaronpowell and others added 8 commits August 4, 2026 17:09
- Introduced `WithSmtpRelay` methods for parameterized SMTP relay setup.
- Added `SmtpRelayEnabled`, `SmtpRelayHost`, `SmtpRelayPort`, and related options to `PostaOptions`.
- Updated environment variables and resource builders to support SMTP relay.
- Enhanced `README.md` with examples for using the new SMTP relay functionality.
- Added unit tests to validate SMTP relay configuration and endpoint exposure.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Posta integration to the Aspire Community Toolkit, spanning both an AppHost hosting resource (CommunityToolkit.Aspire.Hosting.Posta) and a discoverable HTTP client integration (CommunityToolkit.Aspire.Posta) with examples and tests.

Changes:

  • Introduces a Posta container-backed hosting resource with PostgreSQL/Redis reference wiring, environment/options configuration, and health checks.
  • Adds a Posta HTTP API client with endpoint catalog, typed request/response models, and transport layer.
  • Adds a runnable example AppHost and accompanying unit + Docker smoke tests, and updates the repo integration list.
Show a summary per file
File Description
README.md Adds Posta integration entry + link refs.
CommunityToolkit.Aspire.slnx Adds Posta projects to the solution.
src/CommunityToolkit.Aspire.Hosting.Posta/CommunityToolkit.Aspire.Hosting.Posta.csproj Hosting integration package project.
src/CommunityToolkit.Aspire.Hosting.Posta/README.md Hosting integration documentation.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaContainerImageTags.cs Defines pinned Posta container image/tag.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaEmailVerificationOptions.cs Parameter-based email verification options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaEnvironmentVariables.cs Posta env-var constants.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaGoogleOAuthOptions.cs Parameter-based Google OAuth options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaHostingExtensions.cs AddPosta / WithReference / config extension methods.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaInboundSmtpOptions.cs Parameter-based inbound SMTP options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaOptions.cs Typed Posta container configuration options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaResource.cs Posta resource model + connection properties.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaS3BlobStorageOptions.cs Parameter-based S3 blob storage options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaSmtpRelayOptions.cs Parameter-based SMTP relay options.
src/CommunityToolkit.Aspire.Hosting.Posta/PostaSystemSmtpOptions.cs Parameter-based system SMTP options.
src/CommunityToolkit.Aspire.Posta/CommunityToolkit.Aspire.Posta.csproj Client integration package project.
src/CommunityToolkit.Aspire.Posta/README.md Client integration documentation.
src/CommunityToolkit.Aspire.Posta/Clients/IPostaClient.cs Client root interface.
src/CommunityToolkit.Aspire.Posta/Clients/IPostaSectionClient.cs Common section-client operations interface.
src/CommunityToolkit.Aspire.Posta/Clients/PostaClient.cs Default client implementation.
src/CommunityToolkit.Aspire.Posta/Clients/PostaClientBuilderExtensions.cs AddPostaClient DI registration extensions.
src/CommunityToolkit.Aspire.Posta/Clients/PostaClientSection.cs Section client implementation wrapper.
src/CommunityToolkit.Aspire.Posta/Clients/PostaOperations.cs Typed operations interfaces + implementations.
src/CommunityToolkit.Aspire.Posta/Clients/PostaSectionClient.cs Base class for section clients.
src/CommunityToolkit.Aspire.Posta/Configuration/IPostaCredentialProvider.cs Credential provider interface.
src/CommunityToolkit.Aspire.Posta/Configuration/PostaClientSettings.cs Client settings model.
src/CommunityToolkit.Aspire.Posta/Configuration/PostaCredentialProvider.cs Default credential provider.
src/CommunityToolkit.Aspire.Posta/Endpoints/IPostaEndpoints.cs Endpoint catalog interface.
src/CommunityToolkit.Aspire.Posta/Endpoints/PostaEndpoint.cs Endpoint + auth-mode types.
src/CommunityToolkit.Aspire.Posta/Endpoints/PostaEndpoints.cs Default endpoint catalog implementation.
src/CommunityToolkit.Aspire.Posta/Models/Emails/GetEmailDeliveryStatusRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/GetEmailDeliveryStatusResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/GetEmailDetailsRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/GetEmailDetailsResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/PreviewEmailFromTemplateRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/PreviewEmailFromTemplateResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/RetryFailedEmailRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/RetryFailedEmailResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendAnEmailRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendAnEmailResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendBatchEmailsRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendBatchEmailsResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendEmailUsingTemplateRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/SendEmailUsingTemplateResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/VerifyAnEmailAddressRequest.cs Email API request model.
src/CommunityToolkit.Aspire.Posta/Models/Emails/VerifyAnEmailAddressResponse.cs Email API response model.
src/CommunityToolkit.Aspire.Posta/Models/Health/LivenessProbeResponse.cs Health API response model.
src/CommunityToolkit.Aspire.Posta/Models/Health/ReadinessProbeResponse.cs Health API response model.
src/CommunityToolkit.Aspire.Posta/Models/Info/ApplicationInfoResponse.cs Info API response model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/ReSubscribeAnEmailToAListRequest.cs Subscriber list API request model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/ReSubscribeAnEmailToAListResponse.cs Subscriber list API response model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/SubscribeAnEmailToAListRequest.cs Subscriber list API request model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/SubscribeAnEmailToAListResponse.cs Subscriber list API response model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/UnsubscribeAnEmailFromAListRequest.cs Subscriber list API request model.
src/CommunityToolkit.Aspire.Posta/Models/SubscriberLists/UnsubscribeAnEmailFromAListResponse.cs Subscriber list API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/CreateTemplateRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/CreateTemplateResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/DeleteTemplateRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/DeleteTemplateResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/GetTemplateRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/GetTemplateResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/ListTemplatesRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/ListTemplatesResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/PreviewTemplateRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/PreviewTemplateResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/SendTestEmailRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/SendTestEmailResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/UpdateTemplateRequest.cs Template API request model.
src/CommunityToolkit.Aspire.Posta/Models/Templates/UpdateTemplateResponse.cs Template API response model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ApplicationInfoResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseDataActiveVersion.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseDataActiveVersionLocalizationsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseDataActiveVersionStylesheet.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseDataCreatedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/CreateTemplateResponseDataLastEditedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetEmailDeliveryStatusResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetEmailDetailsResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseDataActiveVersion.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseDataActiveVersionLocalizationsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseDataActiveVersionStylesheet.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseDataCreatedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/GetTemplateResponseDataLastEditedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItemActiveVersion.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItemActiveVersionLocalizationsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItemActiveVersionStylesheet.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItemCreatedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponseDataItemLastEditedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ListTemplatesResponsePageable.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/PreviewEmailFromTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/PreviewTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/ReSubscribeAnEmailToAListResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/RetryFailedEmailResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendAnEmailRequestAttachmentsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendAnEmailRequestUnsubscribe.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendAnEmailResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendBatchEmailsRequestRecipientsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendBatchEmailsRequestUnsubscribe.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendBatchEmailsResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendBatchEmailsResponseDataResultsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendEmailUsingTemplateRequestAttachmentsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendEmailUsingTemplateRequestUnsubscribe.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendEmailUsingTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SendTestEmailResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/SubscribeAnEmailToAListResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UnsubscribeAnEmailFromAListResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseDataActiveVersion.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseDataActiveVersionLocalizationsItem.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseDataActiveVersionStylesheet.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseDataCreatedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/UpdateTemplateResponseDataLastEditedBy.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/VerifyAnEmailAddressResponseData.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Models/Shared/VerifyAnEmailAddressResponseDataChecks.cs Shared schema model.
src/CommunityToolkit.Aspire.Posta/Transport/PostaApiException.cs Transport exception type.
src/CommunityToolkit.Aspire.Posta/Transport/PostaRequest.cs Transport request envelope.
src/CommunityToolkit.Aspire.Posta/Transport/PostaStreamResponse.cs Transport streaming response wrapper.
src/CommunityToolkit.Aspire.Posta/Transport/PostaTransport.cs Transport implementation (HTTP + auth + serialization).
examples/posta/CommunityToolkit.Aspire.Hosting.Posta.AppHost/CommunityToolkit.Aspire.Hosting.Posta.AppHost.csproj Example AppHost project.
examples/posta/CommunityToolkit.Aspire.Hosting.Posta.AppHost/Program.cs Example AppHost wiring Posta/Postgres/Redis.
examples/posta/CommunityToolkit.Aspire.Hosting.Posta.AppHost/Properties/launchSettings.json Example AppHost launch profiles.
examples/posta/CommunityToolkit.Aspire.Hosting.Posta.ApiService/CommunityToolkit.Aspire.Hosting.Posta.ApiService.csproj Example API service project.
examples/posta/CommunityToolkit.Aspire.Hosting.Posta.ApiService/Program.cs Example usage of the Posta client.
tests/CommunityToolkit.Aspire.Hosting.Posta.Tests/AppHostTests.cs Docker smoke test for Posta resource.
tests/CommunityToolkit.Aspire.Hosting.Posta.Tests/CommunityToolkit.Aspire.Hosting.Posta.Tests.csproj Hosting tests project.
tests/CommunityToolkit.Aspire.Hosting.Posta.Tests/ContainerResourceCreationTests.cs Hosting resource/unit tests for env/endpoints/refs.
tests/CommunityToolkit.Aspire.Posta.Tests/CommunityToolkit.Aspire.Posta.Tests.csproj Client tests project.
tests/CommunityToolkit.Aspire.Posta.Tests/PostaClientTests.cs Client unit tests for transport/endpoints behavior.

Review details

  • Files reviewed: 130/130 changed files
  • Comments generated: 5
  • Review effort level: Lite

Comment thread src/CommunityToolkit.Aspire.Posta/Transport/PostaTransport.cs
Comment thread examples/posta/CommunityToolkit.Aspire.Hosting.Posta.AppHost/Program.cs Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some small nits and a merge conflict

Comment thread src/CommunityToolkit.Aspire.Posta/Clients/PostaClient.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Clients/PostaClientBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Clients/PostaClientBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Clients/PostaClientSection.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Clients/PostaSectionClient.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Transport/PostaApiException.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Posta/Transport/PostaStreamResponse.cs Outdated
@aaronpowell
aaronpowell merged commit 9046477 into CommunityToolkit:main Aug 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants