Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds dataLanguage property to the replacement <pre> element. #10538

Merged
merged 14 commits into from
Apr 10, 2024
Merged

Adds dataLanguage property to the replacement <pre> element. #10538

merged 14 commits into from
Apr 10, 2024

Conversation

604qgc
Copy link
Contributor

@604qgc 604qgc commented Mar 23, 2024

Changes

  • Passes the language info used by the highlighter (languageMatch?.[1] || "plaintext") as dataLanguage property to the replacement <pre> element.

Testing

No testing other than verifying that the property is passed down properly; unsure what/how to test for such thing.

Docs

When using Astro's built-in markdown processing, the built-in code highlighter processes the data first, before any other remark/rehype plugin can. The Shiki highlighter does not pass around the language information in its output.

This change fixes this and will allow users using the built-in Shiki highlighter to collect the coding language info after Shiki has passed.

Since it standardises the way the language info can be retrieved between Astro's two built-in highlighters, it will allow switching between the two while preserving this feature with no intervention (currently only Prism supports passing down the language, using className).

This should not break anything for users, unless they already use a dataLanguage property on <pre> elements as well as the built-in markdown processing.

The language info can then be retrieved in a rehype plugin like so:

// myRehypePre.js
import { visit } from "unist-util-visit";
export default function myRehypePre() {
  return (tree) => {
    visit(tree, { tagName: "pre" }, (node) => {
      const lang = node.properties.dataLanguage;
      [...]
    });
  };
}

Copy link

changeset-bot bot commented Mar 23, 2024

🦋 Changeset detected

Latest commit: 52f3cd7

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions bot added the feat: markdown Related to Markdown (scope) label Mar 23, 2024
@604qgc 604qgc changed the title Update highlight.ts Adds dataLanguage property to the replacement <pre> element. Mar 23, 2024
Copy link
Member

@bluwy bluwy left a comment

Choose a reason for hiding this comment

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

Sounds good to me. We also have a roadmap request for this: withastro/roadmap#276

packages/markdown/remark/src/highlight.ts Outdated Show resolved Hide resolved
@604qgc 604qgc closed this Apr 3, 2024
@604qgc 604qgc reopened this Apr 3, 2024
@bluwy
Copy link
Member

bluwy commented Apr 8, 2024

I'll put this in the 4.6 milestone since we're near it. It should be merged on this Wednesday.

@bluwy bluwy added this to the 4.6.0 milestone Apr 8, 2024
"@astrojs/markdown-remark": minor
---

Adds a `data-language` attribute on the rendered `pre` and `code` elements to expose the highlighted syntax language
Copy link
Contributor

Choose a reason for hiding this comment

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

can you add a usage example?

Copy link
Contributor

@matthewp matthewp left a comment

Choose a reason for hiding this comment

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

Before merging we would like a usage example in the changeset.

@github-actions github-actions bot added the pkg: astro Related to the core `astro` package (scope) label Apr 8, 2024
@604qgc
Copy link
Contributor Author

604qgc commented Apr 8, 2024

Added new commit that solves this: #6869

(Sorry, I pasted the wrong link in the commit message and it can't be safely overwritten from what I understand).

It's more or less the same thing as my first commit, but for the Code component. The trick is that because the Code component uses Fragment, the html gets flattened and the <pre> cannot be accessed easily in remark/rehype plugins. So the only thing it does is expose the data-language in the rendered html.

That allows css rules like this to work when using the built-in Code component:

pre::before {
  content: attr(data-language);
  // ....
}

To be clear, the first commit does the same thing + allows to catch the data-language when working with the node tree, for fenced-code in .md/.mdx files.

For example, we would expose data-language="python" from the following:

\```python
def func():
    print('Hello Astro!')
\```

Since the first commit and this one solve the same issue, I think it'd makes sense to bundle them together.
What do you think?

Regarding the usage example in the changeset, what should it look like? Should I copy the above and the rehype snippet from my first message?

@bluwy
Copy link
Member

bluwy commented Apr 9, 2024

Good catch 👍 Now that I see it, maybe we can do the fix differently. We can remove the current changes, but add the data-language at:

return Promise.resolve(
`<pre class="${classLanguage}"><code is:raw class="${classLanguage}">${html}</code></pre>`
);

// Replace "shiki" class naming with "astro-code"
node.properties.class = classValue.replace(/shiki/g, 'astro-code');

Code.astro currently uses the second linked code so the changes would auto-propagate there. That way I think we can continue use the same changeset.

"@astrojs/markdown-remark": minor
---

Adds a `data-language` attribute on the rendered `pre` and `code` elements to expose the highlighted syntax language
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
Adds a `data-language` attribute on the rendered `pre` and `code` elements to expose the highlighted syntax language
Adds a `data-language` attribute on the rendered `pre` and `code` elements to expose the highlighted syntax language.
This allows retrieving the language in a rehype plugin:
```js
// myRehypePre.js
import { visit } from "unist-util-visit";
export default function myRehypePre() {
return (tree) => {
visit(tree, { tagName: "pre" }, (node) => {
const lang = node.properties.dataLanguage;
[...]
});
};
}
```

Hi @604qgc ! I was thinking of including something like this in the changeset, since for minor releases of new features we do like to show them off a bit and really help people understand why your thing is cool! 💅

I took this from your PR description, but if there's something else you'd prefer to use, or would change this in some way, please do! I think a changeset of this style/length is helpful to people to understand the new feature, so anything like this you can suggest would be great.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thank you @sarah11918 !
I added some more notes for clarity, but happy to trim if that's a bit too long db66313

@github-actions github-actions bot removed the pkg: astro Related to the core `astro` package (scope) label Apr 9, 2024
@604qgc
Copy link
Contributor Author

604qgc commented Apr 9, 2024

@bluwy Ah yes indeed!
Rolled-back initial changes and committed new fix, all working as expected 👍

@604qgc 604qgc requested a review from bluwy April 9, 2024 21:48
Copy link
Member

@bluwy bluwy left a comment

Choose a reason for hiding this comment

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

Looks great!

.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
@ematipico ematipico dismissed matthewp’s stale review April 10, 2024 10:12

Changeset added, with examples

Copy link
Member

@sarah11918 sarah11918 left a comment

Choose a reason for hiding this comment

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

Thank you so much @604qgc! Admittedly, I think this feature does seem cooler know that you've been able to share more about it... and that's what we want! 😄 The addition of the CSS mention is fantastic!

I just left a couple of wording suggestions for your consideration. Now that this is longer with examples, I tried to make the text itself more concise and direct. See what you think!

.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
.changeset/cold-snakes-train.md Outdated Show resolved Hide resolved
@matthewp matthewp merged commit ccafa8d into withastro:main Apr 10, 2024
13 checks passed
@astrobot-houston astrobot-houston mentioned this pull request Apr 10, 2024
PeterDraex pushed a commit to PeterDraex/astro that referenced this pull request Apr 23, 2024
…ro#10538)

* Update highlight.ts

* Create cold-snakes-train.md

* Update Code.astro

Solution for use-case described in withastro/roadmap#276 (withastro/roadmap#276)

* roll-back initial fix

* new fix

* update changeset

* Update packages/markdown/remark/src/rehype-prism.ts

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Bjorn Lu <[email protected]>
Co-authored-by: Matthew Phillips <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>
matthewp added a commit that referenced this pull request Apr 24, 2024
* Update sharp to 0.33 to fix issue with Alpine Linux 

It was impossible for me to use the Astro image service in an Alpine Linux docker container. Even though I would install sharp `0.33.3` in my app, pnpm would download version `0.32.6`, which doesn't work in Alpine Linux container. 

Currently, I have to override the downloaded version in my package.json. For more details see:
- lovell/sharp#4054
- https://discord.com/channels/830184174198718474/1224861729792458803/1224861729792458803

This PR updates the version of the `sharp` dependency to `^0.33` and thus makes Astro compatible with Alpine Linux.

* update lock file

* add changelog

* Update packages/astro/package.json

* Update pnpm-lock.yaml

* ci: update check-merge.yml action (#10690)

* test(@astrojs/node) listen for server setup errors in test-utils (#10692)

* Add disableremoteplayback attribute to VideoHTMLAttributes interface (#10693)

* Add disableremoteplayback attribute to VideoHTMLAttributes interface

* Move disableremoteplayback from VideoHTMLAttributes to MediaHTMLAttributes

* Create olive-camels-greet.md

* Update packages/astro/astro-jsx.d.ts

---------

Co-authored-by: Erika <[email protected]>

* test(@astrojs/node) wait for server listening in trailing-slash tests (#10694)

* test(@astrojs/node) wait for server listening in trailing-slash tests

* fix missing waitServerListen

* fix import statement

---------

Co-authored-by: Emanuele Stoppa <[email protected]>

* chore: add `test:citgm` command that would run tests without caching and `build:ci:no-cache` to skip caching for build as well (#10696)

* chore: add test:citgm command that would run tests without caching

* adding build ci with no cache

* chore: fix build:ci:no-cache test:citgm (#10698)

* Improve dev toolbar notification contrast on hover (#10657)

* fix(#10399, PLT-1786): improve notification contrast on hover

* chore: add changeset

* fix test:citgm --force flag not passed correctly (#10706)

* Skip prerender chunk in static output (#10695)

* Remove unused config in Vue JSX integration (#10687)

* Refactor MDX transformJSX handling (#10688)

* Fix vue-jsx change (#10716)

* Fix script inline with directRenderScript (#10686)

* Provide better messaging when renaming a table (#10600)

* Provide better messaging when renaming a table

* Update based on review

* [ci] format

* [ci] update lockfile (#10718)

Co-authored-by: matthewp <[email protected]>

* Increase log severity when a page's `getStaticPaths` fails (#10707)

* [ci] release (#10680)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: use just pnpm to run the build and tests in citgm (#10727)

* fix(devtool): do not trigger interaction check for `div` and `span` (#10719)

* fix(devtool): do not trigger interaction check for `div` and `span`

* add test

* add tests

* Rephrase changeset

* remove log

* add reference link

* Update .changeset/swift-coats-teach.md

Co-authored-by: Florian Lefebvre <[email protected]>

---------

Co-authored-by: Florian Lefebvre <[email protected]>

* fix: regression for astro attributes escaping (#10728)

* Fix db seeding when srcDir is root (#10720)

* ci: add ref when checking out the repository (#10733)

* fix(dev): break implicit rerouting loop (#10737)

* fix(dev): infinite implicit rerouting

* test adapter

* changeset

* [ci] format

* [ci] release (#10729)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix: Fixed errorOverlay theme toggle bug. (#10661)

* fix: save `localStorage.astroErrorOverlayTheme` when detected dark mode

* add  changeset

* Fix theme toggle in ErrorOverlay

* update  changeset

* [ci] format

* feat: add origin check for CSRF protection (#10678)

* feat: add origin check for CSRF protection

* add tests

* chore: documentation

* changeset and grammar

* chore: add casing check

* split function

* better naming

* make the whole object experimental

* remove unused type

* update changeset

* manually apply Sarah's suggestions

* Apply suggestions from code review

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Sarah Rainsberger <[email protected]>

* feat: upgrade the minimum Node.js maintainance LTS version (#10689)

* feat: upgrade the minimum Node.js maintainance LTS version

* chore: update minimum npm version

* chore: revert npm change

* chore: address Erika's feedback

* chore: apply further suggestions

* Update .changeset/empty-rules-type.md

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Sarah Rainsberger <[email protected]>

* [ci] format

* Accept common cookie attributes when deleting a cookie (#10671)

* Accept common cookie attributes when deleting a cookie

* Fix AstroCookieSetOptions IDE annotations

* Use AstroCookieSetOptions to construct AstroCookieDeleteOptions

* Update .changeset/shaggy-cats-film.md

Co-authored-by: Florian Lefebvre <[email protected]>

---------

Co-authored-by: Florian Lefebvre <[email protected]>

* feat(i18n): manual routing (#10193)

* feat(i18n): manual routing

* one more function

* different typing

* tests

* fix merge

* throw error for missing middleware

* rename function

* fix conflicts

* lock file update

* fix options, error thrown and added tests

* rebase

* add tests

* docs

* lock file black magic

* increase timeout?

* fix regression

* merge conflict

* add changeset

* chore: apply suggestions

* apply suggestion

* Update .changeset/little-hornets-give.md

Co-authored-by: Erika <[email protected]>

* chore: address feedback

* fix regression of last commit

* update name

* add comments

* fix regression

* remove unused code

* Apply suggestions from code review

Co-authored-by: Sarah Rainsberger <[email protected]>

* chore: update reference

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <[email protected]>

* chore: improve types

* fix regression in tests

* apply Sarah's suggestion

---------

Co-authored-by: Erika <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>

* [ci] format

* feat(toolbar): allow the user to change the placement (#10591)

* feat(toolbar): add `placement` to settings

* feat(toolbar): update `settings.placement` with `<select>`

* feat(toolbar): adjust position based on `settings.placement`

* test(toolbar): add a test case for `settings.placement`

* refactor(toolbar): extract select element from settings app

* feat(toolbar): allow select element to have colors

* test(toolbar): fix failed test case

* refactor(toolbar): add `placement` property to window element

* refactor(toolbar): notify apps when placement changes

* test(toolbar): fix failed test case

* refactor(toolbar): extract `synchronizePlacementOnUpdate` function

* chore: add changeset

* chore: update changeset

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Erika <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>

* Adds dataLanguage property to the replacement <pre> element. (#10538)

* Update highlight.ts

* Create cold-snakes-train.md

* Update Code.astro

Solution for use-case described in withastro/roadmap#276 (withastro/roadmap#276)

* roll-back initial fix

* new fix

* update changeset

* Update packages/markdown/remark/src/rehype-prism.ts

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

* Update .changeset/cold-snakes-train.md

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Bjorn Lu <[email protected]>
Co-authored-by: Matthew Phillips <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>

* [ci] format

* fix some i18n config docs (#10746)

* fix some i18n config docs

* Move manual option to last position

---------

Co-authored-by: = <[email protected]>

* [ci] format

* fix(rendering): remove render instructions from slot expressions (#10747)

* [ci] format

* Update a11y-no-noninteractive-tabindex rule for dev tool bar (#10750)

* fix: a11y-no-noninteractive-tabindex

* add changeset

* Update utils.ts: Optimize and simplify code (#10749)

Update utils.ts: Optimize and simplify code

* fix(cli): call path.replace only if it is a function (#10745)

* fix(cli): call `path.replace` only if it is a function

* add changeset

* fix: rewrite Node.js changeset (#10753)

* fix: rewrite Node.js changeset

* Update .changeset/empty-rules-type.md

Co-authored-by: Sarah Rainsberger <[email protected]>

---------

Co-authored-by: Sarah Rainsberger <[email protected]>

* [ci] release (#10739)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(i18n): fallback SSR (#10755)

* fix(i18n): fallback SSR

* Update .changeset/old-pugs-jog.md

Co-authored-by: Florian Lefebvre <[email protected]>

---------

Co-authored-by: Florian Lefebvre <[email protected]>

* [docs] config reference link fix (#10758)

* Limit imports in flight for `getCollection` (#10708)

* [ci] format

* Add useful links to `@astrojs/db` package.json (#10764)

Co-authored-by: Reuben Tier <[email protected]>

* Performance improvement in createAstro function (#10765)

* Fix typo in error message for IncorrectStrategyForI18n (#10768)

* fix(vercel): Fix srcset generation not working on Vercel (#10756)

* fix(vercel): Fix `srcset` generation not working on Vercel

* chore: changeset

* fix: remove densities and widths from the HTML attributes

* nit: better changeset

* nit: add formats

* [ci] format

* [ci] release (#10757)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(add): Fixes astro add modifying baseUrl by accident (#10774)

* fix(add): Fixes `astro add` modifying `baseUrl` by accident

* chore: changeset

* test: add test

* fix: tsconfig not being a json maybe is a mistake, I don't know!

* test: fix

* Update packages/astro/test/fixtures/tsconfig-handling/baseUrl/tsconfig.json

Co-authored-by: Nate Moore <[email protected]>

---------

Co-authored-by: Nate Moore <[email protected]>

* [ci] format

* Remove MDX processor on buildEnd (#10770)

* lint: upgrade eslint to version 9 (#10730)

* [ci] format

* fix: picture fallback check (#10783)

* Fix @types/cookie dependency (#10776)

Co-authored-by: Florian Lefebvre <[email protected]>

* Make viewTransition.finished wait for animations triggered by viewTransition.ready (#10787)

* [ci] format

* fix(assets): Forward headers from the original request to the internal request to the image (#10775)

* [ci] format

* astro/cli/install-package.ts: whichPm may return null if ran in an empty directory (#10782)

* [ci] update lockfile (#10791)

Co-authored-by: matthewp <[email protected]>

* Improve sitemap generate performance (#10795)

* Disable streaming for SSG (#10796)

* fix: use assetsDir in creating vite config (#10732)

Co-authored-by: Emanuele Stoppa <[email protected]>

* fix: MDX cannot find relative image path without leading ./ (#10754)

Co-authored-by: Oliver Speir <[email protected]>

* [ci] release (#10777)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* db: export 'alias' from drizzle-orm/sqlite-core (#10789)

* db: export 'alias' from drizzle-orm/sqlite-core

* chore: changeset

* fix: changeset target

---------

Co-authored-by: Ben Holmes <[email protected]>

* chore: use Biome to format JS files (#10788)

* chore: configuration

* chore: update main commands

* chore: revert formatting package.json

* chore: rebase

* [ci] format

* Fixes an issue with persisted non-text input fields that have the focus during view transition navigation. (#10799)

* Fixes an issue with persisted non-text input fields that have the focus during view transition navigation.

* better check

* [ci] format

* test: fix regression upon import sorting (#10802)

* fix(sitemap): Trailing slashes on root url (#10772)

* add tests that reveal issue

* fix trailing slash root page issue

* add changeset

* [ci] format

* optimization(runtime): create smaller objects for each Astro global (#10773)

* optimization(runtime): create smaller objects for each Astro global

* add changeset

* Make slots lazy

---------

Co-authored-by: bluwy <[email protected]>

* add/cli: update list of integrations (#10811)

* Invalidate CC cache manifest when lockfile or config changes (#10763)

* Invalidate CC cache manifest when lockfile or config changes

* Close the handle and increment manifest version

* debug info

* Provide a reason for cache busting

* Handle compile metadata missing

* Try it this way

* Copy over cached assets as well

* Only restore chunks when cache is valid

* Better handle invalid caches

* Explain when there is no content manifest

* Add tests

* debugging

* Remove debugging

* Update packages/astro/src/core/build/plugins/plugin-content.ts

Co-authored-by: Bjorn Lu <[email protected]>

* Update packages/astro/src/core/build/plugins/plugin-content.ts

Co-authored-by: Bjorn Lu <[email protected]>

* Review comments

* Add chunks path constant

---------

Co-authored-by: Bjorn Lu <[email protected]>

* [ci] format

* [ci] release (#10798)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fixed the path to checkout existing blog posts on the home page of the blog starter template (#10814)

Currently the 4th point on home page says: "Check out the included blog posts in src/pages/blog/". It the path here should be "src/content/blog/".

* Update packages/astro/package.json

* Update pnpm-lock.yaml

* update sharp version in examples/starlog and update pnpm-lock.yaml

---------

Co-authored-by: Erika <[email protected]>
Co-authored-by: Emanuele Stoppa <[email protected]>
Co-authored-by: Raz Luvaton <[email protected]>
Co-authored-by: apetta <[email protected]>
Co-authored-by: Nate Moore <[email protected]>
Co-authored-by: Bjorn Lu <[email protected]>
Co-authored-by: Matthew Phillips <[email protected]>
Co-authored-by: Matthew Phillips <[email protected]>
Co-authored-by: Houston (Bot) <[email protected]>
Co-authored-by: horo <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Florian Lefebvre <[email protected]>
Co-authored-by: Arsh <[email protected]>
Co-authored-by: Arsh <[email protected]>
Co-authored-by: liruifengv <[email protected]>
Co-authored-by: liruifengv <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>
Co-authored-by: Farzad <[email protected]>
Co-authored-by: Ming-jun Lu <[email protected]>
Co-authored-by: 604qgc <[email protected]>
Co-authored-by: Matthew Phillips <[email protected]>
Co-authored-by: = <[email protected]>
Co-authored-by: Sarah Rainsberger <[email protected]>
Co-authored-by: Oliver Speir <[email protected]>
Co-authored-by: aswind7 <[email protected]>
Co-authored-by: horo <[email protected]>
Co-authored-by: Chris Swithinbank <[email protected]>
Co-authored-by: Reuben Tier <[email protected]>
Co-authored-by: Leander Gilles <[email protected]>
Co-authored-by: Erika <[email protected]>
Co-authored-by: Jason <[email protected]>
Co-authored-by: Juraj Kapsz <[email protected]>
Co-authored-by: Martin Trapp <[email protected]>
Co-authored-by: Meghan Denny <[email protected]>
Co-authored-by: Rishi Raj Jain <[email protected]>
Co-authored-by: Nick Dubelman <[email protected]>
Co-authored-by: Ben Holmes <[email protected]>
Co-authored-by: Robin Gisler <[email protected]>
Co-authored-by: Avinash Reddy <[email protected]>
Co-authored-by: Damanjeet Singh <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat: markdown Related to Markdown (scope)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants