1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00
Commit Graph

630 Commits

Author SHA1 Message Date
Mateusz Kwasniewski
79b34121a4
feat: openapi schema for user admin (#4146) 2023-07-06 08:24:46 +02:00
Thomas Heartman
9c7eadded0
docs: switch order of api doc sidebar items; put legacy docs under legacy header (#4135)
Also adds a caution admonition to the legacy doc index page
2023-07-04 14:19:34 +02:00
Gastón Fournier
13def9a3a3
docs: Documentation around metrics API (#4134)
## About the changes
Mark some legacy endpoints as deprecated (they are long deprecated but
documentation was out of date) and fix some of the URLs
2023-07-04 11:16:05 +02:00
Mateusz Kwasniewski
d3b3652984
docs: not on latest unleash with openapi enabeld (#4024) 2023-07-03 13:48:46 +02:00
John Farrar
65995b238a
Update index.md, 2 grammar updates (#4086)
Included a library from the ColdBox Open Source team.

More detail here if needed.
https://forgebox.io/view/unleashsdk

I cheated on the grammar. Grammarly helps me out there.
2023-06-29 10:02:27 +00:00
Even Brenden
be1e63508a
docs: Add reference to Haskell SDK (#3752)
Hi! Adding a link to a some-batteries-included Haskell Unleash SDK. It
uses a "core" library underneath that adheres to your [Client
Specifications](https://github.com/Unleash/client-specification). Could
add a link to that too, but from what I can tell, it's overlapped by
your Yggdrasil project. We have been using the SDK for a handful of
months now and we're happy with how it works. Hope you'll have it :)

Co-authored-by: Even Brenden <evenbrenden@users.noreply.github.com>
2023-06-27 08:08:04 +01:00
andreas-unleash
7a5c77376a
chore: Document default strategy (#4010)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->
Documenting Default Strategy 
## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #
[1-1023](https://linear.app/unleash/issue/1-1023/document-strategy-improvements)

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-06-22 15:42:07 +00:00
Simon Hornby
8443eb2649
docs: add note about how to handle more than 150 groups in Azure SSO (#4044) 2023-06-22 09:18:19 +02:00
Simon Hornby
8a8116d13b
docs: document how and why we collect data when using Unleash (#4020) 2023-06-21 09:17:35 +02:00
Christopher Kolstad
fa081e9014
task: Make keepalive configurable via an environment variable (#4015)
As requested in
[Linear](https://linear.app/unleash/issue/2-1147/unleash-cloud-make-keepalive-configurable)
this PR makes the serverKeepAliveTimeout configurable via the
SERVER_KEEPALIVE_TIMEOUT environment variable. This was already
configurable when starting Unleash programmatically, but it's nice to
have as an env variable as well
2023-06-20 12:10:05 +02:00
Mateusz Kwasniewski
2356b5774b
docs: encourage feedback for sync (#4003) 2023-06-19 14:32:57 +02:00
yuri-karelics
331f0f27fa
docs: angular unleash proxy client (#3897)
List of community unleash proxy clients extended with new Angular
library

## About the changes
Relates to
[discussion](https://github.com/orgs/Unleash/discussions/3621)
2023-06-16 17:54:37 +00:00
Jaanus Sellin
41370be591
feat: update predefined strategies tooltip (#3964) 2023-06-14 08:46:15 +03:00
andreas-unleash
8daab71219
Docs: update stickiness docs (#3928)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-06-13 11:26:12 +03:00
Nuno Góis
6b4efb9a9d
docs: ADR: Separation of Request and Response schemas (#3869)
https://linear.app/unleash/issue/2-943/adr-separate-request-and-response-types-in-apis

During the updating of our OpenAPI documentation, we've seen several
times that our schemas are either way too wide for a response or way to
strict for a request. This is usually due to us reusing the same schema
for both request and response. We should write an ADR where we reason
about the usefulness of code duplication and keeping separate response
and request schemas.

Based on our needs, this PR adds my suggested ADR.

---------

Co-authored-by: Simon Hornby <liquidwicked64@gmail.com>
2023-06-05 11:41:34 +01:00
Thomas Heartman
6951f6b877
docs: remove "docs under restructuring note" (#3864)
They've been thoroughly restructured now. It's time to let this
admonition go 🕊️
2023-05-25 10:12:38 +02:00
Sebastian Bury
282de2477f
docs: azure sso guide (#3431)
## About the changes
Added Azure SSO SAML 2.0 instructions based off of testing/user
feedback.

<!-- Does it close an issue? Multiple? -->
Not on GH, internally yes

### Important files
website>docs>how-to>how-to-add-sso-azure-saml.md
website>docs>static>img (added images for docs)

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: sighphyre <liquidwicked64@gmail.com>
2023-05-25 08:37:39 +02:00
Mateusz Kwasniewski
78715e3374
docs: maintanance mode impact (#3858) 2023-05-25 08:28:05 +02:00
Simon Hornby
6067888534
docs: extend group documentation to include information on setting root roles (#3696)
This adds documentation to the RBAC section on how to use root roles on
groups and updates a few screenshots for the group pages.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-05-17 08:59:35 +02:00
Nuno Góis
a9c24e4262
chore: simplify package scripts (#3736)
# Simplify package scripts

This PR's purpose is to raise a discussion surrounding our current
package scripts.

It includes some suggestions that aim to simplify the scripts and
hopefully bring a much more straightforward approach to developing and
contributing to Unleash.

Building (prod) should only happen **explicitly** and when needed.

## Before PR (current behavior)

- Clone the project;
- Open 2 terminals: One for `unleash` and another for
`unleash/frontend`;
- On `unleash`: 
  - Run `yarn` (which will also build, for some reason?);
  - Run `yarn start:dev` to start backend in dev mode (`tsc-watch`);
- On `unleash/frontend`:
  - Run `yarn` (which will also build, for some reason?);
  - Run `yarn start` to start frontend in dev mode (`vite`);

So it seems to me like we build unnecessarily every time we install
dependencies. Neither dev scripts need to build the project, as backend
uses `tsc-watch` and frontend uses `vite`. I'm unsure why this is the
case, as building can take a very long time.


![image](https://github.com/Unleash/unleash/assets/14320932/5ecb7df1-e5b4-4d70-ba7e-97119f5d1116)

There's also some complexity in the way we need to split the terminal to
`cd` into `frontend` and treat it as a different project. The fact that
we have different script names is also confusing (`yarn start`, `yarn
start:dev`, etc).

## After PR

- Clone the project;
- Run `yarn` to install all dependencies;
- Run `yarn dev` to get started developing Unleash;

Running `yarn` should take care of everything needed to start
developing. This includes installing dependencies for frontend as well.
It should not build projects if we are not being explicit about it,
especially since we don't need to build them at this stage.


![image](https://github.com/Unleash/unleash/assets/14320932/614e42fc-3467-432f-91fc-624b1b35c7c1)

Running `yarn dev` should start the project in dev mode. This means
running both projects in `dev` mode, which for `backend` means running
`tsc-watch` and for `frontend` means running `vite`.

Here this PR attempts to provide a better DX by using
[concurrently](https://www.npmjs.com/package/concurrently) and
[wait-on](https://www.npmjs.com/package/wait-on) - This means both tasks
are ran simultaneously, stdout is labeled accordingly, and are stopped
together. It also means that `frontend` waits for `backend` to be
serving at `4242` before starting, since `frontend` starts pretty much
immediately with `vite` and `backend` takes a bit longer. Of course,
when the `backend` is hot-reloading you may still find some
`ECONNREFUSED`s on `frontend` stdout while it recompiles.


![image](https://github.com/Unleash/unleash/assets/14320932/8bde8ee2-3cad-4e3f-a0db-9eed60cfb04d)

No more splitting your terminal and treating `frontend` as a separate
project.

## Discussion points

Maybe there's a better alternative to `tsc-watch`? I briefly explored
some alternatives and while they had a much faster starting speed,
hot-reload was sometimes slower. IMO we should aspire to run
`src/server-dev.ts` directly and only compile when needed.

Running `dev:backend` still serves a version of the frontend (at 4242).
**Why? Can we remove that behavior?**
I can't imagine a scenario in dev where we wouldn't want to run the
latest version of the frontend with `vite`.

~~**Note:** This PR removes all other out-of-scope scripts to focus on
this revamp. If we decide to merge it, we should evaluate what other
existing scripts we still want to include. May be a good opportunity to
clean up unused ones and only include the ones we really use. This
includes scripts that our GH actions rely on.~~

**Update:** In an effort to minimize impact surface of this PR and make
it a bit more ready for merging:
- It updates some docs in
2a4ff805e8
and
1bbc488251
to reflect our new simplified flow;
- It includes the old package scripts for now in
039bc04699;
- It updates some of our GH actions to reflect the new scripts in
7782cb9b12;

Given its current status I'll promote the PR to "ready for review". 

I still think we should have a second look at our existing scripts and
GH actions to see what we really need and/or should adapt, but it should
be a team effort so we have a broader context. Maybe on a follow-up PR.

Does this require any changes to related projects (e.g. Enterprise)?

---------

Co-authored-by: Gastón Fournier <gaston@getunleash.io>
2023-05-12 11:23:22 +01:00
Christopher Kolstad
191e40c95e
docs: update segment limits (#3733)
### What
Since 3ed4aeba5c, we've updated the
segment limits and added separate limits for pro and enterprise. This PR
updates the docs with the new limits.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-05-11 08:24:14 +00:00
James King
47fcc59850
docs: Fix typo in ADR (#3691) 2023-05-10 13:58:51 +00:00
Gastón Fournier
8023fef711
docs: update to node 18 (#3689)
## About the changes
Update documentation to the minimum version of node. This was already
updated in other parts of the documentation

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.io>
2023-05-05 09:17:34 +02:00
Simon Hornby
f172c8851f
docs: update docs to reflect that google SSO is removed (#3626)
Updates docs to point out that Google SSO is removed and how to
temporarily bring it back
2023-05-02 11:53:11 +02:00
Mateusz Kwasniewski
10fee99467
Update how-to-synchronize-unleash-instances.md 2023-04-28 13:28:19 +02:00
Mateusz Kwasniewski
96e3e43188
docs: unleash instance synchronization (#3652) 2023-04-28 13:23:50 +02:00
Thomas Heartman
b815fa1a9d
docs: add migration guide entry for v4 -> v5 (#3650)
This lists the breaking changes between the versions to make it easier
(and safer) for users to upgrade
2023-04-28 13:10:30 +02:00
Christopher Kolstad
1fdf68eeec
task: removes deprecated feature api (#3609)
### What
We've had this marked as deprecated through our v4, this PR removes it.

### Worth noting
This updates the deprecation notices with removal notices in the
documentation as well.

### Considerations
The tags API is still located under
/api/admin/features/{featureName}/tags. It should be moved to
/api/admin/projects/{project}/features/{featureName}/tags. I vote we do
that in a separate PR, we'd probably also need to deprecate the existing
tags endpoints for v5 and remove in v6. We could use 308s to signify
that they are moved.

---------

Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-04-26 10:45:00 +02:00
Mateusz Kwasniewski
7eda493e8e
docs: skip CR also works in the UI (#3518) 2023-04-26 08:49:34 +02:00
Jaanus Sellin
28f61e05ff
feat: fix csp headers for feedback form (#3617)
Fix feedback form failing due to missing csp headers
2023-04-25 13:40:55 +03:00
Gastón Fournier
a53457f6d0
docs: removal of event hook in v5 (#3586)
## About the changes
Make it explicit that eventHook is no longer an option in v5, the
migration should be to
https://docs.getunleash.io/reference/addons/webhook which is already
linked in the docs since v4
2023-04-21 14:33:09 +02:00
Gastón Fournier
29907d8d9f
doc: update link to new import/export (#3584)
## About the changes
Add correct link to new import/export
2023-04-21 08:49:05 +00:00
andreas-unleash
b38a0c911d
chore: add mode and defaultStickiness to project docs (#3487)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->
Adds `mode` and `defaultStickiness` to the project form.
Adds a new img

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-04-21 07:32:42 +00:00
Gastón Fournier
b593bdd404
docs: deprecation notice on state api (#3561)
## About the changes
Update documentation about the deprecation of state API.

Related to https://github.com/Unleash/unleash/issues/1265
2023-04-21 09:19:22 +02:00
Gastón Fournier
0e80484068
docs: update documentation and dev server use of passord (#3564)
## About the changes
Update `passord` documentation with `password`. Note this was not a typo
but just Norwegian:
https://dictionary.cambridge.org/dictionary/english-norwegian/password
```shell
grep passord * -R -l | grep -v .git | grep -v dist | grep -v v3 | xargs sed -i 's/passord/password/g'
```
The script above avoids updating v3 because of legacy reasons

Related to #1265
2023-04-19 13:29:18 +02:00
David Leek
bbfb88122b
docs: jira cloud documentation (#3494)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->

New PR using correct prefixes

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

Adds documentation to the docs website for the new Jira Cloud plugin.
Couple of pieces on install page are missing due to the nature of having
to have the docs before we can start the review process after which
we'll get the final details on how/where to install/from etc.

Also a couple of pending fixes that might impact screenshots/warrant new
ones made

![Skjermbilde 2023-04-06 kl 12 34
40](https://user-images.githubusercontent.com/707867/230353148-98c5915f-0d97-4cba-bec5-33d46503448d.png)
![Skjermbilde 2023-04-06 kl 12 34
49](https://user-images.githubusercontent.com/707867/230353157-e9dd3f57-e6a3-4e9b-a966-ebdfcdaf2581.png)

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#2952

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->

- website/docs/reference/integrations/jira-cloud-plugin-installation.md
- website/docs/reference/integrations/jira-cloud-plugin-usage.md

## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->
Very open to improvements on wording and tips on standards used in
screenshots

---------

Co-authored-by: Simon Hornby <liquidwicked64@gmail.com>
Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-04-17 15:16:01 +02:00
Thomas Heartman
0a9df052a6
docs: fix broken links (#3533)
Fixes broken links that were mistakenly committed to main.
2023-04-17 14:10:31 +02:00
Thomas Heartman
222f34f43d
docs: add large segments explainer (#3441)
This PR adds an explainer document about using large/complex
constraints, inspired by the Unleash and Redis repo.

The intent is to create a comprehensive and understandable explanation
as to why we don't recommend you do this, and also to offer alternative
solutions for the same problem.

---------

Co-authored-by: Simon Hornby <liquidwicked64@gmail.com>
2023-04-14 12:59:07 +00:00
andreas-unleash
be4de289a1
fix: project api token docs (#3485)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->
[Previous PR (has the
comments)](https://github.com/Unleash/unleash/pull/3405)

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2023-04-13 11:08:54 +03:00
Mateusz Kwasniewski
536230a364
docs: adr for db changes (#3439) 2023-04-11 14:16:40 +02:00
Ivan Lee
e45a953cd1
Chore: Update Python SDK compatibility. (#3474)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

Update to Python compatibility table. 

* Impression events supported in v5.6.0.
([Docs](https://docs.getunleash.io/unleash-client-python/eventcallbacks.html))
* Bootstrapping from files and custom boostrapping has been supported
since v5.2.0.
([Docs](https://docs.getunleash.io/unleash-client-python/filecache.html)
&
[Docs](https://docs.getunleash.io/unleash-client-python/customcache.html))

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->
2023-04-07 10:34:38 +02:00
Thomas Heartman
d18b04de72
docs: fix typo
This change fixes two typos in the import export service:
- Unleahs -> Unleash
- API's -> APIs
2023-04-04 07:50:25 +02:00
Thomas Heartman
1ab3a338c9
docs: point link to unleash/unleash instead of unleash-docker (#3434)
## why

This link used to post to the now-outdated unleash-docker repo. They
should instead go directly to the unleash repo now.
2023-03-31 12:42:34 +02:00
Mateusz Kwasniewski
dc34fe1944
docs: Update api-tokens-and-client-keys.mdx (#3418) 2023-03-29 13:53:57 +02:00
andreas-unleash
5c27153e50
docs: Project api token (#3405)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
2023-03-29 11:39:37 +03:00
Jaanus Sellin
e9271d8eec
fix: notifcations word break (#3403) 2023-03-28 13:27:47 +03:00
Mateusz Kwasniewski
585df244e5
docs: import export for project/env (#3369) 2023-03-28 11:12:35 +02:00
Mateusz Kwasniewski
d4b4866552
docs: notifications (#3361) 2023-03-24 10:37:25 +01:00
Mateusz Kwasniewski
e03307e286
docs: Project collaboration mode docs (#3360) 2023-03-22 13:13:56 +01:00
Thomas Heartman
335374aa6d
docs(a11y): update syntax highlighting theme to fix contrast issues (#3341)
This PR changes the syntax highlighting theme we use in the docs. The
reason for the change is that the previous theme we used didn't have
sufficient color contrast between its comment strings and its
background.

## Options

I decided to use the Oceanic Next color theme that is included with
docusaurus. Looking through, the only other dark theme that also passed
AA contrast checks was VS Dark. The reason I picked Oceanic over VS Dark
is simply that I like it better.

For demonstration, here's what the Oceanic theme looks like:

![image](https://user-images.githubusercontent.com/17786332/225867069-f0d9c721-8927-4e70-984e-b9160992811b.png)

And here's the VS Dark theme:

![image](https://user-images.githubusercontent.com/17786332/225867089-6dac9cb2-6ebb-4b9e-ae5c-3be9956cbf60.png)


## Bonus change

The PR also includes a fix to render a pricing admonition correctly.
It's not related to the PR, but I noticed it rendered incorrectly while
I was working on it.
2023-03-17 12:19:13 +02:00