Skip to content

F/mint text url preprocessing#1066

Merged
fernando-aviles merged 8 commits intomainfrom
f/mint-text-url-preprocessing
Mar 5, 2026
Merged

F/mint text url preprocessing#1066
fernando-aviles merged 8 commits intomainfrom
f/mint-text-url-preprocessing

Conversation

@fernando-aviles
Copy link
Contributor

@fernando-aviles fernando-aviles commented Mar 4, 2026

Greptile Summary

This PR introduces a wrapPlainUrls preprocessing step for the gtx-cli tool that converts bare URLs in text into Markdown link syntax ([url](url)) before uploading Mintlify MDX/MD files for translation. The transformation is applied only when framework === 'mintlify' and uses AST-based parsing (via remark/remark-mdx/remark-frontmatter) to target text nodes exclusively, correctly skipping URLs in code blocks, frontmatter, JSX attributes, existing markdown links, and HTML comments.

Key changes:

  • New utility packages/cli/src/utils/wrapPlainUrls.ts: AST-driven URL wrapper with fallback to original content on parse failure and reverse-order replacement to preserve character positions.
  • Integration in aggregateFiles.ts: URL wrapping is gated on fileType === 'md' || fileType === 'mdx' and settings.framework === 'mintlify', applied after applyMintlifyTitleFallback and before sanitizeFileContent.
  • Comprehensive test suite with 25 cases covering frontmatter, code blocks, JSX, idempotency, and mixed content.
  • Notable gap: The URL regex character class [^\s<>\[\]()]* excludes ( from the middle of URL paths, causing URLs with parentheses (e.g. Wikipedia-style https://en.wikipedia.org/wiki/Unix_(operating_system)) to be silently truncated. Because the function already uses AST parsing to ensure it only matches text nodes (never link hrefs), excluding ( from the middle class is overly conservative and not required for correctness.

Confidence Score: 3/5

  • Safe to merge for most content, but URLs with parentheses in paths will be silently truncated, producing malformed wrapped links in translated output.
  • The overall architecture is clean and well-tested. The AST-based approach is the right abstraction and the integration in aggregateFiles.ts is minimal and correctly scoped. However, the URL regex excludes ( in the middle character class, which will incorrectly truncate valid URLs like Wikipedia links. Since this produces silently wrong output (a broken URL rather than a parse error), it warrants attention before merging to production Mintlify users who may have such links in their docs.
  • packages/cli/src/utils/wrapPlainUrls.ts — the URL_REGEX on line 8 needs the parentheses exclusion revisited in its middle character class.

Important Files Changed

Filename Overview
packages/cli/src/utils/wrapPlainUrls.ts Core new utility: AST-based URL wrapping for Mintlify MDX. Logic is sound but the URL regex excludes ( from the middle character class, causing URLs with parentheses in paths (e.g. Wikipedia links) to be truncated; module-level mutable regex with g flag also introduces subtle shared-state risk.
packages/cli/src/utils/tests/wrapPlainUrls.test.ts Comprehensive test suite covering the main happy paths, edge cases (frontmatter, code blocks, JSX attributes, idempotency). Missing coverage for URLs with parentheses in paths, which is a known gap tied to the regex issue.
packages/cli/src/formats/files/aggregateFiles.ts URL wrapping is applied only for md/mdx files with framework === 'mintlify', correctly after the title-fallback step and before sanitization. Integration looks clean.
.changeset/tasty-rockets-rule.md Patch-level changeset entry for gtx-cli describing the new Mintlify URL preprocessing step. Accurate and correctly scoped.
packages/cli/src/generated/version.ts Auto-generated version bump from 2.6.27 → 2.6.29. No issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[aggregateFiles called] --> B{fileType is md or mdx?}
    B -- No --> G[sanitizeFileContent]
    B -- Yes --> C{framework === mintlify?}
    C -- No --> G
    C -- Yes --> D[wrapPlainUrls]

    subgraph wrapPlainUrls
        D --> E[Parse content with remark + remark-mdx + remark-frontmatter]
        E --> F{Parse succeeded?}
        F -- No --> R[Return content unchanged]
        F -- Yes --> H[visit AST text nodes]
        H --> I{Parent is link node?}
        I -- Yes --> J[Skip — already wrapped]
        I -- No --> K[Run URL_REGEX against node value]
        K --> L{Match found?}
        L -- Yes --> M[Record start/end offset + url]
        M --> K
        L -- No --> N[All text nodes visited]
        N --> O[Apply replacements in reverse offset order]
        O --> P[Return wrapped content]
    end

    P --> G[sanitizeFileContent]
    G --> Q[Upload FileToUpload with versionId from original content]
Loading

Last reviewed commit: d058d69

Summary by CodeRabbit

  • Bug Fixes

    • Plain URLs in Mintlify MDX are now automatically wrapped as Markdown links for better parser compatibility.
  • New Features

    • Unified content preprocessing before upload: MDX validation with clear skip reasons, Mintlify-specific transformations (optional title inference) and universal sanitization; framework-aware processing for Mintlify.
  • Tests

    • Extensive test suite validating URL-wrapping across many edge cases and content scenarios.

@fernando-aviles fernando-aviles requested a review from a team as a code owner March 4, 2026 23:33
@coderabbitai
Copy link

coderabbitai bot commented Mar 4, 2026

📝 Walkthrough

Walkthrough

Adds a preprocess pipeline for files: MDX validation, Mintlify-specific transforms (title fallback + plain-URL wrapping), and sanitization; integrates this pipeline into file aggregation, introduces a wrapPlainUrls utility with tests, and adds a changeset documenting the patch.

Changes

Cohort / File(s) Summary
Changeset
\.changeset/tasty-rockets-rule.md
Adds a patch changeset describing the Mintlify MDX URL-wrapping change.
Aggregation / Integration
packages/cli/src/formats/files/aggregateFiles.ts
Replaced per-file MDX sanitization/validation with preprocessContent; uses preprocessed content for FileToUpload, logs and records skips when preprocessing returns a skip reason; removed prior in-file Mintlify title fallback handling.
Preprocessing orchestrator
packages/cli/src/formats/files/preprocessContent.ts
New orchestrator that runs preprocessMdx (validation), conditionally preprocessMintlify (Mintlify transforms), then sanitizeFileContent; returns processed string or { skip }.
MDX validation
packages/cli/src/formats/files/preprocess/mdx.ts
New preprocessMdx that validates MDX unless skipped via settings and returns a descriptive skip reason on failure.
Mintlify transforms
packages/cli/src/formats/files/preprocess/mintlify.ts
New preprocessMintlify applying Mintlify title fallback when enabled and running wrapPlainUrls for MDX files.
URL wrapping utility
packages/cli/src/utils/wrapPlainUrls.ts
New utility parsing Markdown/MDX AST and wrapping plain URLs in text nodes as Markdown links while excluding links, code, frontmatter, and other non-text contexts.
URL wrapper tests
packages/cli/src/utils/__tests__/wrapPlainUrls.test.ts
Extensive tests covering punctuation, multiple URLs, code blocks, frontmatter, existing links, idempotency, language edge cases, HTML/JSX attributes, comments, and more.
Aggregate tests update
packages/cli/src/formats/files/__tests__/aggregateFiles.test.ts
Test fixtures updated to include framework: 'mintlify' in several cases to reflect framework-aware preprocessing.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant CLI as "CLI aggregator"
  participant Pre as "preprocessContent"
  participant MDX as "preprocessMdx (validator)"
  participant Mint as "preprocessMintlify"
  participant Wrap as "wrapPlainUrls"
  participant Sanit as "sanitizeFileContent"
  participant Store as "FileToUpload"

  CLI->>Pre: send (content, path, type, settings)
  Pre->>MDX: if type === 'mdx' validate content
  alt MDX invalid
    MDX-->>Pre: return skip reason
    Pre-->>CLI: return { skip }
  else MDX valid
    MDX-->>Pre: ok
    Pre->>Mint: if settings.framework === 'mintlify' transform content
    Mint->>Wrap: (for mdx) wrap plain URLs
    Wrap-->>Mint: transformed content
    Mint-->>Pre: transformed content
    Pre->>Sanit: sanitize transformed content
    Sanit-->>Pre: sanitized content
    Pre-->>Store: provide sanitized content for FileToUpload (versionId from original content)
    Store-->>CLI: file prepared
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I hopped through tokens, parsed each line,
Spotted lone URLs basking in shine.
Bracketed them neatly, wrapped with delight,
Mintlify-ready, tidy and bright. ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'F/mint text url preprocessing' directly describes the main feature being introduced: URL wrapping for Mintlify MDX/MD files.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch f/mint-text-url-preprocessing

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
packages/cli/src/utils/wrapPlainUrls.ts (2)

19-26: Minor: runSync may be unnecessary.

Since no remark transformers are configured (only parsers), processor.runSync(ast) doesn't modify the AST. You could simplify to just using processor.parse(content) and skip the runSync call.

This is a minor optimization and doesn't affect correctness.

♻️ Proposed simplification
-    ast = processor.parse(content);
-    ast = processor.runSync(ast) as Root;
+    ast = processor.parse(content) as Root;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/utils/wrapPlainUrls.ts` around lines 19 - 26, The code calls
processor.runSync(ast) after parsing, but since no remark transformers are
configured the AST is unchanged; remove the unnecessary runSync call and set ast
directly from the parse result (i.e., replace the pattern where ast =
processor.parse(content); ast = processor.runSync(ast) with a single assignment
using processor.parse(content) (cast to Root if needed) and remove the
processor.runSync invocation and its assignment.

8-8: Regex edge case: URLs with balanced parentheses may be truncated.

URLs like https://en.wikipedia.org/wiki/Example_(disambiguation) will be cut at the first ( because parentheses are excluded from the URL character class. This is a known limitation of simple regex-based URL detection.

If Mintlify content includes Wikipedia-style URLs or URLs with parentheses in paths, consider documenting this limitation or enhancing the regex to handle balanced parentheses.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/utils/wrapPlainUrls.ts` at line 8, The current URL_REGEX
excludes parentheses so URLs with balanced parentheses (e.g., Wikipedia-style
paths) get truncated; update the match logic by allowing '(' and ')' in the
character class for URL_REGEX and add a small post-processing step in the
wrapping function to ensure parentheses are balanced (if the match ends with a
')' but there are more closing than opening parens, trim the trailing ')' until
balanced) — alternatively, replace the simplistic regex approach with a URL
parser or a third-party URL-detection library if you prefer robustness;
reference URL_REGEX in wrapPlainUrls.ts and add the balancing fix in the code
that consumes URL_REGEX matches.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/cli/src/utils/wrapPlainUrls.ts`:
- Around line 19-26: The code calls processor.runSync(ast) after parsing, but
since no remark transformers are configured the AST is unchanged; remove the
unnecessary runSync call and set ast directly from the parse result (i.e.,
replace the pattern where ast = processor.parse(content); ast =
processor.runSync(ast) with a single assignment using processor.parse(content)
(cast to Root if needed) and remove the processor.runSync invocation and its
assignment.
- Line 8: The current URL_REGEX excludes parentheses so URLs with balanced
parentheses (e.g., Wikipedia-style paths) get truncated; update the match logic
by allowing '(' and ')' in the character class for URL_REGEX and add a small
post-processing step in the wrapping function to ensure parentheses are balanced
(if the match ends with a ')' but there are more closing than opening parens,
trim the trailing ')' until balanced) — alternatively, replace the simplistic
regex approach with a URL parser or a third-party URL-detection library if you
prefer robustness; reference URL_REGEX in wrapPlainUrls.ts and add the balancing
fix in the code that consumes URL_REGEX matches.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 76faeeab-0abe-4639-b2c9-794c160173fd

📥 Commits

Reviewing files that changed from the base of the PR and between afb6132 and d058d69.

⛔ Files ignored due to path filters (1)
  • packages/cli/src/generated/version.ts is excluded by !**/generated/**
📒 Files selected for processing (4)
  • .changeset/tasty-rockets-rule.md
  • packages/cli/src/formats/files/aggregateFiles.ts
  • packages/cli/src/utils/__tests__/wrapPlainUrls.test.ts
  • packages/cli/src/utils/wrapPlainUrls.ts

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
packages/cli/src/formats/files/preprocess/mintlify.ts (1)

1-32: Consider consolidating the fileType === 'mdx' checks.

The two separate if (fileType === 'mdx') blocks could be combined for cleaner control flow, especially if md support is added.

♻️ Proposed consolidation
 export function preprocessMintlify(
   content: string,
   filePath: string,
   fileType: string,
   settings: Settings
 ): string {
   let result = content;

-  if (
-    fileType === 'mdx' &&
-    settings.options?.mintlify?.inferTitleFromFilename
-  ) {
-    result = applyMintlifyTitleFallback(
-      result,
-      filePath,
-      settings.defaultLocale
-    ).content;
-  }
-
-  if (fileType === 'mdx') {
-    result = wrapPlainUrls(result);
+  if (fileType === 'mdx' || fileType === 'md') {
+    if (fileType === 'mdx' && settings.options?.mintlify?.inferTitleFromFilename) {
+      result = applyMintlifyTitleFallback(
+        result,
+        filePath,
+        settings.defaultLocale
+      ).content;
+    }
+    result = wrapPlainUrls(result);
   }

   return result;
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/formats/files/preprocess/mintlify.ts` around lines 1 - 32,
Consolidate the two separate fileType checks inside preprocessMintlify by
combining them into a single conditional (e.g., check fileType === 'mdx' or
other future types) and then run applyMintlifyTitleFallback only when
settings.options?.mintlify?.inferTitleFromFilename is true and always run
wrapPlainUrls for that fileType; update preprocessMintlify to perform the single
fileType guard and inside it call applyMintlifyTitleFallback (when needed) and
wrapPlainUrls so control flow is simpler and easier to extend (refer to
preprocessMintlify, applyMintlifyTitleFallback, and wrapPlainUrls).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/cli/src/formats/files/preprocess/mintlify.ts`:
- Around line 1-32: Consolidate the two separate fileType checks inside
preprocessMintlify by combining them into a single conditional (e.g., check
fileType === 'mdx' or other future types) and then run
applyMintlifyTitleFallback only when
settings.options?.mintlify?.inferTitleFromFilename is true and always run
wrapPlainUrls for that fileType; update preprocessMintlify to perform the single
fileType guard and inside it call applyMintlifyTitleFallback (when needed) and
wrapPlainUrls so control flow is simpler and easier to extend (refer to
preprocessMintlify, applyMintlifyTitleFallback, and wrapPlainUrls).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 81d5cc11-0440-4728-af1c-b36363133b1b

📥 Commits

Reviewing files that changed from the base of the PR and between d058d69 and e325ce1.

📒 Files selected for processing (5)
  • packages/cli/src/formats/files/__tests__/aggregateFiles.test.ts
  • packages/cli/src/formats/files/aggregateFiles.ts
  • packages/cli/src/formats/files/preprocess/mdx.ts
  • packages/cli/src/formats/files/preprocess/mintlify.ts
  • packages/cli/src/formats/files/preprocessContent.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/cli/src/formats/files/aggregateFiles.ts

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/cli/src/formats/files/preprocess/mintlify.ts`:
- Around line 14-27: The early return only allows 'mdx' files through, skipping
wrapPlainUrls for '.md' files; update the guard in the preprocessing block so
both 'mdx' and 'md' are processed (e.g., change the fileType check around the
if/return that currently references 'mdx') so applyMintlifyTitleFallback and
wrapPlainUrls run for markdown (.md) as well — reference the variables/fileType,
content, settings, applyMintlifyTitleFallback, and wrapPlainUrls to locate and
adjust the condition.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 93a3e6e1-2f8c-4d82-9ae5-a459b505d2ed

📥 Commits

Reviewing files that changed from the base of the PR and between e325ce1 and abffedc.

📒 Files selected for processing (1)
  • packages/cli/src/formats/files/preprocess/mintlify.ts

@fernando-aviles fernando-aviles enabled auto-merge (squash) March 5, 2026 00:21
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/cli/src/utils/wrapPlainUrls.ts`:
- Around line 35-37: The check that skips text nodes inside links currently only
checks for parent.type === 'link' and misses reference-style links; update the
condition in wrapPlainUrls (the parent check near the top of the transformer) to
also treat parent.type === 'linkReference' as already-linked (e.g. if (parent &&
(parent.type === 'link' || parent.type === 'linkReference')) return;), so text
nodes inside reference links are not rewrapped.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ddc30301-86ff-4fb2-8644-59505ff5b56b

📥 Commits

Reviewing files that changed from the base of the PR and between abffedc and d05bca8.

📒 Files selected for processing (2)
  • packages/cli/src/utils/__tests__/wrapPlainUrls.test.ts
  • packages/cli/src/utils/wrapPlainUrls.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/cli/src/utils/tests/wrapPlainUrls.test.ts

Comment on lines +35 to +37
// Skip text nodes inside links — those are already display text for a link
if (parent && parent.type === 'link') return;

Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Skip linkReference content as already-linked text.

Line 36 only excludes link parents. In reference-style links (e.g. [https://x][id]), text nodes are under linkReference, so this can rewrap already-linked content.

Suggested patch
-    if (parent && parent.type === 'link') return;
+    if (parent && (parent.type === 'link' || parent.type === 'linkReference')) return;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Skip text nodes inside links — those are already display text for a link
if (parent && parent.type === 'link') return;
// Skip text nodes inside links — those are already display text for a link
if (parent && (parent.type === 'link' || parent.type === 'linkReference')) return;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cli/src/utils/wrapPlainUrls.ts` around lines 35 - 37, The check that
skips text nodes inside links currently only checks for parent.type === 'link'
and misses reference-style links; update the condition in wrapPlainUrls (the
parent check near the top of the transformer) to also treat parent.type ===
'linkReference' as already-linked (e.g. if (parent && (parent.type === 'link' ||
parent.type === 'linkReference')) return;), so text nodes inside reference links
are not rewrapped.

@fernando-aviles fernando-aviles merged commit 7b4837f into main Mar 5, 2026
23 checks passed
@fernando-aviles fernando-aviles deleted the f/mint-text-url-preprocessing branch March 5, 2026 00:26
@github-actions github-actions bot mentioned this pull request Mar 5, 2026
ErnestM1234 pushed a commit that referenced this pull request Mar 5, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## gtx-cli@2.6.30

### Patch Changes

- [#1068](#1068)
[`94b95ef`](94b95ef)
Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - fix: runtime
calculation for the injection of 'data-' attribute in jsx

- [#1066](#1066)
[`7b4837f`](7b4837f)
Thanks [@fernando-aviles](https://github.com/fernando-aviles)! -
Wrapping text node URLs for Mintlify MDX to align with their parser

## @generaltranslation/compiler@1.1.23

### Patch Changes

- [#1068](#1068)
[`94b95ef`](94b95ef)
Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - fix: runtime
calculation for the injection of 'data-' attribute in jsx

## locadex@1.0.108

### Patch Changes

- Updated dependencies
\[[`94b95ef`](94b95ef),
[`7b4837f`](7b4837f)]:
    -   gtx-cli@2.6.30

## gt-next@6.13.3

### Patch Changes

- [#1068](#1068)
[`94b95ef`](94b95ef)
Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - fix: runtime
calculation for the injection of 'data-' attribute in jsx

- Updated dependencies
\[[`94b95ef`](94b95ef)]:
    -   @generaltranslation/compiler@1.1.23
    -   gt-react@10.11.2

## @generaltranslation/gt-next-lint@11.0.3

### Patch Changes

- Updated dependencies
\[[`94b95ef`](94b95ef)]:
    -   gt-next@6.13.3

## gt-react@10.11.2

### Patch Changes

- Updated dependencies
\[[`94b95ef`](94b95ef)]:
    -   @generaltranslation/react-core@1.5.2

## @generaltranslation/react-core@1.5.2

### Patch Changes

- [#1068](#1068)
[`94b95ef`](94b95ef)
Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - fix: runtime
calculation for the injection of 'data-' attribute in jsx

## @generaltranslation/react-core-linter@0.1.2

### Patch Changes

- [#1068](#1068)
[`94b95ef`](94b95ef)
Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - fix: runtime
calculation for the injection of 'data-' attribute in jsx

## gt-tanstack-start@0.1.9

### Patch Changes

- Updated dependencies
\[[`94b95ef`](94b95ef)]:
    -   @generaltranslation/react-core@1.5.2
    -   gt-react@10.11.2

## gt-next-middleware-e2e@0.1.3

### Patch Changes

- Updated dependencies
\[[`94b95ef`](94b95ef)]:
    -   gt-next@6.13.3

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

2 participants