From 1c6e6e10fbd9c40bc70e2429edec6112959a7708 Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Tue, 22 Dec 2020 17:27:26 +0100 Subject: [PATCH] Replace codimd with hedgedoc (#875) Signed-off-by: Tilman Vatteroth --- CHANGELOG.md | 4 ++-- CONTRIBUTING.md | 8 ++++---- README.md | 12 +++++------ cypress/integration/documentTitle.spec.ts | 2 +- cypress/integration/link.spec.ts | 20 +++++++++---------- cypress/integration/toolbar.spec.ts | 2 +- .../v2/notes/features/revisions/1598389571 | 2 +- .../v2/notes/features/revisions/1598390307 | 2 +- src/links.json | 12 +++++------ 9 files changed, 32 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd9c5d84..1b3468ec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 - `{%gist user/12345 %}` -> https://gist.github.com/user/12345 - `{%slideshare user/my-awesome-presentation %}` -> Embedding removed - `{%speakerdeck foobar %}` -> Embedding removed -- The use of `sequence` as code block language ([Why?](https://community.codimd.org/t/frequently-asked-questions/190)) +- The use of `sequence` as code block language ([Why?](https://hedgedoc.org/faq/)) ### Removed @@ -68,7 +68,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0 - The `[name=...]`, `[time=...]` and `[color=...]` tags may now be used anywhere in the document and not just inside of blockquotes and lists. - The (add image) and (add link) toolbar buttons put selected links directly in the `()` instead of the `[]` part of the generated markdown. - The help dialog has multiple tabs, and is a bit more organized. -- Use KaTeX instead of MathJax. ([Why?](https://community.codimd.org/t/frequently-asked-questions/190)) +- Use KaTeX instead of MathJax. ([Why?](https://hedgedoc.org/faq/)) - The dark-mode is also applied to the read-only-view and can be toggled from there. - Access tokens for the CLI and 3rd-party-clients can be managed in the user profile. - Change editor font to "Fira Code" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de3fb3fd2..4bd7e2954 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,9 +56,9 @@ If you set your `user.name` and `user.email` git configs, you can sign your comm You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases) like `git config --global alias.ci 'commit -s'`. Now you can commit with `git ci` and the commit will be signed. -[issues]: https://github.com/codimd/react-client/issues -[new_issue]: https://github.com/codimd/react-client/issues/new/choose +[issues]: https://github.com/hedgedoc/react-client/issues +[new_issue]: https://github.com/hedgedoc/react-client/issues/new/choose [matrix-support]: https://matrix.to/#/#hedgedoc:matrix.org [matrix-dev]: https://matrix.to/#/#hedgedoc-dev:matrix.org -[discourse]: https://community.codimd.org/ -[poeditor]: https://translate.codimd.org/ +[discourse]: https://community.hedgedoc.org/ +[poeditor]: https://translate.hedgedoc.org/ diff --git a/README.md b/README.md index 156d2f22a..e4f2ad771 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ SPDX-License-Identifier: CC-BY-SA-4.0 # HedgeDoc - React Client -![test, build](https://github.com/codimd/react-client/workflows/test,%20build/badge.svg) -![e2e](https://github.com/codimd/react-client/workflows/e2e/badge.svg) -![lint](https://github.com/codimd/react-client/workflows/lint/badge.svg) +![test, build](https://github.com/hedgedoc/react-client/workflows/test,%20build/badge.svg) +![e2e](https://github.com/hedgedoc/react-client/workflows/e2e/badge.svg) +![lint](https://github.com/hedgedoc/react-client/workflows/lint/badge.svg) This is the new, improved and better looking frontend for HedgeDoc 2.0. Our goal is to recreate the current frontend in react and to improve it. @@ -18,11 +18,11 @@ You'll need at least Node 12. We use [yarn](https://yarnpkg.com/) for our depend ## Development mode -1. Clone this repo (e.g. `git clone https://github.com/codimd/react-client.git hedgedoc-react-client`) +1. Clone this repo (e.g. `git clone https://github.com/hedgedoc/react-client.git hedgedoc-react-client`) 2. Go inside the repo (e.g. `cd hedgedoc-react-client`) 3. Run `yarn install` 4. Either run - - `yarn start:dev` (expects [a server](https://github.com/codimd/server/tree/develop) running under [http://localhost:3000](http://localhost:3000)) + - `yarn start:dev` (expects [a server](https://github.com/hedgedoc/hedgedoc/tree/develop) running under [http://localhost:3000](http://localhost:3000)) - `yarn start` (makes all api calls to the same domain the react-client runs on (normally [http://localhost:3001](http://localhost:3001) )) This should run the app in the development mode and open [http://localhost:3001](http://localhost:3001) in your browser. @@ -55,7 +55,7 @@ You can inspect the generated production-bundle files to look for optimization i ## Production mode -1. Clone this repo (e.g. `git clone https://github.com/codimd/react-client.git hedgedoc-react-client`) +1. Clone this repo (e.g. `git clone https://github.com/hedgedoc/react-client.git hedgedoc-react-client`) 2. Go inside the repo (e.g. `cd hedgedoc-react-client`) 3. Run `yarn install` 4. Run `yarn build` diff --git a/cypress/integration/documentTitle.spec.ts b/cypress/integration/documentTitle.spec.ts index 68cebe899..27ede8c31 100644 --- a/cypress/integration/documentTitle.spec.ts +++ b/cypress/integration/documentTitle.spec.ts @@ -66,7 +66,7 @@ describe('Document Title', () => { it('just first heading without link syntax', () => { cy.get('.CodeMirror textarea') - .type(`# ${title} [link](https://codimd.org)`) + .type(`# ${title} [link](https://hedgedoc.org)`) cy.title().should('eq', `${title} link - HedgeDoc @ ${branding.name}`) }) diff --git a/cypress/integration/link.spec.ts b/cypress/integration/link.spec.ts index c001b85b1..a706b5252 100644 --- a/cypress/integration/link.spec.ts +++ b/cypress/integration/link.spec.ts @@ -115,8 +115,8 @@ describe('Links Intro', () => { describe('Powered By Links', () => { it('HedgeDoc', () => { - cy.get('a[href="https://codimd.org"]') - .checkExternalLink('https://codimd.org') + cy.get('a[href="https://hedgedoc.org"]') + .checkExternalLink('https://hedgedoc.org') }) it('Releases', () => { @@ -144,13 +144,13 @@ describe('Links Intro', () => { describe('Follow us Links', () => { it('Github', () => { - cy.get('a[href="https://github.com/codimd/"]') - .checkExternalLink('https://github.com/codimd/') + cy.get('a[href="https://github.com/hedgedoc/"]') + .checkExternalLink('https://github.com/hedgedoc/') }) it('Discourse', () => { - cy.get('a[href="https://community.codimd.org"]') - .checkExternalLink('https://community.codimd.org') + cy.get('a[href="https://community.hedgedoc.org"]') + .checkExternalLink('https://community.hedgedoc.org') }) it('Matrix', () => { @@ -159,13 +159,13 @@ describe('Links Intro', () => { }) it('Mastodon', () => { - cy.get('a[href="https://social.codimd.org"]') - .checkExternalLink('https://social.codimd.org') + cy.get('a[href="https://social.hedgedoc.org"]') + .checkExternalLink('https://social.hedgedoc.org') }) it('POEditor', () => { - cy.get('a[href="https://translate.codimd.org"]') - .checkExternalLink('https://translate.codimd.org') + cy.get('a[href="https://translate.hedgedoc.org"]') + .checkExternalLink('https://translate.hedgedoc.org') }) }) }) diff --git a/cypress/integration/toolbar.spec.ts b/cypress/integration/toolbar.spec.ts index 3d26579d5..42bd570bb 100644 --- a/cypress/integration/toolbar.spec.ts +++ b/cypress/integration/toolbar.spec.ts @@ -5,7 +5,7 @@ */ const testText = 'textText' -const testLink = 'http://codimd.org' +const testLink = 'http://hedgedoc.org' describe('Toolbar', () => { beforeEach(() => { diff --git a/public/api/v2/notes/features/revisions/1598389571 b/public/api/v2/notes/features/revisions/1598389571 index 6fa22b220..8492100d8 100644 --- a/public/api/v2/notes/features/revisions/1598389571 +++ b/public/api/v2/notes/features/revisions/1598389571 @@ -1,5 +1,5 @@ { - "content": "---\ntitle: Features\ndescription: Many features, such wow!\nrobots: noindex\ntags: codimd, demo, react\nopengraph:\n title: Features\n---\n# Embedding demo\n[TOC]\n\n## some plain text\n\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n\n## MathJax\nYou can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com](https:\/\/math.stackexchange.com\/):\n\nThe *Gamma function* satisfying $\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$ is via the Euler integral\n\n$$\nx = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\n$$\n\n$$\n\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.\n$$\n\n> More information about **LaTeX** mathematical expressions [here](https:\/\/meta.math.stackexchange.com\/questions\/5020\/mathjax-basic-tutorial-and-quick-reference).\n\n## Blockquote\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> [color=red] [name=John Doe] [time=2020-06-21 22:50]\n\n## Slideshare\n{%slideshare mazlan1\/internet-of-things-the-tip-of-an-iceberg %}\n\n## Gist\nhttps:\/\/gist.github.com\/schacon\/1\n\n## YouTube\nhttps:\/\/www.youtube.com\/watch?v=KgMpKsp23yY\n\n## Vimeo\nhttps:\/\/vimeo.com\/23237102\n\n## Asciinema\nhttps:\/\/asciinema.org\/a\/117928\n\n## PDF\n{%pdf https:\/\/www.w3.org\/WAI\/ER\/tests\/xhtml\/testfiles\/resources\/pdf\/dummy.pdf %}\n\n## Code highlighting\n```javascript=\n\nlet a = 1\n```\n\n## PlantUML\n```plantuml\n@startuml\nparticipant Alice\nparticipant \"The **Famous** Bob\" as Bob\n\nAlice -> Bob : hello --there--\n... Some ~~long delay~~ ...\nBob -> Alice : ok\nnote left\n This is **bold**\n This is \/\/italics\/\/\n This is \"\"monospaced\"\"\n This is --stroked--\n This is __underlined__\n This is ~~waved~~\nend note\n\nAlice -> Bob : A \/\/well formatted\/\/ message\nnote right of Alice\n This is displayed<\/size><\/back>\n __left of__ Alice.\nend note\nnote left of Bob\n This<\/u> is displayed<\/color>\n **left of<\/color> Alice<\/strike> Bob**.\nend note\nnote over Alice, Bob\n This is hosted<\/w> by \nend note\n@enduml\n```\n\n", + "content": "---\ntitle: Features\ndescription: Many features, such wow!\nrobots: noindex\ntags: hedgedoc, demo, react\nopengraph:\n title: Features\n---\n# Embedding demo\n[TOC]\n\n## some plain text\n\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n\n## MathJax\nYou can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com](https:\/\/math.stackexchange.com\/):\n\nThe *Gamma function* satisfying $\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$ is via the Euler integral\n\n$$\nx = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\n$$\n\n$$\n\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.\n$$\n\n> More information about **LaTeX** mathematical expressions [here](https:\/\/meta.math.stackexchange.com\/questions\/5020\/mathjax-basic-tutorial-and-quick-reference).\n\n## Blockquote\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> [color=red] [name=John Doe] [time=2020-06-21 22:50]\n\n## Slideshare\n{%slideshare mazlan1\/internet-of-things-the-tip-of-an-iceberg %}\n\n## Gist\nhttps:\/\/gist.github.com\/schacon\/1\n\n## YouTube\nhttps:\/\/www.youtube.com\/watch?v=KgMpKsp23yY\n\n## Vimeo\nhttps:\/\/vimeo.com\/23237102\n\n## Asciinema\nhttps:\/\/asciinema.org\/a\/117928\n\n## PDF\n{%pdf https:\/\/www.w3.org\/WAI\/ER\/tests\/xhtml\/testfiles\/resources\/pdf\/dummy.pdf %}\n\n## Code highlighting\n```javascript=\n\nlet a = 1\n```\n\n## PlantUML\n```plantuml\n@startuml\nparticipant Alice\nparticipant \"The **Famous** Bob\" as Bob\n\nAlice -> Bob : hello --there--\n... Some ~~long delay~~ ...\nBob -> Alice : ok\nnote left\n This is **bold**\n This is \/\/italics\/\/\n This is \"\"monospaced\"\"\n This is --stroked--\n This is __underlined__\n This is ~~waved~~\nend note\n\nAlice -> Bob : A \/\/well formatted\/\/ message\nnote right of Alice\n This is displayed<\/size><\/back>\n __left of__ Alice.\nend note\nnote left of Bob\n This<\/u> is displayed<\/color>\n **left of<\/color> Alice<\/strike> Bob**.\nend note\nnote over Alice, Bob\n This is hosted<\/w> by \nend note\n@enduml\n```\n\n", "timestamp": 1598389571, "authors": ["mrdrogdrog", "dermolly", "emcrx"] } diff --git a/public/api/v2/notes/features/revisions/1598390307 b/public/api/v2/notes/features/revisions/1598390307 index 6b814a8d5..9a0ef069a 100644 --- a/public/api/v2/notes/features/revisions/1598390307 +++ b/public/api/v2/notes/features/revisions/1598390307 @@ -1,5 +1,5 @@ { - "content": "---\ntitle: Features\ndescription: Many more features, such wow!\nrobots: noindex\ntags: codimd, demo, react\nopengraph:\n title: Features\n---\n# Embedding demo\n[TOC]\n\n## some plain text\n\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magnus aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetezur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam _et_ justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n\n## MathJax\nYou can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com](https:\/\/math.stackexchange.com\/):\n\nThe *Gamma function* satisfying $\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$ is via the Euler integral\n\n$$\nx = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\n$$\n\n$$\n\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.\n$$\n\n> More information about **LaTeX** mathematical expressions [here](https:\/\/meta.math.stackexchange.com\/questions\/5020\/mathjax-basic-tutorial-and-quick-reference).\n\n## Blockquote\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> [color=red] [name=John Doe] [time=2020-06-21 22:50]\n\n## Slideshare\n{%slideshare mazlan1\/internet-of-things-the-tip-of-an-iceberg %}\n\n## Gist\nhttps:\/\/gist.github.com\/schacon\/1\n\n## YouTube\nhttps:\/\/www.youtube.com\/watch?v=zHAIuE5BQWk\n\n## Vimeo\nhttps:\/\/vimeo.com\/23237102\n\n## Asciinema\nhttps:\/\/asciinema.org\/a\/117928\n\n## PDF\n{%pdf https:\/\/www.w3.org\/WAI\/ER\/tests\/xhtml\/testfiles\/resources\/pdf\/dummy.pdf %}\n\n## Code highlighting\n```javascript=\n\nlet a = 1\n```\n\n## PlantUML\n```plantuml\n@startuml\nparticipant Alice\nparticipant \"The **Famous** Bob\" as Bob\n\nAlice -> Bob : bye --there--\n... Some ~~long delay~~ ...\nBob -> Alice : ok\nnote left\n This is **bold**\n This is \/\/italics\/\/\n This is \"\"monospaced\"\"\n This is --stroked--\n This is __underlined__\n This is ~~waved~~\nend note\n\nAlice -> Bob : A \/\/well formatted\/\/ message\nnote right of Alice\n This is displayed<\/size><\/back>\n __left of__ Alice.\nend note\nnote left of Bob\n This<\/u> is displayed<\/color>\n **left of<\/color> Alice<\/strike> Bob**.\nend note\nnote over Alice, Bob\n This is hosted<\/w> by \nend note\n@enduml\n```\n\n", + "content": "---\ntitle: Features\ndescription: Many more features, such wow!\nrobots: noindex\ntags: hedgedoc, demo, react\nopengraph:\n title: Features\n---\n# Embedding demo\n[TOC]\n\n## some plain text\n\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magnus aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetezur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam _et_ justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n\n## MathJax\nYou can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com](https:\/\/math.stackexchange.com\/):\n\nThe *Gamma function* satisfying $\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$ is via the Euler integral\n\n$$\nx = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.\n$$\n\n$$\n\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.\n$$\n\n> More information about **LaTeX** mathematical expressions [here](https:\/\/meta.math.stackexchange.com\/questions\/5020\/mathjax-basic-tutorial-and-quick-reference).\n\n## Blockquote\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n> [color=red] [name=John Doe] [time=2020-06-21 22:50]\n\n## Slideshare\n{%slideshare mazlan1\/internet-of-things-the-tip-of-an-iceberg %}\n\n## Gist\nhttps:\/\/gist.github.com\/schacon\/1\n\n## YouTube\nhttps:\/\/www.youtube.com\/watch?v=zHAIuE5BQWk\n\n## Vimeo\nhttps:\/\/vimeo.com\/23237102\n\n## Asciinema\nhttps:\/\/asciinema.org\/a\/117928\n\n## PDF\n{%pdf https:\/\/www.w3.org\/WAI\/ER\/tests\/xhtml\/testfiles\/resources\/pdf\/dummy.pdf %}\n\n## Code highlighting\n```javascript=\n\nlet a = 1\n```\n\n## PlantUML\n```plantuml\n@startuml\nparticipant Alice\nparticipant \"The **Famous** Bob\" as Bob\n\nAlice -> Bob : bye --there--\n... Some ~~long delay~~ ...\nBob -> Alice : ok\nnote left\n This is **bold**\n This is \/\/italics\/\/\n This is \"\"monospaced\"\"\n This is --stroked--\n This is __underlined__\n This is ~~waved~~\nend note\n\nAlice -> Bob : A \/\/well formatted\/\/ message\nnote right of Alice\n This is displayed<\/size><\/back>\n __left of__ Alice.\nend note\nnote left of Bob\n This<\/u> is displayed<\/color>\n **left of<\/color> Alice<\/strike> Bob**.\nend note\nnote over Alice, Bob\n This is hosted<\/w> by \nend note\n@enduml\n```\n\n", "timestamp": 1598390307, "authors": ["mrdrogdrog", "dermolly"] } diff --git a/src/links.json b/src/links.json index c751cac6a..8f16d10ee 100644 --- a/src/links.json +++ b/src/links.json @@ -1,9 +1,9 @@ { "chat": "https://matrix.to/#/#hedgedoc:matrix.org", - "community": "https://community.codimd.org", - "faq": "https://community.codimd.org/t/frequently-asked-questions/190", - "githubOrg": "https://github.com/codimd/", - "mastodon": "https://social.codimd.org", - "translate": "https://translate.codimd.org", - "webpage": "https://codimd.org" + "community": "https://community.hedgedoc.org", + "faq": "https://hedgedoc.org/faq/", + "githubOrg": "https://github.com/hedgedoc/", + "mastodon": "https://social.hedgedoc.org", + "translate": "https://translate.hedgedoc.org", + "webpage": "https://hedgedoc.org" }