docs: change vitepress with astro's starlight
- change language keys to kebab-case - add new languages to docs: ca, de, es, sr-latn, zh-hans
|
|
@ -3,10 +3,11 @@
|
|||
"projectOwner": "adaures",
|
||||
"repoType": "gitlab",
|
||||
"repoHost": "https://code.castopod.org",
|
||||
"files": ["README.md", "docs/src/index.md"],
|
||||
"files": ["README.md", "docs/src/content/docs/en/index.mdx"],
|
||||
"imageSize": 100,
|
||||
"commit": false,
|
||||
"contributorsPerLine": 7,
|
||||
"wrapperTemplate": "\n<table class=\"all-contributors-table\">\n <tbody><%= bodyContent %> </tbody>\n<%= tableFooterContent %></table>\n\n",
|
||||
"contributors": [
|
||||
{
|
||||
"login": "yassinedoghri",
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
}
|
||||
},
|
||||
"extensions": [
|
||||
"astro-build.astro-vscode",
|
||||
"bmewburn.vscode-intelephense-client",
|
||||
"bradlc.vscode-tailwindcss",
|
||||
"breezelin.phpstan",
|
||||
|
|
@ -49,6 +50,7 @@
|
|||
"runem.lit-plugin",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"stylelint.vscode-stylelint",
|
||||
"unifiedjs.vscode-mdx",
|
||||
"wayou.vscode-todo-highlight",
|
||||
"yzhang.markdown-all-in-one"
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,3 @@
|
|||
---
|
||||
title: Development setup
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Setup your development environment
|
||||
|
||||
## Introduction
|
||||
|
|
@ -56,7 +51,7 @@ to help you kickstart your contribution.
|
|||
analytics.salt="DEV_ANALYTICS_SALT"
|
||||
|
||||
cache.handler="redis"
|
||||
cache.redis.host = "redis"
|
||||
cache.redis.host="redis"
|
||||
|
||||
# You may not want to use redis as your cache handler
|
||||
# Comment/remove the two lines above and uncomment
|
||||
|
|
@ -78,15 +73,16 @@ to help you kickstart your contribution.
|
|||
#media.s3.pathStyleEndpoint=true
|
||||
```
|
||||
|
||||
> _NB._ You can tweak your environment by setting more environment variables
|
||||
> in your custom `.env` file. See the `env` for examples or the
|
||||
> [!NOTE]
|
||||
> You can tweak your environment by setting more environment variables in
|
||||
> your custom `.env` file. See the `env` for examples or the
|
||||
> [CodeIgniter4 User Guide](https://codeigniter.com/user_guide/index.html)
|
||||
> for more info.
|
||||
|
||||
3. (for docker desktop) Add the repository you've cloned to docker desktop's
|
||||
`Settings` > `Resources` > `File Sharing`
|
||||
|
||||
### 2. (recommended) Develop inside the app Container with VSCode
|
||||
### 2. (recommended) Develop inside the app container with VSCode
|
||||
|
||||
If you're working in VSCode, you can take advantage of the `.devcontainer/`
|
||||
folder. It defines a development environment (dev container) with preinstalled
|
||||
|
|
@ -137,7 +133,7 @@ required services will be loaded automagically! 🪄
|
|||
```
|
||||
|
||||
For more info, see
|
||||
[VSCode Remote Containers](https://code.visualstudio.com/docs/remote/containers)
|
||||
[Developing inside a Container](https://code.visualstudio.com/docs/devcontainers/containers)
|
||||
|
||||
### 3. Start hacking
|
||||
|
||||
|
|
@ -180,7 +176,7 @@ You do not wish to use the VSCode devcontainer? No problem!
|
|||
|
||||
```
|
||||
|
||||
> The `docker-compose up -d` command will boot 4 containers in the
|
||||
> The `docker-compose up -d` command will boot 5 containers in the
|
||||
> background:
|
||||
>
|
||||
> - `castopod_app`: a php based container with Castopod requirements
|
||||
|
|
@ -191,6 +187,7 @@ You do not wish to use the VSCode devcontainer? No problem!
|
|||
> persistent data
|
||||
> - `castopod_phpmyadmin`: a phpmyadmin server to visualize the mariadb
|
||||
> database.
|
||||
> - `castopod_s3`: a mock s3 server to work on the s3 fileManager
|
||||
|
||||
2. Run any command inside the containers by prefixing them with
|
||||
`docker-compose run --rm app`:
|
||||
|
|
@ -221,15 +218,12 @@ You do not wish to use the VSCode devcontainer? No problem!
|
|||
composer install
|
||||
```
|
||||
|
||||
::: info Note
|
||||
|
||||
The php dependencies aren't included in the repository. Composer will check
|
||||
the `composer.json` and `composer.lock` files to download the packages with
|
||||
the right versions. The dependencies will live under the `vendor/` folder.
|
||||
For more info, check out the
|
||||
[Composer documentation](https://getcomposer.org/doc/).
|
||||
|
||||
:::
|
||||
> [!NOTE]
|
||||
> The php dependencies aren't included in the repository. Composer will check
|
||||
> the `composer.json` and `composer.lock` files to download the packages with
|
||||
> the right versions. The dependencies will live under the `vendor/` folder.
|
||||
> For more info, check out the
|
||||
> [Composer documentation](https://getcomposer.org/doc/).
|
||||
|
||||
2. Install javascript dependencies with [pnpm](https://pnpm.io/)
|
||||
|
||||
|
|
@ -237,14 +231,12 @@ You do not wish to use the VSCode devcontainer? No problem!
|
|||
pnpm install
|
||||
```
|
||||
|
||||
::: info Note
|
||||
|
||||
The javascript dependencies aren't included in the repository. Pnpm will
|
||||
check the `package.json` and `pnpm-lock.yaml` files to download the packages
|
||||
with the right versions. The dependencies will live under the `node_module`
|
||||
folder. For more info, check out the [PNPM documentation](https://pnpm.io/).
|
||||
|
||||
:::
|
||||
> [!NOTE]
|
||||
> The javascript dependencies aren't included in the repository. Pnpm will
|
||||
> check the `package.json` and `pnpm-lock.yaml` files to download the
|
||||
> packages with the right versions. The dependencies will live under the
|
||||
> `node_module` folder. For more info, check out the
|
||||
> [PNPM documentation](https://pnpm.io/motivation).
|
||||
|
||||
3. Generate static assets:
|
||||
|
||||
|
|
@ -257,21 +249,15 @@ You do not wish to use the VSCode devcontainer? No problem!
|
|||
pnpm run build:svg
|
||||
```
|
||||
|
||||
::: info Note
|
||||
|
||||
The static assets generated live under the `public/assets` folder, it
|
||||
includes javascript, styles, images, fonts, icons and svg files.
|
||||
|
||||
:::
|
||||
> [!NOTE]
|
||||
> The static assets generated live under the `public/assets` folder, it
|
||||
> includes javascript, styles, images, fonts, icons and svg files.
|
||||
|
||||
### Initialize and populate database
|
||||
|
||||
::: tip Tip
|
||||
|
||||
You may skip this section if you go through the install wizard (go to
|
||||
`/cp-install`).
|
||||
|
||||
:::
|
||||
> [!TIP]
|
||||
> You may skip this section if you go through the install wizard (go to
|
||||
> `/cp-install`).
|
||||
|
||||
1. Build the database with the migrate command:
|
||||
|
||||
|
|
@ -377,15 +363,19 @@ more insights.
|
|||
|
||||
## Known issues
|
||||
|
||||
### Allocation failed - JavaScript heap out of memory
|
||||
|
||||
This happens when running `pnpm install`.
|
||||
|
||||
👉 By default, docker might not have access to enough RAM. Allocate more memory
|
||||
and run `pnpm install` again.
|
||||
|
||||
### (Linux) Files created inside container are attributed to root locally
|
||||
|
||||
You may use Linux user namespaces to fix this on your machine:
|
||||
|
||||
::: info Note
|
||||
|
||||
Replace "username" with your local username
|
||||
|
||||
:::
|
||||
> [!NOTE]
|
||||
> Replace "username" with your local username
|
||||
|
||||
1. Go to `/etc/docker/daemon.json` and add:
|
||||
|
||||
169
CONTRIBUTING.md
|
|
@ -1,4 +1,167 @@
|
|||
# Contributing guidelines
|
||||
# Contributing to Castopod
|
||||
|
||||
You may find the contributing guidelines in the
|
||||
[Castopod documentation website](https://docs.castopod.org/contributing/guidelines.html).
|
||||
Love Castopod and want to help? Thanks so much, there's something to do for
|
||||
everybody!
|
||||
|
||||
> [!NOTE]
|
||||
> Castopod follows the [all contributors](https://allcontributors.org/)
|
||||
> specification in an effort to **recognize any kind of contribution**, not just
|
||||
> code!
|
||||
> If you've made a contribution and do not appear in the
|
||||
> [contributors](../index.md#contributors-✨) list, please
|
||||
> [let us know](../index.md#contact) so we can correct our mistake! 🙂
|
||||
|
||||
Please take a moment to review this document in order to make the contribution
|
||||
process easy and effective for everyone involved.
|
||||
|
||||
Following these guidelines helps to communicate that you respect the time of the
|
||||
developers managing and developing this open source project. In return, they
|
||||
should reciprocate that respect in addressing your issue or assessing patches
|
||||
and features.
|
||||
|
||||
## Translating Castopod
|
||||
|
||||
We use [Crowdin](https://translate.castopod.org/) to manage translation files
|
||||
for [Castopod](https://code.castopod.org/), the
|
||||
[documentation](https://docs.castopod.org/) and the
|
||||
[landing](https://castopod.org/) websites.
|
||||
|
||||
Whether you'd like to correct a translation error, validate new translations or
|
||||
include your language to Castopod, head into the
|
||||
[crowdin project](https://translate.castopod.org/) to get started.
|
||||
|
||||
> [!NOTE]
|
||||
> To prevent degrading user experience, new languages are included to Castopod
|
||||
> when they reach a certain threshold (~90%).
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker](https://code.castopod.org/adaures/castopod/-/issues) is the
|
||||
preferred channel for [bug reports](#bug-reports),
|
||||
[features requests](#feature-requests) and
|
||||
[submitting pull requests](#pull-requests).
|
||||
|
||||
## ⚠️ Security issues and vulnerabilities
|
||||
|
||||
If you encounter any security issue or vulnerability in the Castopod source,
|
||||
please contact us directly by email at
|
||||
[security@castopod.org](mailto:security@castopod.org)
|
||||
|
||||
## Bug reports
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
||||
Good bug reports are extremely helpful - thank you!
|
||||
|
||||
Guidelines for bug reports:
|
||||
|
||||
1. **Use the issue search** — check if the issue has already been
|
||||
reported.
|
||||
|
||||
2. **Check if the issue has been fixed** — try to reproduce it using the
|
||||
latest `main` branch in the repository.
|
||||
|
||||
3. **Isolate the problem** — ideally create a
|
||||
[reduced test case](https://css-tricks.com/reduced-test-cases/) and a live
|
||||
example.
|
||||
|
||||
A good bug report shouldn't leave others needing to chase you up for more
|
||||
information. Please try to be as detailed as possible in your report. What is
|
||||
your environment? What steps will reproduce the issue? What browser(s) and OS
|
||||
experience the problem? What would you expect to be the outcome? All these
|
||||
details will help people to fix any potential bugs.
|
||||
|
||||
> [!NOTE]
|
||||
> [Issue templates](https://docs.gitlab.com/ee/user/project/description_templates.html#using-the-templates)
|
||||
> have been created for this project. You may use them to help you follow those
|
||||
> guidelines.
|
||||
|
||||
## Feature requests
|
||||
|
||||
Feature requests are welcome. But take a moment to find out whether your idea
|
||||
fits with the scope and aims of the project. It's up to _you_ to make a strong
|
||||
case to convince the project's developers of the merits of this feature. Please
|
||||
provide as much detail and context as possible.
|
||||
|
||||
## Pull requests
|
||||
|
||||
Good pull requests - patches, improvements, new features - are a fantastic help.
|
||||
They should remain focused in scope and avoid containing unrelated commits.
|
||||
|
||||
**Please ask first** before embarking on any significant pull request (e.g.
|
||||
implementing features, refactoring code, porting to a different language),
|
||||
otherwise you risk spending a lot of time working on something that the
|
||||
project's developers might not want to merge into the project.
|
||||
|
||||
Please adhere to the coding conventions used throughout a project (indentation,
|
||||
accurate comments, etc.) and any other requirements (such as test coverage).
|
||||
|
||||
Adhering to the following process is the best way to get your work included in
|
||||
the project:
|
||||
|
||||
1. [Fork](https://docs.gitlab.com/ee/gitlab-basics/fork-project.html) the
|
||||
project, clone your fork, and configure the remotes:
|
||||
|
||||
```bash
|
||||
# Clone your fork of the repo into the current directory
|
||||
git clone https://code.castopod.org/<your-username>/castopod.git
|
||||
|
||||
# Navigate to the newly cloned directory
|
||||
cd castopod
|
||||
|
||||
# Assign the original repo to a remote called "upstream"
|
||||
git remote add upstream https://code.castopod.org/adaures/castopod.git
|
||||
```
|
||||
|
||||
2. If you cloned a while ago, get the latest changes from upstream:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull upstream main
|
||||
```
|
||||
|
||||
3. Create a new topic branch (off the `main` branch) to contain your feature,
|
||||
change, or fix:
|
||||
|
||||
```bash
|
||||
git checkout -b <topic-branch-name>
|
||||
```
|
||||
|
||||
4. Commit your changes in logical chunks. Please adhere to these
|
||||
[git commit message guidelines](https://conventionalcommits.org/) or your
|
||||
code is unlikely be merged into the main project. Use Git's
|
||||
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
|
||||
feature to tidy up your commits before making them public.
|
||||
|
||||
5. Locally merge (or rebase) the upstream dev branch into your topic branch:
|
||||
|
||||
```bash
|
||||
git pull [--rebase] upstream main
|
||||
```
|
||||
|
||||
6. Push your topic branch up to your fork:
|
||||
|
||||
```bash
|
||||
git push origin <topic-branch-name>
|
||||
```
|
||||
|
||||
7. [Open a Pull Request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html#new-merge-request-from-a-fork)
|
||||
with a clear title and description.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> By submitting a patch, you agree to allow the project owners to license your
|
||||
> work under the terms of the
|
||||
> [GNU AGPLv3](https://code.castopod.org/adaures/castopod/-/blob/develop/LICENSE.md).
|
||||
|
||||
## Collaborating guidelines
|
||||
|
||||
There are few basic rules to ensure high quality of the project:
|
||||
|
||||
- Before merging, a PR requires at least two approvals from the collaborators
|
||||
unless it's an architectural change, a large feature, etc. If it is, then at
|
||||
least 50% of the core team have to agree to merge it, with every team member
|
||||
having a full veto right. (i.e. every single one can block any PR)
|
||||
- A PR should remain open for at least two days before merging (does not apply
|
||||
for trivial contributions like fixing a typo). This way everyone has enough
|
||||
time to look into it.
|
||||
|
||||
You are always welcome to discuss and propose improvements to this guideline.
|
||||
|
|
|
|||
26
README.md
|
|
@ -31,12 +31,9 @@ please contact us directly by email at
|
|||
|
||||
Contributions are always welcome!
|
||||
|
||||
See the
|
||||
[contribution guidelines](https://docs.castopod.org/contributing/guidelines) for
|
||||
ways to get started.
|
||||
See the [contribution guidelines](./CONTRIBUTING.md) for ways to get started.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> [!Important]
|
||||
> **Any** contribution made on a repository other than
|
||||
> [the original repository](https://code.castopod.org/adaures/castopod) will not
|
||||
> be accepted.
|
||||
|
|
@ -49,7 +46,8 @@ Thanks goes to these wonderful people
|
|||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
|
||||
<table class="all-contributors-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-yassinedoghri" title="Maintenance">🚧</a> <a href="#content-yassinedoghri" title="Content">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Accessibility">️️️️♿️</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-yassinedoghri" title="Answering Questions">💬</a> <a href="#mentoring-yassinedoghri" title="Mentoring">🧑🏫</a> <a href="#infra-yassinedoghri" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-yassinedoghri" title="Project Management">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogposts">📝</a></td>
|
||||
|
|
@ -59,7 +57,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
|
||||
|
|
@ -68,7 +66,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
|
|
@ -77,7 +75,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
|
||||
|
|
@ -86,7 +84,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
|
|
@ -95,7 +93,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
|
|
@ -104,7 +102,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
|
|
@ -113,7 +111,7 @@ Thanks goes to these wonderful people
|
|||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
</tr><br />
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/NeoluxConsulting"><img src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100" width="100px;" alt="Guy Martin"/><br /><sub><b>Guy Martin</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
|
|
@ -121,6 +119,8 @@ Thanks goes to these wonderful people
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
|
|
|
|||
|
|
@ -127,13 +127,13 @@ class App extends BaseConfig
|
|||
'fr',
|
||||
'pl',
|
||||
'de',
|
||||
'pt-BR',
|
||||
'nn-NO',
|
||||
'pt-br',
|
||||
'nn-no',
|
||||
'es',
|
||||
'zh-Hans',
|
||||
'zh-hans',
|
||||
'ca',
|
||||
'br',
|
||||
'sr-Latn',
|
||||
'sr-latn',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
+ fr/***
|
||||
+ pl/***
|
||||
+ de/***
|
||||
+ pt-BR/***
|
||||
+ nn-NO/***
|
||||
+ pt-br/***
|
||||
+ nn-no/***
|
||||
+ es/***
|
||||
+ zh-Hans/***
|
||||
+ zh-hans/***
|
||||
+ ca/***
|
||||
+ br/***
|
||||
+ sr-Latn/***
|
||||
+ sr-latn/***
|
||||
- **
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'title' => "{actorDisplayName}'s comment for {episodeTitle}",
|
||||
'back_to_comments' => 'Back to comments',
|
||||
'form' => [
|
||||
'episode_message_placeholder' => 'Write a comment…',
|
||||
'reply_to_placeholder' => 'Reply to @{actorUsername}',
|
||||
'submit' => 'Send',
|
||||
'submit_reply' => 'Reply',
|
||||
],
|
||||
'likes' => '{numberOfLikes, plural,
|
||||
one {# like}
|
||||
other {# likes}
|
||||
}',
|
||||
'replies' => '{numberOfReplies, plural,
|
||||
one {# reply}
|
||||
other {# replies}
|
||||
}',
|
||||
'like' => 'Like',
|
||||
'reply' => 'Reply',
|
||||
'view_replies' => 'View replies ({numberOfReplies})',
|
||||
'block_actor' => 'Block user @{actorUsername}',
|
||||
'block_domain' => 'Block domain @{actorDomain}',
|
||||
'delete' => 'Delete comment',
|
||||
];
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'cancel' => 'Cancel',
|
||||
'optional' => 'Optional',
|
||||
'close' => 'Close',
|
||||
'home' => 'Home',
|
||||
'explicit' => 'Explicit',
|
||||
'powered_by' => 'Powered by {castopod}',
|
||||
'go_back' => 'Go back',
|
||||
'play_episode_button' => [
|
||||
'play' => 'Play',
|
||||
'playing' => 'Playing',
|
||||
],
|
||||
'read_more' => 'Read more',
|
||||
'read_less' => 'Read less',
|
||||
'see_more' => 'See more',
|
||||
'see_less' => 'See less',
|
||||
'legal_notice' => 'Legal notice',
|
||||
];
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'season' => 'Season {seasonNumber}',
|
||||
'season_abbr' => 'S{seasonNumber}',
|
||||
'number' => 'Episode {episodeNumber}',
|
||||
'number_abbr' => 'Ep. {episodeNumber}',
|
||||
'season_episode' => 'Season {seasonNumber} episode {episodeNumber}',
|
||||
'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
|
||||
'persons' => '{personsCount, plural,
|
||||
one {# person}
|
||||
other {# persons}
|
||||
}',
|
||||
'persons_list' => 'Persons',
|
||||
'back_to_episodes' => 'Back to episodes of {podcast}',
|
||||
'comments' => 'Comments',
|
||||
'activity' => 'Activity',
|
||||
'description' => 'Episode description',
|
||||
'number_of_comments' => '{numberOfComments, plural,
|
||||
one {# comment}
|
||||
other {# comments}
|
||||
}',
|
||||
'all_podcast_episodes' => 'All podcast episodes',
|
||||
'back_to_podcast' => 'Go back to podcast',
|
||||
];
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2021 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'your_handle' => 'Your handle',
|
||||
'your_handle_hint' => 'Enter the @username@domain you want to act from.',
|
||||
'follow' => [
|
||||
'label' => 'Follow',
|
||||
'title' => 'Follow {actorDisplayName}',
|
||||
'subtitle' => 'You are going to follow:',
|
||||
'accountNotFound' => 'The account could not be found.',
|
||||
'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…',
|
||||
'submit' => 'Proceed to follow',
|
||||
],
|
||||
'favourite' => [
|
||||
'title' => "Favourite {actorDisplayName}'s post",
|
||||
'subtitle' => 'You are going to favourite:',
|
||||
'submit' => 'Proceed to favourite',
|
||||
],
|
||||
'reblog' => [
|
||||
'title' => "Share {actorDisplayName}'s post",
|
||||
'subtitle' => 'You are going to share:',
|
||||
'submit' => 'Proceed to share',
|
||||
],
|
||||
'reply' => [
|
||||
'title' => "Reply to {actorDisplayName}'s post",
|
||||
'subtitle' => 'You are going to reply to:',
|
||||
'submit' => 'Proceed to reply',
|
||||
],
|
||||
];
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'all_podcasts' => 'All podcasts',
|
||||
'sort_by' => 'Sort by',
|
||||
'sort_options' => [
|
||||
'activity' => 'Recent activity',
|
||||
'created_desc' => 'Newest first',
|
||||
'created_asc' => 'Oldest first',
|
||||
],
|
||||
'no_podcast' => 'No podcast found',
|
||||
];
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'back_to_home' => 'Back to home',
|
||||
'map' => [
|
||||
'title' => 'Map',
|
||||
'description' => 'Discover podcast episodes on {siteName} that are placed on a map! Travel through the map and listen to episodes that talk about specific locations.',
|
||||
],
|
||||
];
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'feed' => 'RSS Podcast feed',
|
||||
'season' => 'Season {seasonNumber}',
|
||||
'list_of_episodes_year' => '{year} episodes ({episodeCount})',
|
||||
'list_of_episodes_season' =>
|
||||
'Season {seasonNumber} episodes ({episodeCount})',
|
||||
'no_episode' => 'No episode found!',
|
||||
'follow' => 'Follow',
|
||||
'followTitle' => 'Follow {actorDisplayName} on the fediverse!',
|
||||
'followers' => '{numberOfFollowers, plural,
|
||||
one {# follower}
|
||||
other {# followers}
|
||||
}',
|
||||
'posts' => '{numberOfPosts, plural,
|
||||
one {# post}
|
||||
other {# posts}
|
||||
}',
|
||||
'activity' => 'Activity',
|
||||
'episodes' => 'Episodes',
|
||||
'episodes_title' => 'Episodes of {podcastTitle}',
|
||||
'about' => 'About',
|
||||
'stats' => [
|
||||
'title' => 'Stats',
|
||||
'number_of_seasons' => '{0, plural,
|
||||
one {# season}
|
||||
other {# seasons}
|
||||
}',
|
||||
'number_of_episodes' => '{0, plural,
|
||||
one {# episode}
|
||||
other {# episodes}
|
||||
}',
|
||||
'first_published_at' => 'First episode published on {0, date, medium}',
|
||||
],
|
||||
'sponsor' => 'Sponsor',
|
||||
'funding_links' => 'Funding links for {podcastTitle}',
|
||||
'find_on' => 'Find {podcastTitle} on',
|
||||
'listen_on' => 'Listen on',
|
||||
'persons' => '{personsCount, plural,
|
||||
one {# person}
|
||||
other {# persons}
|
||||
}',
|
||||
'persons_list' => 'Persons',
|
||||
];
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Ad Aures
|
||||
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
||||
* @link https://castopod.org/
|
||||
*/
|
||||
|
||||
return [
|
||||
'title' => "{actorDisplayName}'s post",
|
||||
'back_to_actor_posts' => 'Back to {actor} posts',
|
||||
'actor_shared' => '{actor} shared',
|
||||
'reply_to' => 'Reply to @{actorUsername}',
|
||||
'form' => [
|
||||
'message_placeholder' => 'Write a message…',
|
||||
'episode_message_placeholder' => 'Write a message for the episode…',
|
||||
'episode_url_placeholder' => 'Episode URL',
|
||||
'reply_to_placeholder' => 'Reply to @{actorUsername}',
|
||||
'submit' => 'Send',
|
||||
'submit_reply' => 'Reply',
|
||||
],
|
||||
'favourites' => '{numberOfFavourites, plural,
|
||||
one {# favourite}
|
||||
other {# favourites}
|
||||
}',
|
||||
'reblogs' => '{numberOfReblogs, plural,
|
||||
one {# share}
|
||||
other {# shares}
|
||||
}',
|
||||
'replies' => '{numberOfReplies, plural,
|
||||
one {# reply}
|
||||
other {# replies}
|
||||
}',
|
||||
'expand' => 'Expand post',
|
||||
'block_actor' => 'Block user @{actorUsername}',
|
||||
'block_domain' => 'Block domain @{actorDomain}',
|
||||
'delete' => 'Delete post',
|
||||
];
|
||||
|
|
@ -1 +1 @@
|
|||
<svg viewBox="0 0 24 24" fill="currentColor" width="1em" height="1em"><path d="M16.455 10.658c0 1.09-.705 2.244-2.098 3.443a13.447 13.447 0 0 1-2.381 1.62 14.102 14.102 0 0 1-2.381-1.629c-1.4-1.2-2.106-2.353-2.106-3.443 0-1.346.887-2.298 2.106-2.298.558 0 .888.054 1.263.238.22.1.412.237.577.403l.541.55.532-.55a2.07 2.07 0 0 1 .586-.421c.366-.166.678-.22 1.254-.22 1.209.018 2.107.988 2.107 2.307Z" clip-rule="evenodd"/><path d="M22 3.915v16.17A1.911 1.911 0 0 1 20.085 22H3.915A1.911 1.911 0 0 1 2 20.085V3.915C2 2.855 2.854 2 3.915 2h8.066c.267 0 .503.107.68.282a.986.986 0 0 1 .281.68v2.807a.962.962 0 0 1-1.922 0V3.923H4.83a.919.919 0 0 0-.916.916v14.346c0 .51.413.915.916.915h14.346a.914.914 0 0 0 .916-.915V4.839a.942.942 0 0 0-.275-.649s-.214-.206-.48-.252c-.032-.008-.07-.008-.07-.008-.03 0-.061-.007-.09-.007h-2.504a.967.967 0 0 1-.96-.962c0-.526.434-.961.96-.961h3.41A1.907 1.907 0 0 1 22 3.915Z"/></svg>
|
||||
<svg fill="currentColor" viewBox="0 0 24 24" width="1em" height="1em"><path d="M16.455 10.658c0 1.09-.705 2.244-2.098 3.443a13.447 13.447 0 0 1-2.381 1.62 14.102 14.102 0 0 1-2.381-1.629c-1.4-1.2-2.106-2.353-2.106-3.443 0-1.346.887-2.298 2.106-2.298.558 0 .888.054 1.263.238.22.1.412.237.577.403l.541.55.532-.55a2.07 2.07 0 0 1 .586-.421c.366-.166.678-.22 1.254-.22 1.209.018 2.107.988 2.107 2.307Z" clip-rule="evenodd"/><path d="M22 3.915v16.17A1.911 1.911 0 0 1 20.085 22H3.915A1.911 1.911 0 0 1 2 20.085V3.915C2 2.855 2.854 2 3.915 2h8.066c.267 0 .503.107.68.282a.986.986 0 0 1 .281.68v2.807a.962.962 0 0 1-1.922 0V3.923H4.83a.919.919 0 0 0-.916.916v14.346c0 .51.413.915.916.915h14.346a.914.914 0 0 0 .916-.915V4.839a.942.942 0 0 0-.275-.649s-.214-.206-.48-.252c-.032-.008-.07-.008-.07-.008-.03 0-.061-.007-.09-.007h-2.504a.967.967 0 0 1-.96-.962c0-.526.434-.961.96-.961h3.41A1.907 1.907 0 0 1 22 3.915Z"/></svg>
|
||||
|
Before Width: | Height: | Size: 915 B After Width: | Height: | Size: 915 B |
|
|
@ -1 +1 @@
|
|||
<svg viewBox="0 0 24 24" fill="currentColor" width="1em" height="1em"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19c-.14.75-.42 1-.68 1.03c-.58.05-1.02-.38-1.58-.75c-.88-.58-1.38-.94-2.23-1.5c-.99-.65-.35-1.01.22-1.59c.15-.15 2.71-2.48 2.76-2.69a.2.2 0 0 0-.05-.18c-.06-.05-.14-.03-.21-.02c-.09.02-1.49.95-4.22 2.79c-.4.27-.76.41-1.08.4c-.36-.01-1.04-.2-1.55-.37c-.63-.2-1.12-.31-1.08-.66c.02-.18.27-.36.74-.55c2.92-1.27 4.86-2.11 5.83-2.51c2.78-1.16 3.35-1.36 3.73-1.36c.08 0 .27.02.39.12c.1.08.13.19.14.27c-.01.06.01.24 0 .38"/></svg>
|
||||
<svg fill="currentColor" viewBox="0 0 24 24" width="1em" height="1em"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19c-.14.75-.42 1-.68 1.03c-.58.05-1.02-.38-1.58-.75c-.88-.58-1.38-.94-2.23-1.5c-.99-.65-.35-1.01.22-1.59c.15-.15 2.71-2.48 2.76-2.69a.2.2 0 0 0-.05-.18c-.06-.05-.14-.03-.21-.02c-.09.02-1.49.95-4.22 2.79c-.4.27-.76.41-1.08.4c-.36-.01-1.04-.2-1.55-.37c-.63-.2-1.12-.31-1.08-.66c.02-.18.27-.36.74-.55c2.92-1.27 4.86-2.11 5.83-2.51c2.78-1.16 3.35-1.36 3.73-1.36c.08 0 .27.02.39.12c.1.08.13.19.14.27c-.01.06.01.24 0 .38"/></svg>
|
||||
|
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 622 B |
|
|
@ -83,8 +83,7 @@
|
|||
height: 0;
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-color: hsl(var(--color-text-muted)) transparent transparent
|
||||
transparent;
|
||||
border-color: hsl(var(--color-text-muted)) transparent transparent;
|
||||
border-width: 5px;
|
||||
position: absolute;
|
||||
right: 11.5px;
|
||||
|
|
@ -94,8 +93,7 @@
|
|||
}
|
||||
|
||||
.choices[data-type*="select-one"].is-open::after {
|
||||
border-color: transparent transparent hsl(var(--color-text-muted))
|
||||
transparent;
|
||||
border-color: transparent transparent hsl(var(--color-text-muted));
|
||||
margin-top: -7.5px;
|
||||
}
|
||||
|
||||
|
|
|
|||
21
docs/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
image: node:16
|
||||
image: node:20
|
||||
|
||||
stages:
|
||||
- build
|
||||
|
|
@ -6,25 +6,29 @@ stages:
|
|||
|
||||
.documentation-setup:
|
||||
before_script:
|
||||
- corepack enable
|
||||
- corepack prepare pnpm@latest-9 --activate
|
||||
- pnpm config set store-dir .pnpm-store
|
||||
- cd docs
|
||||
- chmod +x ./scripts/i18n-filter.sh
|
||||
- ./scripts/i18n-filter.sh src
|
||||
- npm install
|
||||
- pnpm install
|
||||
|
||||
cache:
|
||||
key:
|
||||
files:
|
||||
- docs/package-lock.json
|
||||
- docs/pnpm-lock.yaml
|
||||
paths:
|
||||
- docs/node_modules
|
||||
- .pnpm-store
|
||||
|
||||
# This job only serves for validating that the docs builds correctly on all non deployment branches
|
||||
build:
|
||||
extends: .documentation-setup
|
||||
stage: build
|
||||
script:
|
||||
- npm run build
|
||||
- pnpm run build
|
||||
except:
|
||||
- develop
|
||||
- main
|
||||
- beta
|
||||
- alpha
|
||||
|
|
@ -36,12 +40,13 @@ build-production:
|
|||
name: production
|
||||
url: https://docs.castopod.org/
|
||||
script:
|
||||
- npm run build
|
||||
- pnpm run build --outDir=docs/.dist/$CI_COMMIT_REF_SLUG --base=$CI_COMMIT_REF_SLUG
|
||||
artifacts:
|
||||
paths:
|
||||
- docs/.vitepress/dist
|
||||
- docs/dist/$CI_COMMIT_REF_SLUG
|
||||
expire_in: 30 mins
|
||||
only:
|
||||
- develop
|
||||
- main
|
||||
- beta
|
||||
- alpha
|
||||
|
|
@ -54,10 +59,10 @@ deploy:
|
|||
variables:
|
||||
HOST: $DOCS_HOST
|
||||
USER: $DOCS_USER
|
||||
TEMP_DIRECTORY: $DOCS_TEMP_DIRECTORY
|
||||
DIRECTORY: $DOCS_DIRECTORY
|
||||
TEMP_DIRECTORY: $DOCS_TEMP_DIRECTORY/$CI_COMMIT_REF_SLUG/
|
||||
DIRECTORY: $DOCS_DIRECTORY/$CI_COMMIT_REF_SLUG/
|
||||
SSH_PORT: 3242
|
||||
SOURCE_FOLDER: "docs/.vitepress/dist/"
|
||||
SOURCE_FOLDER: "docs/dist/$CI_COMMIT_REF_SLUG/"
|
||||
before_script:
|
||||
# install rsync for file transfers
|
||||
- apt-get update && apt-get install rsync -y
|
||||
|
|
@ -71,6 +76,7 @@ deploy:
|
|||
- rsync -avzuh -e "ssh -p $SSH_PORT" $SOURCE_FOLDER $USER@$HOST:$TEMP_DIRECTORY --progress
|
||||
- ssh $USER@$HOST -p $SSH_PORT "rsync -rtv $TEMP_DIRECTORY $DIRECTORY"
|
||||
only:
|
||||
- develop
|
||||
- main
|
||||
- beta
|
||||
- alpha
|
||||
|
|
|
|||
|
|
@ -1,280 +0,0 @@
|
|||
import { defineConfig } from "vitepress";
|
||||
|
||||
export default defineConfig({
|
||||
srcDir: "src",
|
||||
|
||||
head: [
|
||||
["link", { rel: "icon", type: "image/x-icon", href: "/favicon.ico" }],
|
||||
["link", { rel: "canonical", href: "https://docs.castopod.org/" }],
|
||||
["meta", { name: "robots", content: "index, follow" }],
|
||||
["meta", { property: "og:type", content: "website" }],
|
||||
[
|
||||
"meta",
|
||||
{
|
||||
property: "og:image",
|
||||
content: "https://docs.castopod.org/images/open-graph.jpg",
|
||||
},
|
||||
],
|
||||
["meta", { property: "og:image:type", content: "image/jpeg" }],
|
||||
["meta", { property: "og:image:width", content: "1200" }],
|
||||
["meta", { property: "og:image:height", content: "630" }],
|
||||
[
|
||||
"meta",
|
||||
{
|
||||
property: "og:image:alt",
|
||||
content:
|
||||
"Castopod mascot waving hello and holding a browser showcasing the Castopod documentation.",
|
||||
},
|
||||
],
|
||||
["meta", { property: "og:url", content: "https://docs.castopod.org/" }],
|
||||
["meta", { name: "twitter:site", content: "@castopod" }],
|
||||
["meta", { name: "twitter:card", content: "summary_large_image" }],
|
||||
["meta", { name: "twitter:creator", content: "@ad_aures" }],
|
||||
[
|
||||
"script",
|
||||
{
|
||||
defer: "defer",
|
||||
"data-domain": "docs.castopod.org",
|
||||
src: "https://analytics.castopod.org/js/plausible.js",
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
locales: {
|
||||
"/": {
|
||||
lang: "en",
|
||||
title: "Castopod documentation",
|
||||
description:
|
||||
"Check out the Castopod documentation! Install your own free & open-source podcast host, help make it better by contributing, or simply learn more about Castopod!",
|
||||
},
|
||||
"/fr/": {
|
||||
lang: "fr",
|
||||
title: "Documentation Castopod",
|
||||
description:
|
||||
"Castopod est une plateforme d’hébergement gratuite & open-source conçue pour les podcasteurs qui veulent échanger et interagir avec leur public.",
|
||||
},
|
||||
"/pt-BR/": {
|
||||
lang: "pt-BR",
|
||||
title: "Documentação Castopod",
|
||||
description:
|
||||
"Castopod é uma plataforma de hospedagem de código livre & aberto feita para podcasters que querem se envolver e interagir com seu público.",
|
||||
},
|
||||
"/nn-NO/": {
|
||||
lang: "nn-NO",
|
||||
title: "Castopod dokumentasjon",
|
||||
description:
|
||||
"Castopod er ei open og gratis løysing for dei som vil køyra si eiga podkasting-plattform, og for podkastarar som vil engasjera og samhandla med publikum.",
|
||||
},
|
||||
},
|
||||
|
||||
themeConfig: {
|
||||
logo: "/images/castopod-icon.svg",
|
||||
lastUpdated: "Last Updated",
|
||||
repo: "https://code.castopod.org/adaures/castopod",
|
||||
docsDir: "docs/src",
|
||||
docsBranch: "develop",
|
||||
editLinks: true,
|
||||
locales: {
|
||||
"/": {
|
||||
label: "English",
|
||||
selectText: "Languages",
|
||||
repoLabel: "Source code",
|
||||
nav: [
|
||||
{
|
||||
text: "Home",
|
||||
link: "https://castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Blog",
|
||||
link: "https://blog.castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Github",
|
||||
link: "https://github.com/ad-aures/castopod",
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
"/": getGuideSidebarEn(),
|
||||
},
|
||||
},
|
||||
"/fr/": {
|
||||
label: "Français",
|
||||
selectText: "Langues",
|
||||
repoLabel: "Code source",
|
||||
nav: [
|
||||
{
|
||||
text: "Accueil",
|
||||
link: "https://castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Blog",
|
||||
link: "https://blog.castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Github",
|
||||
link: "https://github.com/ad-aures/castopod",
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
"/": getGuideSidebarFr(),
|
||||
},
|
||||
},
|
||||
"/pt-BR/": {
|
||||
label: "Português do Brasil",
|
||||
selectText: "Línguas",
|
||||
repoLabel: "Código fonte",
|
||||
nav: [
|
||||
{
|
||||
text: "Início",
|
||||
link: "https://castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Blogue",
|
||||
link: "https://blog.castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Github",
|
||||
link: "https://github.com/ad-aures/castopod",
|
||||
},
|
||||
],
|
||||
sidebar: { "/pt-BR/": getGuideSidebarPtBR() },
|
||||
},
|
||||
"/nn-NO/": {
|
||||
label: "Norsk nynorsk",
|
||||
selectText: "Språk",
|
||||
repoLabel: "Kildekode",
|
||||
nav: [
|
||||
{
|
||||
text: "Heim",
|
||||
link: "https://castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Blogg",
|
||||
link: "https://blog.castopod.org/",
|
||||
},
|
||||
{
|
||||
text: "Github",
|
||||
link: "https://github.com/ad-aures/castopod",
|
||||
},
|
||||
],
|
||||
sidebar: { "/nn-NO/": getGuideSidebarNnNO() },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
function getGuideSidebarEn() {
|
||||
return [
|
||||
{
|
||||
text: "Introduction",
|
||||
link: "/",
|
||||
},
|
||||
{
|
||||
text: "Getting started",
|
||||
children: [
|
||||
{ text: "Install", link: "/getting-started/install" },
|
||||
{
|
||||
text: "Docker",
|
||||
link: "/getting-started/docker",
|
||||
},
|
||||
{ text: "Security", link: "/getting-started/security" },
|
||||
{ text: "Update", link: "/getting-started/update" },
|
||||
{ text: "Auth", link: "/getting-started/auth" },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Contributing",
|
||||
children: [
|
||||
{ text: "Guide", link: "/contributing/guidelines" },
|
||||
{ text: "Dev Setup", link: "/contributing/setup-development" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
function getGuideSidebarFr() {
|
||||
return [
|
||||
{
|
||||
text: "Introduction",
|
||||
link: "/fr/",
|
||||
},
|
||||
{
|
||||
text: "Commencer",
|
||||
children: [
|
||||
{ text: "Installer", link: "/fr/getting-started/install" },
|
||||
{
|
||||
text: "Docker",
|
||||
link: "/fr/getting-started/docker",
|
||||
},
|
||||
{ text: "Sécurité", link: "/fr/getting-started/security" },
|
||||
{ text: "Mise à jour", link: "/fr/getting-started/update" },
|
||||
{ text: "Authentification", link: "/fr/getting-started/auth" },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Contributing",
|
||||
children: [
|
||||
{ text: "Guide", link: "/fr/contributing/guidelines" },
|
||||
{ text: "Dev Setup", link: "/fr/contributing/setup-development" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
function getGuideSidebarPtBR() {
|
||||
return [
|
||||
{
|
||||
text: "Introdução",
|
||||
link: "/pt-BR/",
|
||||
},
|
||||
{
|
||||
text: "Começando",
|
||||
children: [
|
||||
{ text: "Instalar", link: "/pt-BR/getting-started/install" },
|
||||
{
|
||||
text: "Docker",
|
||||
link: "/pt-BR/getting-started/docker",
|
||||
},
|
||||
{ text: "Segurança", link: "/pt-BR/getting-started/security" },
|
||||
{ text: "Atualizar", link: "/pt-BR/getting-started/update" },
|
||||
{ text: "Autenticação", link: "/pt-BR/getting-started/auth" },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Contributing",
|
||||
children: [
|
||||
{ text: "Guide", link: "/pt-BR/contributing/guidelines" },
|
||||
{ text: "Dev Setup", link: "/pt-BR/contributing/setup-development" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
function getGuideSidebarNnNO() {
|
||||
return [
|
||||
{
|
||||
text: "Introduksjon",
|
||||
link: "/nn-NO/",
|
||||
},
|
||||
{
|
||||
text: "Starter",
|
||||
children: [
|
||||
{ text: "Installer", link: "/nn-NO/getting-started/install" },
|
||||
{
|
||||
text: "Docker",
|
||||
link: "/nn-NO/getting-started/docker",
|
||||
},
|
||||
{ text: "Sikkerhet", link: "/nn-NO/getting-started/security" },
|
||||
{ text: "Oppdaterer", link: "/nn-NO/getting-started/update" },
|
||||
{ text: "Autentisering", link: "/pt-BR/getting-started/auth" },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Contributing",
|
||||
children: [
|
||||
{ text: "Guide", link: "/nn-NO/contributing/guidelines" },
|
||||
{ text: "Dev Setup", link: "/nn-NO/contributing/setup-development" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import Theme from "vitepress/theme";
|
||||
import "./tailwind.css";
|
||||
|
||||
export default {
|
||||
...Theme,
|
||||
};
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
58
docs/README.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# Castopod Docs
|
||||
|
||||
[](https://starlight.astro.build)
|
||||
|
||||
```sh
|
||||
pnpm create astro@latest -- --template starlight
|
||||
```
|
||||
|
||||
[](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics)
|
||||
[](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics)
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||
## 🚀 Project Structure
|
||||
|
||||
Inside of your Astro + Starlight project, you'll see the following folders and
|
||||
files:
|
||||
|
||||
```
|
||||
.
|
||||
├── public/
|
||||
├── src/
|
||||
│ ├── assets/
|
||||
│ ├── content/
|
||||
│ │ ├── docs/
|
||||
│ │ └── config.ts
|
||||
│ └── env.d.ts
|
||||
├── astro.config.mjs
|
||||
├── package.json
|
||||
└── tsconfig.json
|
||||
```
|
||||
|
||||
Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory.
|
||||
Each file is exposed as a route based on its file name.
|
||||
|
||||
Images can be added to `src/assets/` and embedded in Markdown with a relative
|
||||
link.
|
||||
|
||||
Static assets, like favicons, can be placed in the `public/` directory.
|
||||
|
||||
## 🧞 Commands
|
||||
|
||||
All commands are run from the root of the project, from a terminal:
|
||||
|
||||
| Command | Action |
|
||||
| :------------------------ | :----------------------------------------------- |
|
||||
| `npm install` | Installs dependencies |
|
||||
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||
| `npm run build` | Build your production site to `./dist/` |
|
||||
| `npm run preview` | Preview your build locally, before deploying |
|
||||
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||
|
||||
## 👀 Want to learn more?
|
||||
|
||||
Check out [Starlight’s docs](https://starlight.astro.build/), read
|
||||
[the Astro documentation](https://docs.astro.build), or jump into the
|
||||
[Astro Discord server](https://astro.build/chat).
|
||||
191
docs/astro.config.mjs
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
import { defineConfig } from "astro/config";
|
||||
import starlight from "@astrojs/starlight";
|
||||
|
||||
import tailwind from "@astrojs/tailwind";
|
||||
|
||||
const site = "https://docs.castopod.org/";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
site,
|
||||
base: "/docs",
|
||||
integrations: [
|
||||
starlight({
|
||||
title: "Castopod Docs",
|
||||
description:
|
||||
"Check out the Castopod documentation! Install your own free & open-source podcast host, help make it better by contributing, or simply learn more about Castopod!",
|
||||
logo: {
|
||||
src: "./src/assets/castopod-logo-inline.svg",
|
||||
replacesTitle: true,
|
||||
},
|
||||
favicon: "/favicon.ico",
|
||||
customCss: [
|
||||
"@fontsource/inter/400.css",
|
||||
"@fontsource/inter/600.css",
|
||||
"@fontsource/rubik/700.css",
|
||||
"./src/styles/tailwind.css",
|
||||
],
|
||||
head: [
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: {
|
||||
property: "og:type",
|
||||
content: "website",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: {
|
||||
property: "og:image",
|
||||
content: site + "open-graph.jpg?v=1",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: { property: "og:image:type", content: "image/jpeg" },
|
||||
},
|
||||
{ tag: "meta", attrs: { property: "og:image:width", content: "1200" } },
|
||||
{ tag: "meta", attrs: { property: "og:image:height", content: "630" } },
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: {
|
||||
property: "og:image:alt",
|
||||
content:
|
||||
"Castopod mascot waving hello and holding a browser showcasing the Castopod documentation.",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: { property: "og:url", content: "https://docs.castopod.org/" },
|
||||
},
|
||||
{ tag: "meta", attrs: { name: "twitter:site", content: "@castopod" } },
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: { name: "twitter:card", content: "summary_large_image" },
|
||||
},
|
||||
{
|
||||
tag: "meta",
|
||||
attrs: { name: "twitter:creator", content: "@ad_aures" },
|
||||
},
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
src: "https://analytics.castopod.org/js/plausible.js",
|
||||
"data-domain": "docs.castopod.org",
|
||||
defer: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
defaultLocale: "en",
|
||||
locales: {
|
||||
en: {
|
||||
label: "English",
|
||||
},
|
||||
ca: {
|
||||
label: "Català",
|
||||
},
|
||||
de: {
|
||||
label: "Deutsch",
|
||||
},
|
||||
es: {
|
||||
label: "Español",
|
||||
},
|
||||
fr: {
|
||||
label: "Français",
|
||||
},
|
||||
"nn-no": {
|
||||
label: "Norsk nynorsk",
|
||||
lang: "nn-NO",
|
||||
},
|
||||
"pt-br": {
|
||||
label: "Português do Brasil",
|
||||
lang: "pt-BR",
|
||||
},
|
||||
"sr-latn": {
|
||||
label: "Srpski",
|
||||
lang: "sr-Latn",
|
||||
},
|
||||
"zh-hans": {
|
||||
label: "中文",
|
||||
lang: "zh-Hans",
|
||||
},
|
||||
},
|
||||
social: {
|
||||
discord: "https://castopod.org/chat",
|
||||
"x.com": "https://twitter.com/castopod",
|
||||
mastodon: "https://podlibre.social/@Castopod",
|
||||
gitlab: "https://code.castopod.org/adaures/castopod",
|
||||
github: "https://github.com/ad-aures/castopod",
|
||||
},
|
||||
sidebar: [
|
||||
{
|
||||
label: "Instroduction",
|
||||
link: "/",
|
||||
translations: {
|
||||
fr: "Installer",
|
||||
"pt-br": "Instalar",
|
||||
"nn-no": "Installer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Getting started",
|
||||
translations: {
|
||||
fr: "Commencer",
|
||||
"pt-br": "Começando",
|
||||
"nn-no": "Starter",
|
||||
},
|
||||
items: [
|
||||
// Each item here is one entry in the navigation menu.
|
||||
{
|
||||
label: "Install",
|
||||
link: "/getting-started/install/",
|
||||
translations: {
|
||||
fr: "Installer",
|
||||
"pt-br": "Instalar",
|
||||
"nn-no": "Installer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Docker",
|
||||
link: "/getting-started/docker/",
|
||||
},
|
||||
{
|
||||
label: "Security",
|
||||
link: "/getting-started/security/",
|
||||
translations: {
|
||||
fr: "Sécurité",
|
||||
"pt-br": "Segurança",
|
||||
"nn-no": "Sikkerhet",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Update",
|
||||
link: "/getting-started/update/",
|
||||
translations: {
|
||||
fr: "Mise à jour",
|
||||
"pt-br": "Atualizar",
|
||||
"nn-no": "Oppdaterer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Auth",
|
||||
link: "/getting-started/auth/",
|
||||
translations: {
|
||||
fr: "Authentification",
|
||||
"pt-br": "Autenticação",
|
||||
"nn-no": "Autentisering",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
editLink: {
|
||||
baseUrl:
|
||||
"https://code.castopod.org/adaures/castopod/-/edit/develop/docs/",
|
||||
},
|
||||
}),
|
||||
tailwind({
|
||||
applyBaseStyles: false,
|
||||
}),
|
||||
],
|
||||
});
|
||||
2804
docs/package-lock.json
generated
|
|
@ -1,2804 +0,0 @@
|
|||
{
|
||||
"name": "castopod-docs",
|
||||
"version": "0.0.0-development",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "castopod-docs",
|
||||
"version": "0.0.0-development",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
"tailwindcss": "^3.2.7",
|
||||
"vitepress": "^0.22.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/autocomplete-core": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.4.tgz",
|
||||
"integrity": "sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/autocomplete-shared": "1.7.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/autocomplete-preset-algolia": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.4.tgz",
|
||||
"integrity": "sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/autocomplete-shared": "1.7.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@algolia/client-search": ">= 4.9.1 < 6",
|
||||
"algoliasearch": ">= 4.9.1 < 6"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/autocomplete-shared": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.4.tgz",
|
||||
"integrity": "sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@algolia/cache-browser-local-storage": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.15.0.tgz",
|
||||
"integrity": "sha512-uxxFhTWh4JJDb2+FFSmNMfEQ8p9o2vjSpU7iW007QX3OvqljPPN68lk3bpZVaG8pwr5MU1DqpkZ71FcQdVTjgQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/cache-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/cache-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.15.0.tgz",
|
||||
"integrity": "sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@algolia/cache-in-memory": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.15.0.tgz",
|
||||
"integrity": "sha512-B9mg1wd7CKMfpkbiTQ8KlcKkH6ut/goVaI6XmDCUczOOqeuZlV34tuEi7o3Xo1j66KWr/d9pMjjGYcoVPCVeOA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/cache-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/client-account": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.15.0.tgz",
|
||||
"integrity": "sha512-8wqI33HRZy5ydfFt6F5vMhtkOiAUhVfSCYXx4U3Go5RALqWLgVUp6wzOo0mr1z08POCkHDpbQMQvyayb1CZ/kw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/client-analytics": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.15.0.tgz",
|
||||
"integrity": "sha512-jrPjEeNEIIQKeA1XCZXx3f3aybtwF7wjYlnfHbLARuZ9AuHzimOKjX0ZwqvMmvTsHivpcZ2rqY+j1E8HoH1ELA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/client-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.15.0.tgz",
|
||||
"integrity": "sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/client-personalization": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.15.0.tgz",
|
||||
"integrity": "sha512-Bf0bhRAiNL9LWurzyHRH8UBi4fDt3VbCNkInxVngKQT1uCZWXecwoPWGhcSSpdanBqFJA/1WBt+BWx7a50Bhlg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/client-search": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.15.0.tgz",
|
||||
"integrity": "sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/logger-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.15.0.tgz",
|
||||
"integrity": "sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@algolia/logger-console": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.15.0.tgz",
|
||||
"integrity": "sha512-pQOvVaRSEJQJRXKTnxEA6nN1hipSQadJJ4einw0nIlfMOGZh/kps1ybh8vRUlUGyfEuN/3dyFs0W3Ac7hIItlg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/logger-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/requester-browser-xhr": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.15.0.tgz",
|
||||
"integrity": "sha512-va186EfALF+6msYZXaoBSxcnFCg3SoWJ+uv1yMyhQRJRe7cZSHWSVT3s40vmar90gxlBu80KMVwVlsvJhJv6ew==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/requester-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.15.0.tgz",
|
||||
"integrity": "sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@algolia/requester-node-http": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.15.0.tgz",
|
||||
"integrity": "sha512-eeEOhFtgwKcgAlKAZpgBRZJ0ILSEBCXxZ9uwfVWPD24W1b6z08gVoTJ6J7lCeCnJmudg+tMElDnGzHkjup9CJA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@algolia/transporter": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.15.0.tgz",
|
||||
"integrity": "sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/cache-common": "4.15.0",
|
||||
"@algolia/logger-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
|
||||
"integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@docsearch/css": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.3.3.tgz",
|
||||
"integrity": "sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@docsearch/js": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.3.3.tgz",
|
||||
"integrity": "sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@docsearch/react": "3.3.3",
|
||||
"preact": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@docsearch/react": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.3.3.tgz",
|
||||
"integrity": "sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/autocomplete-core": "1.7.4",
|
||||
"@algolia/autocomplete-preset-algolia": "1.7.4",
|
||||
"@docsearch/css": "3.3.3",
|
||||
"algoliasearch": "^4.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": ">= 16.8.0 < 19.0.0",
|
||||
"react": ">= 16.8.0 < 19.0.0",
|
||||
"react-dom": ">= 16.8.0 < 19.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
},
|
||||
"react": {
|
||||
"optional": true
|
||||
},
|
||||
"react-dom": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
|
||||
"integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "2.0.5",
|
||||
"run-parallel": "^1.1.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.stat": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.walk": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.scandir": "2.1.5",
|
||||
"fastq": "^1.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
|
||||
"integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": "^2.5.10",
|
||||
"vue": "^3.2.25"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
|
||||
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
|
||||
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/reactivity-transform": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
|
||||
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz",
|
||||
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity-transform": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
|
||||
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
|
||||
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
|
||||
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-node": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
|
||||
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^7.0.0",
|
||||
"acorn-walk": "^7.0.0",
|
||||
"xtend": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-walk": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
|
||||
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/algoliasearch": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.15.0.tgz",
|
||||
"integrity": "sha512-+vgKQF5944dYsz9zhKk07JbOYeNdKisoD5GeG0woBL3nLzbn2a+nGwki60DXg7CXvaFXBcTXyJG4C+VaBVd44g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@algolia/cache-browser-local-storage": "4.15.0",
|
||||
"@algolia/cache-common": "4.15.0",
|
||||
"@algolia/cache-in-memory": "4.15.0",
|
||||
"@algolia/client-account": "4.15.0",
|
||||
"@algolia/client-analytics": "4.15.0",
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-personalization": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/logger-common": "4.15.0",
|
||||
"@algolia/logger-console": "4.15.0",
|
||||
"@algolia/requester-browser-xhr": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/requester-node-http": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/anymatch": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
||||
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/camelcase-css": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
|
||||
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.10.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar/node_modules/glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/cssesc": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"cssesc": "bin/cssesc"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/defined": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
|
||||
"integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/detective": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
|
||||
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn-node": "^1.8.2",
|
||||
"defined": "^1.0.0",
|
||||
"minimist": "^1.2.6"
|
||||
},
|
||||
"bin": {
|
||||
"detective": "bin/detective.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/didyoumean": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/dlv": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
|
||||
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
||||
"integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/linux-loong64": "0.14.54",
|
||||
"esbuild-android-64": "0.14.54",
|
||||
"esbuild-android-arm64": "0.14.54",
|
||||
"esbuild-darwin-64": "0.14.54",
|
||||
"esbuild-darwin-arm64": "0.14.54",
|
||||
"esbuild-freebsd-64": "0.14.54",
|
||||
"esbuild-freebsd-arm64": "0.14.54",
|
||||
"esbuild-linux-32": "0.14.54",
|
||||
"esbuild-linux-64": "0.14.54",
|
||||
"esbuild-linux-arm": "0.14.54",
|
||||
"esbuild-linux-arm64": "0.14.54",
|
||||
"esbuild-linux-mips64le": "0.14.54",
|
||||
"esbuild-linux-ppc64le": "0.14.54",
|
||||
"esbuild-linux-riscv64": "0.14.54",
|
||||
"esbuild-linux-s390x": "0.14.54",
|
||||
"esbuild-netbsd-64": "0.14.54",
|
||||
"esbuild-openbsd-64": "0.14.54",
|
||||
"esbuild-sunos-64": "0.14.54",
|
||||
"esbuild-windows-32": "0.14.54",
|
||||
"esbuild-windows-64": "0.14.54",
|
||||
"esbuild-windows-arm64": "0.14.54"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-android-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
|
||||
"integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-android-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-darwin-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
|
||||
"integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-darwin-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-freebsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-freebsd-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-32": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
|
||||
"integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
|
||||
"integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-arm": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
|
||||
"integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-mips64le": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
|
||||
"integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-ppc64le": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
|
||||
"integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-riscv64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
|
||||
"integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-linux-s390x": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
|
||||
"integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-netbsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-openbsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-sunos-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
|
||||
"integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"sunos"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-windows-32": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
|
||||
"integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-windows-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
|
||||
"integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-windows-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
"glob-parent": "^5.1.2",
|
||||
"merge2": "^1.3.0",
|
||||
"micromatch": "^4.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fast-glob/node_modules/glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/fastq": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
|
||||
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has": "^1.0.3"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/lilconfig": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
|
||||
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"node_modules/merge2": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.2",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-hash": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
|
||||
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/path-parse": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/pify": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-import": {
|
||||
"version": "14.1.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
|
||||
"integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-value-parser": "^4.0.0",
|
||||
"read-cache": "^1.0.0",
|
||||
"resolve": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-js": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
|
||||
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"camelcase-css": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12 || ^14 || >= 16"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.4.21"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-load-config": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
|
||||
"integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lilconfig": "^2.0.5",
|
||||
"yaml": "^1.10.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": ">=8.0.9",
|
||||
"ts-node": ">=9.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"postcss": {
|
||||
"optional": true
|
||||
},
|
||||
"ts-node": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-nested": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
|
||||
"integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.0.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.2.14"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
|
||||
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-value-parser": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/preact": {
|
||||
"version": "10.13.1",
|
||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.13.1.tgz",
|
||||
"integrity": "sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/preact"
|
||||
}
|
||||
},
|
||||
"node_modules/prismjs": {
|
||||
"version": "1.29.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
|
||||
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/quick-lru": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
|
||||
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/read-cache": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"pify": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"picomatch": "^2.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"resolve": "bin/resolve"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"iojs": ">=1.0.0",
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "2.77.3",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz",
|
||||
"integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/supports-preserve-symlinks-flag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz",
|
||||
"integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"arg": "^5.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"color-name": "^1.1.4",
|
||||
"detective": "^5.2.1",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.2.12",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"lilconfig": "^2.0.6",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"object-hash": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.0.9",
|
||||
"postcss-import": "^14.1.0",
|
||||
"postcss-js": "^4.0.0",
|
||||
"postcss-load-config": "^3.1.4",
|
||||
"postcss-nested": "6.0.0",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"quick-lru": "^5.1.1",
|
||||
"resolve": "^1.22.1"
|
||||
},
|
||||
"bin": {
|
||||
"tailwind": "lib/cli.js",
|
||||
"tailwindcss": "lib/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.13.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.0.9"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "2.9.15",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz",
|
||||
"integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.14.27",
|
||||
"postcss": "^8.4.13",
|
||||
"resolve": "^1.22.0",
|
||||
"rollup": ">=2.59.0 <2.78.0"
|
||||
},
|
||||
"bin": {
|
||||
"vite": "bin/vite.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.2.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"less": "*",
|
||||
"sass": "*",
|
||||
"stylus": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"less": {
|
||||
"optional": true
|
||||
},
|
||||
"sass": {
|
||||
"optional": true
|
||||
},
|
||||
"stylus": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vitepress": {
|
||||
"version": "0.22.4",
|
||||
"resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.22.4.tgz",
|
||||
"integrity": "sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@docsearch/css": "^3.0.0",
|
||||
"@docsearch/js": "^3.0.0",
|
||||
"@vitejs/plugin-vue": "^2.3.2",
|
||||
"prismjs": "^1.25.0",
|
||||
"vite": "^2.9.7",
|
||||
"vue": "^3.2.33"
|
||||
},
|
||||
"bin": {
|
||||
"vitepress": "bin/vitepress.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",
|
||||
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-sfc": "3.2.47",
|
||||
"@vue/runtime-dom": "3.2.47",
|
||||
"@vue/server-renderer": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "1.10.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@algolia/autocomplete-core": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.4.tgz",
|
||||
"integrity": "sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/autocomplete-shared": "1.7.4"
|
||||
}
|
||||
},
|
||||
"@algolia/autocomplete-preset-algolia": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.4.tgz",
|
||||
"integrity": "sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/autocomplete-shared": "1.7.4"
|
||||
}
|
||||
},
|
||||
"@algolia/autocomplete-shared": {
|
||||
"version": "1.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.4.tgz",
|
||||
"integrity": "sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==",
|
||||
"dev": true
|
||||
},
|
||||
"@algolia/cache-browser-local-storage": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.15.0.tgz",
|
||||
"integrity": "sha512-uxxFhTWh4JJDb2+FFSmNMfEQ8p9o2vjSpU7iW007QX3OvqljPPN68lk3bpZVaG8pwr5MU1DqpkZ71FcQdVTjgQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/cache-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/cache-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.15.0.tgz",
|
||||
"integrity": "sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@algolia/cache-in-memory": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.15.0.tgz",
|
||||
"integrity": "sha512-B9mg1wd7CKMfpkbiTQ8KlcKkH6ut/goVaI6XmDCUczOOqeuZlV34tuEi7o3Xo1j66KWr/d9pMjjGYcoVPCVeOA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/cache-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/client-account": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.15.0.tgz",
|
||||
"integrity": "sha512-8wqI33HRZy5ydfFt6F5vMhtkOiAUhVfSCYXx4U3Go5RALqWLgVUp6wzOo0mr1z08POCkHDpbQMQvyayb1CZ/kw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/client-analytics": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.15.0.tgz",
|
||||
"integrity": "sha512-jrPjEeNEIIQKeA1XCZXx3f3aybtwF7wjYlnfHbLARuZ9AuHzimOKjX0ZwqvMmvTsHivpcZ2rqY+j1E8HoH1ELA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/client-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.15.0.tgz",
|
||||
"integrity": "sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/client-personalization": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.15.0.tgz",
|
||||
"integrity": "sha512-Bf0bhRAiNL9LWurzyHRH8UBi4fDt3VbCNkInxVngKQT1uCZWXecwoPWGhcSSpdanBqFJA/1WBt+BWx7a50Bhlg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/client-search": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.15.0.tgz",
|
||||
"integrity": "sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/logger-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.15.0.tgz",
|
||||
"integrity": "sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==",
|
||||
"dev": true
|
||||
},
|
||||
"@algolia/logger-console": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.15.0.tgz",
|
||||
"integrity": "sha512-pQOvVaRSEJQJRXKTnxEA6nN1hipSQadJJ4einw0nIlfMOGZh/kps1ybh8vRUlUGyfEuN/3dyFs0W3Ac7hIItlg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/logger-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/requester-browser-xhr": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.15.0.tgz",
|
||||
"integrity": "sha512-va186EfALF+6msYZXaoBSxcnFCg3SoWJ+uv1yMyhQRJRe7cZSHWSVT3s40vmar90gxlBu80KMVwVlsvJhJv6ew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/requester-common": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.15.0.tgz",
|
||||
"integrity": "sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==",
|
||||
"dev": true
|
||||
},
|
||||
"@algolia/requester-node-http": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.15.0.tgz",
|
||||
"integrity": "sha512-eeEOhFtgwKcgAlKAZpgBRZJ0ILSEBCXxZ9uwfVWPD24W1b6z08gVoTJ6J7lCeCnJmudg+tMElDnGzHkjup9CJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@algolia/transporter": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.15.0.tgz",
|
||||
"integrity": "sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/cache-common": "4.15.0",
|
||||
"@algolia/logger-common": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0"
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.21.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
|
||||
"integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@docsearch/css": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.3.3.tgz",
|
||||
"integrity": "sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==",
|
||||
"dev": true
|
||||
},
|
||||
"@docsearch/js": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.3.3.tgz",
|
||||
"integrity": "sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@docsearch/react": "3.3.3",
|
||||
"preact": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"@docsearch/react": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.3.3.tgz",
|
||||
"integrity": "sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/autocomplete-core": "1.7.4",
|
||||
"@algolia/autocomplete-preset-algolia": "1.7.4",
|
||||
"@docsearch/css": "3.3.3",
|
||||
"algoliasearch": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@esbuild/linux-loong64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
|
||||
"integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "2.0.5",
|
||||
"run-parallel": "^1.1.9"
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.stat": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||
"dev": true
|
||||
},
|
||||
"@nodelib/fs.walk": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.scandir": "2.1.5",
|
||||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"@vitejs/plugin-vue": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
|
||||
"integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"@vue/compiler-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
|
||||
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-sfc": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
|
||||
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/reactivity-transform": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-ssr": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
|
||||
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz",
|
||||
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity-transform": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
|
||||
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-core": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
|
||||
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/reactivity": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-dom": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
|
||||
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/runtime-core": "3.2.47",
|
||||
"@vue/shared": "3.2.47",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"@vue/server-renderer": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
|
||||
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-ssr": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
|
||||
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
|
||||
"dev": true
|
||||
},
|
||||
"acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"dev": true
|
||||
},
|
||||
"acorn-node": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
|
||||
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^7.0.0",
|
||||
"acorn-walk": "^7.0.0",
|
||||
"xtend": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"acorn-walk": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
|
||||
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
|
||||
"dev": true
|
||||
},
|
||||
"algoliasearch": {
|
||||
"version": "4.15.0",
|
||||
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.15.0.tgz",
|
||||
"integrity": "sha512-+vgKQF5944dYsz9zhKk07JbOYeNdKisoD5GeG0woBL3nLzbn2a+nGwki60DXg7CXvaFXBcTXyJG4C+VaBVd44g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@algolia/cache-browser-local-storage": "4.15.0",
|
||||
"@algolia/cache-common": "4.15.0",
|
||||
"@algolia/cache-in-memory": "4.15.0",
|
||||
"@algolia/client-account": "4.15.0",
|
||||
"@algolia/client-analytics": "4.15.0",
|
||||
"@algolia/client-common": "4.15.0",
|
||||
"@algolia/client-personalization": "4.15.0",
|
||||
"@algolia/client-search": "4.15.0",
|
||||
"@algolia/logger-common": "4.15.0",
|
||||
"@algolia/logger-console": "4.15.0",
|
||||
"@algolia/requester-browser-xhr": "4.15.0",
|
||||
"@algolia/requester-common": "4.15.0",
|
||||
"@algolia/requester-node-http": "4.15.0",
|
||||
"@algolia/transporter": "4.15.0"
|
||||
}
|
||||
},
|
||||
"anymatch": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
||||
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
|
||||
"dev": true
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"dev": true
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"camelcase-css": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
|
||||
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
|
||||
"dev": true
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"fsevents": "~2.3.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"cssesc": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"dev": true
|
||||
},
|
||||
"defined": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
|
||||
"integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
|
||||
"dev": true
|
||||
},
|
||||
"detective": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
|
||||
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn-node": "^1.8.2",
|
||||
"defined": "^1.0.0",
|
||||
"minimist": "^1.2.6"
|
||||
}
|
||||
},
|
||||
"didyoumean": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
|
||||
"dev": true
|
||||
},
|
||||
"dlv": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
|
||||
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
|
||||
"dev": true
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
|
||||
"integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@esbuild/linux-loong64": "0.14.54",
|
||||
"esbuild-android-64": "0.14.54",
|
||||
"esbuild-android-arm64": "0.14.54",
|
||||
"esbuild-darwin-64": "0.14.54",
|
||||
"esbuild-darwin-arm64": "0.14.54",
|
||||
"esbuild-freebsd-64": "0.14.54",
|
||||
"esbuild-freebsd-arm64": "0.14.54",
|
||||
"esbuild-linux-32": "0.14.54",
|
||||
"esbuild-linux-64": "0.14.54",
|
||||
"esbuild-linux-arm": "0.14.54",
|
||||
"esbuild-linux-arm64": "0.14.54",
|
||||
"esbuild-linux-mips64le": "0.14.54",
|
||||
"esbuild-linux-ppc64le": "0.14.54",
|
||||
"esbuild-linux-riscv64": "0.14.54",
|
||||
"esbuild-linux-s390x": "0.14.54",
|
||||
"esbuild-netbsd-64": "0.14.54",
|
||||
"esbuild-openbsd-64": "0.14.54",
|
||||
"esbuild-sunos-64": "0.14.54",
|
||||
"esbuild-windows-32": "0.14.54",
|
||||
"esbuild-windows-64": "0.14.54",
|
||||
"esbuild-windows-arm64": "0.14.54"
|
||||
}
|
||||
},
|
||||
"esbuild-android-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
|
||||
"integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-android-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-darwin-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
|
||||
"integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-darwin-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-freebsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-freebsd-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-32": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
|
||||
"integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
|
||||
"integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-arm": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
|
||||
"integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-mips64le": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
|
||||
"integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-ppc64le": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
|
||||
"integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-riscv64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
|
||||
"integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-linux-s390x": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
|
||||
"integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-netbsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-openbsd-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
|
||||
"integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-sunos-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
|
||||
"integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-windows-32": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
|
||||
"integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-windows-64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
|
||||
"integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"esbuild-windows-arm64": {
|
||||
"version": "0.14.54",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
|
||||
"integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"dev": true
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
"glob-parent": "^5.1.2",
|
||||
"merge2": "^1.3.0",
|
||||
"micromatch": "^4.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
|
||||
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||
"dev": true
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"lilconfig": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
|
||||
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
|
||||
"dev": true
|
||||
},
|
||||
"magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"merge2": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||
"dev": true
|
||||
},
|
||||
"micromatch": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.2",
|
||||
"picomatch": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"dev": true
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true
|
||||
},
|
||||
"object-hash": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
|
||||
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
|
||||
"dev": true
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||
"dev": true
|
||||
},
|
||||
"picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"dev": true
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
|
||||
"dev": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.21",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
|
||||
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"postcss-import": {
|
||||
"version": "14.1.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
|
||||
"integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-value-parser": "^4.0.0",
|
||||
"read-cache": "^1.0.0",
|
||||
"resolve": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"postcss-js": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
|
||||
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase-css": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"postcss-load-config": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
|
||||
"integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lilconfig": "^2.0.5",
|
||||
"yaml": "^1.10.2"
|
||||
}
|
||||
},
|
||||
"postcss-nested": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
|
||||
"integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-selector-parser": "^6.0.10"
|
||||
}
|
||||
},
|
||||
"postcss-selector-parser": {
|
||||
"version": "6.0.11",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
|
||||
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"postcss-value-parser": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||
"dev": true
|
||||
},
|
||||
"preact": {
|
||||
"version": "10.13.1",
|
||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.13.1.tgz",
|
||||
"integrity": "sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ==",
|
||||
"dev": true
|
||||
},
|
||||
"prismjs": {
|
||||
"version": "1.29.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
|
||||
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
|
||||
"dev": true
|
||||
},
|
||||
"queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true
|
||||
},
|
||||
"quick-lru": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
|
||||
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
|
||||
"dev": true
|
||||
},
|
||||
"read-cache": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pify": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true
|
||||
},
|
||||
"rollup": {
|
||||
"version": "2.77.3",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz",
|
||||
"integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"dev": true
|
||||
},
|
||||
"sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"dev": true
|
||||
},
|
||||
"supports-preserve-symlinks-flag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||
"dev": true
|
||||
},
|
||||
"tailwindcss": {
|
||||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz",
|
||||
"integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"arg": "^5.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"color-name": "^1.1.4",
|
||||
"detective": "^5.2.1",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.2.12",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"lilconfig": "^2.0.6",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"object-hash": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.0.9",
|
||||
"postcss-import": "^14.1.0",
|
||||
"postcss-js": "^4.0.0",
|
||||
"postcss-load-config": "^3.1.4",
|
||||
"postcss-nested": "6.0.0",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"postcss-value-parser": "^4.2.0",
|
||||
"quick-lru": "^5.1.1",
|
||||
"resolve": "^1.22.1"
|
||||
}
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
},
|
||||
"vite": {
|
||||
"version": "2.9.15",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz",
|
||||
"integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esbuild": "^0.14.27",
|
||||
"fsevents": "~2.3.2",
|
||||
"postcss": "^8.4.13",
|
||||
"resolve": "^1.22.0",
|
||||
"rollup": ">=2.59.0 <2.78.0"
|
||||
}
|
||||
},
|
||||
"vitepress": {
|
||||
"version": "0.22.4",
|
||||
"resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.22.4.tgz",
|
||||
"integrity": "sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@docsearch/css": "^3.0.0",
|
||||
"@docsearch/js": "^3.0.0",
|
||||
"@vitejs/plugin-vue": "^2.3.2",
|
||||
"prismjs": "^1.25.0",
|
||||
"vite": "^2.9.7",
|
||||
"vue": "^3.2.33"
|
||||
}
|
||||
},
|
||||
"vue": {
|
||||
"version": "3.2.47",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",
|
||||
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.47",
|
||||
"@vue/compiler-sfc": "3.2.47",
|
||||
"@vue/runtime-dom": "3.2.47",
|
||||
"@vue/server-renderer": "3.2.47",
|
||||
"@vue/shared": "3.2.47"
|
||||
}
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
||||
"dev": true
|
||||
},
|
||||
"yaml": {
|
||||
"version": "1.10.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,21 +1,28 @@
|
|||
{
|
||||
"name": "castopod-docs",
|
||||
"version": "0.0.0-development",
|
||||
"description": "Castopod documentation using vitepress",
|
||||
"main": "index.js",
|
||||
"name": "civil-chasm",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "vitepress --port=3050",
|
||||
"build": "vitepress build",
|
||||
"serve": "vitepress serve"
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
"build": "astro check && astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro",
|
||||
"prepare": "astro telemetry disable"
|
||||
},
|
||||
"author": {
|
||||
"name": "Yassine Doghri",
|
||||
"email": "yassine@doghri.fr",
|
||||
"url": "https://code.castopod.org/yassine"
|
||||
},
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
"tailwindcss": "^3.2.7",
|
||||
"vitepress": "^0.22.4"
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.7.0",
|
||||
"@astrojs/starlight": "^0.22.4",
|
||||
"@astrojs/starlight-tailwind": "^2.0.2",
|
||||
"@astrojs/tailwind": "^5.1.0",
|
||||
"@fontsource/inter": "^5.0.18",
|
||||
"@fontsource/rubik": "^5.0.20",
|
||||
"astro": "^4.8.6",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"cssnano": "^7.0.1",
|
||||
"postcss-preset-env": "^9.5.13",
|
||||
"sharp": "^0.33.4",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
9544
docs/pnpm-lock.yaml
generated
Normal file
|
|
@ -0,0 +1,9544 @@
|
|||
lockfileVersion: "9.0"
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
.:
|
||||
dependencies:
|
||||
"@astrojs/check":
|
||||
specifier: ^0.7.0
|
||||
version: 0.7.0(typescript@5.4.5)
|
||||
"@astrojs/starlight":
|
||||
specifier: ^0.22.4
|
||||
version: 0.22.4(astro@4.8.6(typescript@5.4.5))
|
||||
"@astrojs/starlight-tailwind":
|
||||
specifier: ^2.0.2
|
||||
version: 2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3)
|
||||
"@astrojs/tailwind":
|
||||
specifier: ^5.1.0
|
||||
version: 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3)
|
||||
"@fontsource/inter":
|
||||
specifier: ^5.0.18
|
||||
version: 5.0.18
|
||||
"@fontsource/rubik":
|
||||
specifier: ^5.0.20
|
||||
version: 5.0.20
|
||||
astro:
|
||||
specifier: ^4.8.6
|
||||
version: 4.8.6(typescript@5.4.5)
|
||||
autoprefixer:
|
||||
specifier: ^10.4.19
|
||||
version: 10.4.19(postcss@8.4.33)
|
||||
cssnano:
|
||||
specifier: ^7.0.1
|
||||
version: 7.0.1(postcss@8.4.33)
|
||||
postcss-preset-env:
|
||||
specifier: ^9.5.13
|
||||
version: 9.5.13(postcss@8.4.33)
|
||||
sharp:
|
||||
specifier: ^0.33.4
|
||||
version: 0.33.4
|
||||
tailwindcss:
|
||||
specifier: ^3.4.3
|
||||
version: 3.4.3
|
||||
typescript:
|
||||
specifier: ^5.4.5
|
||||
version: 5.4.5
|
||||
|
||||
packages:
|
||||
"@alloc/quick-lru@5.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
"@ampproject/remapping@2.2.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@astrojs/check@0.7.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-UTqwOeKNu9IYZmJXEeWnQuTdSd/pX58Hl4TUARsMlT97SVDL//kLBE4T/ctxRz6J573N87oE5ddtW/uOOnQTug==,
|
||||
}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
typescript: ^5.0.0
|
||||
|
||||
"@astrojs/compiler@2.8.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yrpD1WRGqsJwANaDIdtHo+YVjvIOFAjC83lu5qENIgrafwZcJgSXDuwVMXOgok4tFzpeKLsFQ6c3FoUdloLWBQ==,
|
||||
}
|
||||
|
||||
"@astrojs/internal-helpers@0.4.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6B13lz5n6BrbTqCTwhXjJXuR1sqiX/H6rTxzlXx+lN1NnV4jgnq/KJldCQaUWJzPL5SiWahQyinxAbxQtwgPHA==,
|
||||
}
|
||||
|
||||
"@astrojs/language-server@2.10.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-crHXpqYfA5qWioiuZnZFpTsNItgBlF1f0S9MzDYS7/pfCALkHNJ7K3w9U/j0uMKymsT4hC7BfMaX0DYlfdSzHg==,
|
||||
}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
prettier: ^3.0.0
|
||||
prettier-plugin-astro: ">=0.11.0"
|
||||
peerDependenciesMeta:
|
||||
prettier:
|
||||
optional: true
|
||||
prettier-plugin-astro:
|
||||
optional: true
|
||||
|
||||
"@astrojs/markdown-remark@5.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==,
|
||||
}
|
||||
|
||||
"@astrojs/mdx@2.3.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==,
|
||||
}
|
||||
engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 }
|
||||
peerDependencies:
|
||||
astro: ^4.0.0
|
||||
|
||||
"@astrojs/prism@3.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==,
|
||||
}
|
||||
engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 }
|
||||
|
||||
"@astrojs/sitemap@3.0.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-60eLzNjMza3ABypiQPUC6ElOSZNZeY5CwSwgJ03hfeonl+Db9x12CCzBFdTw7A5Mq+O54xEZVUrR0tB+yWgX8w==,
|
||||
}
|
||||
|
||||
"@astrojs/starlight-tailwind@2.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XJccwk6VLeQZuGQwoiLZLNAPCn2fQobtl10Ra2c2yDLjdYEActcqy0eidZbouAwGlbS9I0iJogeGjHQJ2Casjg==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@astrojs/starlight": ">=0.9.0"
|
||||
"@astrojs/tailwind": ^5.0.0
|
||||
tailwindcss: ^3.3.3
|
||||
|
||||
"@astrojs/starlight@0.22.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AgiVEVv2ZkGHkoJcjY0azXG2K7892i+z4FpKtasnESTciomO91I/X9vAfKfHxmTxdVP5BGPxBFVi0Bp2X4Lxvg==,
|
||||
}
|
||||
peerDependencies:
|
||||
astro: ^4.2.7
|
||||
|
||||
"@astrojs/tailwind@5.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==,
|
||||
}
|
||||
peerDependencies:
|
||||
astro: ^3.0.0 || ^4.0.0
|
||||
tailwindcss: ^3.0.24
|
||||
|
||||
"@astrojs/telemetry@3.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==,
|
||||
}
|
||||
engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 }
|
||||
|
||||
"@babel/code-frame@7.24.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/compat-data@7.24.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/core@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/generator@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-annotate-as-pure@7.22.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-compilation-targets@7.23.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-environment-visitor@7.22.20":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-function-name@7.23.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-hoist-variables@7.22.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-module-imports@7.22.15":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-module-imports@7.24.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-module-transforms@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0
|
||||
|
||||
"@babel/helper-plugin-utils@7.22.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-simple-access@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-split-export-declaration@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-string-parser@7.24.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-validator-identifier@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helper-validator-option@7.23.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/helpers@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/highlight@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/parser@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
hasBin: true
|
||||
|
||||
"@babel/plugin-syntax-jsx@7.23.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
|
||||
"@babel/plugin-transform-react-jsx@7.23.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
|
||||
"@babel/template@7.22.15":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/template@7.24.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/traverse@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@babel/types@7.24.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
"@csstools/cascade-layer-name-parser@1.0.11":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yhsonEAhaWRQvHFYhSzOUobH2Ev++fMci+ppFRagw0qVSPlcPV4FnNmlwpM/b2BM10ZeMRkVV4So6YRswD0O0w==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
"@csstools/css-parser-algorithms": ^2.6.3
|
||||
"@csstools/css-tokenizer": ^2.3.1
|
||||
|
||||
"@csstools/color-helpers@4.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
|
||||
"@csstools/css-calc@1.2.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0owrl7AruDRKAxoSIW8XzJdz7GnuW3AOj4rYLfmXsoKIX2ZZzttzGXoiC8n8V08X7wIBlEWWVB4C8fAN18+I6Q==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
"@csstools/css-parser-algorithms": ^2.6.3
|
||||
"@csstools/css-tokenizer": ^2.3.1
|
||||
|
||||
"@csstools/css-color-parser@2.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Agx2YmxTcZ7TfB7KNZQ+iekaxbWSdblvtA35aTwE3KfuYyjOlCg3P4KGGdQF/cjm1pHWVSBo5duF/BRfZ8s07A==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
"@csstools/css-parser-algorithms": ^2.6.3
|
||||
"@csstools/css-tokenizer": ^2.3.1
|
||||
|
||||
"@csstools/css-parser-algorithms@2.6.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
"@csstools/css-tokenizer": ^2.3.1
|
||||
|
||||
"@csstools/css-tokenizer@2.3.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
|
||||
"@csstools/media-query-list-parser@2.1.11":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
"@csstools/css-parser-algorithms": ^2.6.3
|
||||
"@csstools/css-tokenizer": ^2.3.1
|
||||
|
||||
"@csstools/postcss-cascade-layers@4.0.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-color-function@3.0.16":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KtmXfckANSKsLBoTQCzggvKft1cmmmDKYjFO4yVlB23nWUgGInVBTE9T5JLmH29NNdTWSEPLWPUxoQ6XiIEn2Q==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-color-mix-function@2.0.16":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BJnD1M5Pdypl1cJuwGuzVC52PqgzaObsDLu34jgf+QU7daVFqz432PvpqvXTmfTSNt4OckOT1QIzWexEFlDNXw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-exponential-functions@1.0.7":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9usBPQX74OhiF/VuaVrp44UAPzqbKNyoaxEa6tbEXiFp+OAm3yB/TLRKyPUWg5tvvHGCduGJVdJJB3w8c8NBtA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-font-format-keywords@3.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-gamut-mapping@1.0.9":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JmOeiBJj1RJriAkr+aLBaiYUpEqdNOIo3ERQ5a4uNzy18upzrQ6tz7m2Vt1GQpJ62zQj7rC5PjAhCoZCoyE31g==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-gradients-interpolation-method@4.0.17":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-qSNIqzLPKd2SadfWwHZv42lDRyYlLaM+Vx5rRIsnYCZbQxzFfe1XAwssrcCsHgba5bA6bi5oDoFCx0W+PRCpfw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-hwb-function@3.0.15":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-l34fRiZ7o5+pULv7OplXniBTU4TuKYNNOv0abuvUanddWGSy3+YHlMKUSgcVFo0d1DorxPAhJSTCrugl+4OmMQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-ic-unit@3.0.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fHaU9C/sZPauXMrzPitZ/xbACbvxbkPpHoUgB9Kw5evtsBWdVkVrajOyiT9qX7/c+G1yjApoQjP1fQatldsy9w==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-initial@1.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-is-pseudo-class@4.0.8":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0aj591yGlq5Qac+plaWCbn5cpjs5Sh0daovYUKJUOMjIp70prGH/XPLp7QjxtbFXz3CTvb0H9a35dpEuIuUi3Q==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-light-dark-function@1.0.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kKM9dtEaVmSTb3scL2pgef62KyWv6SK19JiAnCCuiDhlRE6PADKzaPPBXmP3qj4IEgIH+cQhdEosB0eroU6Fnw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-logical-float-and-clear@2.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-logical-overflow@1.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-logical-overscroll-behavior@1.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-logical-resize@2.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-logical-viewport-units@2.0.9":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iBBJuExgHwedFH9AqNOHWzZFgYnt17zhu1qWjmSihu1P5pw0lIG9q5t3uIgJJFDNmYoOGfBKan66z9u1QH8yBQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-media-minmax@1.1.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bc0frf2Lod53j6wEHVsaVElfvCf6uhc96v99M/wUfer4MmNYfO3YLx1kFuB8xXvb0AXiWx4fohCJqemHV3bfRg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.9":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PR0s3tFSxPoKoPLoKuiZuYhwQC5bQxq/gFfywX2u/kh8rMzesARPZYKxE71I3jHWi6KDHGZl9Xb5xcFPwtvLiQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-nested-calc@3.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-normalize-display-values@3.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-oklab-function@3.0.16":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zm8nND+EraZrmbO4mgcT8FrJrAQUfWNfMmbV5uTCpWtAcO5ycX3E3bO8T1TjczKYRxC5QMM/91n9YExYCF4Mvw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-progressive-custom-properties@3.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BZlirVxCRgKlE7yVme+Xvif72eTn1MYXj8oZ4Knb+jwaH4u3AN1DjbhM7j86RP5vvuAOexJ4JwfifYYKWMN/QQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-relative-color-syntax@2.0.16":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TSM8fVqJkT8JZDranZPnkpxjU/Q1sNR192lXMND+EcKOUjYa6uYpGSfHgjnWjCRiBSciettS+sL7y9wmnas7qQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-scope-pseudo-class@3.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-stepped-value-functions@3.0.8":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-X76+thsvsmH/SkqVbN+vjeFKe1ABGLRx8/Wl68QTb/zvJWdzgx5S/nbszZP5O3nTRc5eI8NxIOrQUiy30fR+0g==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-text-decoration-shorthand@3.0.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Q8HEu4AEiwNVZBD6+DpQ8M9SajpMow4+WtmndWIAv8qxDtDYL4JK1xXWkhOGk28PrcJawOvkrEZ8Ri59UN1TJw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-trigonometric-functions@3.0.8":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zEzyGriPqoIYFgHJqWNy8bmoxjM4+ONyTap1ZzQK/Lll/VsCYvx0IckB33W/u89uLSVeeB8xC7uTrkoQ7ogKyQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/postcss-unset-value@3.0.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@csstools/selector-resolve-nested@1.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss-selector-parser: ^6.0.13
|
||||
|
||||
"@csstools/selector-specificity@3.1.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss-selector-parser: ^6.0.13
|
||||
|
||||
"@csstools/utilities@1.0.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
"@ctrl/tinycolor@4.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==,
|
||||
}
|
||||
engines: { node: ">=14" }
|
||||
|
||||
"@emmetio/abbreviation@2.3.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==,
|
||||
}
|
||||
|
||||
"@emmetio/css-abbreviation@2.1.8":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==,
|
||||
}
|
||||
|
||||
"@emmetio/css-parser@0.4.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==,
|
||||
}
|
||||
|
||||
"@emmetio/html-matcher@1.3.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==,
|
||||
}
|
||||
|
||||
"@emmetio/scanner@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==,
|
||||
}
|
||||
|
||||
"@emmetio/stream-reader-utils@0.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==,
|
||||
}
|
||||
|
||||
"@emmetio/stream-reader@2.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==,
|
||||
}
|
||||
|
||||
"@emnapi/runtime@1.1.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==,
|
||||
}
|
||||
|
||||
"@esbuild/aix-ppc64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ppc64]
|
||||
os: [aix]
|
||||
|
||||
"@esbuild/aix-ppc64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ppc64]
|
||||
os: [aix]
|
||||
|
||||
"@esbuild/android-arm64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/android-arm64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/android-arm@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/android-arm@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/android-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/android-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
||||
"@esbuild/darwin-arm64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@esbuild/darwin-arm64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@esbuild/darwin-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@esbuild/darwin-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@esbuild/freebsd-arm64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
"@esbuild/freebsd-arm64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
"@esbuild/freebsd-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
"@esbuild/freebsd-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
"@esbuild/linux-arm64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-arm64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-arm@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-arm@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-ia32@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-ia32@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-loong64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-loong64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-mips64el@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-mips64el@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-ppc64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-ppc64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-riscv64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-riscv64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-s390x@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-s390x@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/linux-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@esbuild/netbsd-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
|
||||
"@esbuild/netbsd-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
|
||||
"@esbuild/openbsd-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
|
||||
"@esbuild/openbsd-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
|
||||
"@esbuild/sunos-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
|
||||
"@esbuild/sunos-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
|
||||
"@esbuild/win32-arm64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
"@esbuild/win32-arm64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
"@esbuild/win32-ia32@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
"@esbuild/win32-ia32@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
"@esbuild/win32-x64@0.20.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
"@esbuild/win32-x64@0.21.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
"@expressive-code/core@0.35.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SYamcarAjufYhbuK/kfvJSvAXLsfnM7DKc78R7Dq4B73R5bKQK2m5zR0l57tXr4yp2C5Z8lu5xZncdwWxcmPdg==,
|
||||
}
|
||||
|
||||
"@expressive-code/plugin-frames@0.35.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QYytMq6IsaHgTofQ5b6d+CnbxkqLdikSF2hC+IL/ZZwPYHYZoUlmjIwmJZhY4/hHqJGELrtZsyVdlt06RntgmA==,
|
||||
}
|
||||
|
||||
"@expressive-code/plugin-shiki@0.35.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-aFQBPepv0zhVXqJFAvfQ4vXYv/meJKiqmEEKSxdjAfwXllIV49PDlnGEXmbGYjR4hUQQjbfDgzAbrbfePc3YVQ==,
|
||||
}
|
||||
|
||||
"@expressive-code/plugin-text-markers@0.35.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==,
|
||||
}
|
||||
|
||||
"@fontsource/inter@5.0.18":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-YCsoYPTcs713sI7tLtxaPrIhXAXvEetGg5Ry02ivA8qUOb3fQHojbK/X9HLD5OOKvFUNR2Ynkwb1kR1hVKQHpw==,
|
||||
}
|
||||
|
||||
"@fontsource/rubik@5.0.20":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4iEk1Nnnz4kzrpfsjfHXOm7HDVtsDfs8uihhE4LaXqQuxnY8lERZWJhtGAKILDwbx3gsnVXI+0beUNLRmaHeCw==,
|
||||
}
|
||||
|
||||
"@img/sharp-darwin-arm64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.26",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@img/sharp-darwin-x64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.26",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@img/sharp-libvips-darwin-arm64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==,
|
||||
}
|
||||
engines: { macos: ">=11", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@img/sharp-libvips-darwin-x64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==,
|
||||
}
|
||||
engines:
|
||||
{ macos: ">=10.13", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@img/sharp-libvips-linux-arm64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==,
|
||||
}
|
||||
engines:
|
||||
{ glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-libvips-linux-arm@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==,
|
||||
}
|
||||
engines:
|
||||
{ glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-libvips-linux-s390x@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==,
|
||||
}
|
||||
engines:
|
||||
{ glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-libvips-linux-x64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==,
|
||||
}
|
||||
engines:
|
||||
{ glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-arm64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==,
|
||||
}
|
||||
engines:
|
||||
{ musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-x64@1.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==,
|
||||
}
|
||||
engines:
|
||||
{ musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" }
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linux-arm64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.26",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linux-arm@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.28",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linux-s390x@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.31",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linux-x64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
glibc: ">=2.26",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linuxmusl-arm64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
musl: ">=1.2.2",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-linuxmusl-x64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
musl: ">=1.2.2",
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@img/sharp-wasm32@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [wasm32]
|
||||
|
||||
"@img/sharp-win32-ia32@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
"@img/sharp-win32-x64@0.33.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==,
|
||||
}
|
||||
engines:
|
||||
{
|
||||
node: ^18.17.0 || ^20.3.0 || >=21.0.0,
|
||||
npm: ">=9.6.5",
|
||||
pnpm: ">=7.1.0",
|
||||
yarn: ">=3.2.0",
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
"@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-etqLfpSJ5zaw76KUNF603be6d6QsiQPmaHr9FKEp4zhLZJzWCCMH6Icak7MtLUFLZLMpL761mZNImi/joBo1ZA==,
|
||||
}
|
||||
|
||||
"@jridgewell/gen-mapping@0.3.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@jridgewell/gen-mapping@0.3.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@jridgewell/resolve-uri@3.1.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@jridgewell/set-array@1.1.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@jridgewell/set-array@1.2.1":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
|
||||
"@jridgewell/sourcemap-codec@1.4.15":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==,
|
||||
}
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.20":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==,
|
||||
}
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.25":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==,
|
||||
}
|
||||
|
||||
"@mdx-js/mdx@3.0.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==,
|
||||
}
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
"@nodelib/fs.stat@2.0.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
"@nodelib/fs.walk@1.2.8":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
"@pagefind/darwin-arm64@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@pagefind/darwin-x64@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xkdvp0D9Ld/ZKsjo/y1bgfhTEU72ITimd2PMMQtts7jf6JPIOJbsiErCvm37m/qMFuPGEq/8d+fZ4pydOj08HQ==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@pagefind/default-ui@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-edkcaPSKq67C49Vehjo+LQCpT615v4d7JRhfGzFPccePvdklaL+VXrfghN/uIfsdoG+HoLI1PcYy2iFcB9CTkw==,
|
||||
}
|
||||
|
||||
"@pagefind/linux-arm64@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jGBrcCzIrMnNxLKVtogaQyajVfTAXM59KlBEwg6vTn8NW4fQ6nuFbbhlG4dTIsaamjEM5e8ZBEAKZfTB/qd9xw==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@pagefind/linux-x64@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LIn/QcvcEtLEBqKe5vpSbSC2O3fvqbRCWOTIklslqSORisCsvzsWbP6j+LYxE9q0oWIfkdMoWV1vrE/oCKRxHg==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@pagefind/windows-x64@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QlBCVeZfj9fc9sbUgdOz76ZDbeK4xZihOBAFqGuRJeChfM8pnVeH9iqSnXgO3+m9oITugTf7PicyRUFAG76xeQ==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==,
|
||||
}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
"@rollup/rollup-android-arm64@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
"@rollup/rollup-darwin-arm64@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
"@rollup/rollup-darwin-x64@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==,
|
||||
}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==,
|
||||
}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==,
|
||||
}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==,
|
||||
}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==,
|
||||
}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==,
|
||||
}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==,
|
||||
}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.17.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==,
|
||||
}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
"@shikijs/core@1.5.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==,
|
||||
}
|
||||
|
||||
"@trysound/sax@0.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==,
|
||||
}
|
||||
engines: { node: ">=10.13.0" }
|
||||
|
||||
"@types/acorn@4.0.6":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==,
|
||||
}
|
||||
|
||||
"@types/babel__core@7.20.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==,
|
||||
}
|
||||
|
||||
"@types/babel__generator@7.6.7":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==,
|
||||
}
|
||||
|
||||
"@types/babel__template@7.4.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==,
|
||||
}
|
||||
|
||||
"@types/babel__traverse@7.20.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==,
|
||||
}
|
||||
|
||||
"@types/cookie@0.6.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==,
|
||||
}
|
||||
|
||||
"@types/debug@4.1.12":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==,
|
||||
}
|
||||
|
||||
"@types/estree-jsx@1.0.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==,
|
||||
}
|
||||
|
||||
"@types/estree@1.0.5":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==,
|
||||
}
|
||||
|
||||
"@types/hast@3.0.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==,
|
||||
}
|
||||
|
||||
"@types/mdast@4.0.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==,
|
||||
}
|
||||
|
||||
"@types/mdx@2.0.10":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==,
|
||||
}
|
||||
|
||||
"@types/ms@0.7.34":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==,
|
||||
}
|
||||
|
||||
"@types/nlcst@1.0.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==,
|
||||
}
|
||||
|
||||
"@types/node@17.0.45":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==,
|
||||
}
|
||||
|
||||
"@types/sax@1.2.7":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==,
|
||||
}
|
||||
|
||||
"@types/unist@2.0.10":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==,
|
||||
}
|
||||
|
||||
"@types/unist@3.0.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==,
|
||||
}
|
||||
|
||||
"@ungap/structured-clone@1.2.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==,
|
||||
}
|
||||
|
||||
"@volar/kit@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TyRYaj56NBwa+0DgYbIkNQm+pN5DaV1dvZ5PzoKGDk9oag/sCG+W6wVkyaqmYCNJkXpmRtM627RkeMRTBvnYzw==,
|
||||
}
|
||||
peerDependencies:
|
||||
typescript: "*"
|
||||
|
||||
"@volar/language-core@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7As47GndxGxsqqYnbreLrfB5NDUeQioPM2LJKUuB4/34c0NpEJ2byVl3c9KYdjIdiEstWZ9JLtLKNTaPWb5jtA==,
|
||||
}
|
||||
|
||||
"@volar/language-server@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wgRsKsqFMY7MRkmBfIX+GB0uzAv2Nks7YS3Ud6RWdHsjEu7tF+cXzBX/IRgW5HOayLLPC1xES2PYXk26hdOIoA==,
|
||||
}
|
||||
|
||||
"@volar/language-service@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3OxJFADEsAZp1RoTS3SX2GY9SeVnB9mbd3N/Faz45IvnT2EFAyVJGPOyrz5bJDvKuCtjdoTNNWS1GX1bHGytrA==,
|
||||
}
|
||||
|
||||
"@volar/snapshot-document@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XwL9Jo5+nn4WZystok1+kRXbmFuJXaCx0KfJYZizJQDd7kPDgBcyci/aKsBVNhIgiD9JT0KKycru0ndyHRadGQ==,
|
||||
}
|
||||
|
||||
"@volar/source-map@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-m92FLpR9vB1YEZfiZ+bfgpLrToL/DNkOrorWVep3pffHrwwI4Tx2oIQN+sqHJfKkiT5N3J1owC+8crhAEinfjg==,
|
||||
}
|
||||
|
||||
"@volar/typescript@2.2.4":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uAQC53tgEbHO62G8NXMfmBrJAlP2QJ9WxVEEQqqK3I6VSy8frL5LbH3hAWODxiwMWixv74wJLWlKbWXOgdIoRQ==,
|
||||
}
|
||||
|
||||
"@vscode/emmet-helper@2.9.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==,
|
||||
}
|
||||
|
||||
"@vscode/l10n@0.0.16":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==,
|
||||
}
|
||||
|
||||
"@vscode/l10n@0.0.18":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==,
|
||||
}
|
||||
|
||||
acorn-jsx@5.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
|
||||
}
|
||||
peerDependencies:
|
||||
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
|
||||
acorn@8.11.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==,
|
||||
}
|
||||
engines: { node: ">=0.4.0" }
|
||||
hasBin: true
|
||||
|
||||
acorn@8.11.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==,
|
||||
}
|
||||
engines: { node: ">=0.4.0" }
|
||||
hasBin: true
|
||||
|
||||
ansi-align@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==,
|
||||
}
|
||||
|
||||
ansi-regex@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
ansi-regex@6.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
ansi-styles@3.2.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
ansi-styles@4.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
ansi-styles@6.2.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
any-promise@1.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==,
|
||||
}
|
||||
|
||||
anymatch@3.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
arg@5.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==,
|
||||
}
|
||||
|
||||
argparse@1.0.10:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==,
|
||||
}
|
||||
|
||||
argparse@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
|
||||
}
|
||||
|
||||
aria-query@5.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==,
|
||||
}
|
||||
|
||||
array-iterate@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==,
|
||||
}
|
||||
|
||||
astring@1.8.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
astro-expressive-code@0.35.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-f1L1m3J3EzZHDEox6TXmuKo5fTSbaNxE/HU0S0UQmvlCowtOKnU/LOsoDwsbQSYGKz+fdLRPsCjFMiKqEoyfcw==,
|
||||
}
|
||||
peerDependencies:
|
||||
astro: ^4.0.0-beta || ^3.3.0
|
||||
|
||||
astro@4.8.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-psHIfK+e+bMPhRwghV9yCGH/uc1jvY4DHmDZdoEepax9yA7kzYH0wt3dpkqlcrO2zxl5jzSC3DmqZfkD6wnW9A==,
|
||||
}
|
||||
engines:
|
||||
{ node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" }
|
||||
hasBin: true
|
||||
|
||||
autoprefixer@10.4.19:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==,
|
||||
}
|
||||
engines: { node: ^10 || ^12 || >=14 }
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
postcss: ^8.1.0
|
||||
|
||||
axobject-query@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==,
|
||||
}
|
||||
|
||||
bail@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==,
|
||||
}
|
||||
|
||||
balanced-match@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
|
||||
}
|
||||
|
||||
base-64@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==,
|
||||
}
|
||||
|
||||
bcp-47-match@2.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==,
|
||||
}
|
||||
|
||||
bcp-47@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==,
|
||||
}
|
||||
|
||||
binary-extensions@2.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
boolbase@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==,
|
||||
}
|
||||
|
||||
boxen@7.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==,
|
||||
}
|
||||
engines: { node: ">=14.16" }
|
||||
|
||||
brace-expansion@1.1.11:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==,
|
||||
}
|
||||
|
||||
braces@3.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
browserslist@4.23.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==,
|
||||
}
|
||||
engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
|
||||
hasBin: true
|
||||
|
||||
camelcase-css@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
camelcase@7.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==,
|
||||
}
|
||||
engines: { node: ">=14.16" }
|
||||
|
||||
caniuse-api@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==,
|
||||
}
|
||||
|
||||
caniuse-lite@1.0.30001620:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==,
|
||||
}
|
||||
|
||||
ccount@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==,
|
||||
}
|
||||
|
||||
chalk@2.4.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
chalk@5.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==,
|
||||
}
|
||||
engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 }
|
||||
|
||||
character-entities-html4@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==,
|
||||
}
|
||||
|
||||
character-entities-legacy@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==,
|
||||
}
|
||||
|
||||
character-entities@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==,
|
||||
}
|
||||
|
||||
character-reference-invalid@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==,
|
||||
}
|
||||
|
||||
chokidar@3.5.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==,
|
||||
}
|
||||
engines: { node: ">= 8.10.0" }
|
||||
|
||||
chokidar@3.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==,
|
||||
}
|
||||
engines: { node: ">= 8.10.0" }
|
||||
|
||||
ci-info@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
cli-boxes@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
cli-cursor@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
|
||||
cli-spinners@2.9.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
cliui@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
clsx@2.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
collapse-white-space@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==,
|
||||
}
|
||||
|
||||
color-convert@1.9.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==,
|
||||
}
|
||||
|
||||
color-convert@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
|
||||
}
|
||||
engines: { node: ">=7.0.0" }
|
||||
|
||||
color-name@1.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==,
|
||||
}
|
||||
|
||||
color-name@1.1.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
|
||||
}
|
||||
|
||||
color-string@1.9.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==,
|
||||
}
|
||||
|
||||
color@4.2.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==,
|
||||
}
|
||||
engines: { node: ">=12.5.0" }
|
||||
|
||||
colord@2.9.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==,
|
||||
}
|
||||
|
||||
comma-separated-tokens@2.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==,
|
||||
}
|
||||
|
||||
commander@4.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
commander@7.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
|
||||
}
|
||||
engines: { node: ">= 10" }
|
||||
|
||||
common-ancestor-path@1.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==,
|
||||
}
|
||||
|
||||
concat-map@0.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
|
||||
}
|
||||
|
||||
convert-source-map@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
|
||||
}
|
||||
|
||||
cookie@0.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==,
|
||||
}
|
||||
engines: { node: ">= 0.6" }
|
||||
|
||||
cross-spawn@7.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
css-blank-pseudo@6.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
css-declaration-sorter@7.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.0.9
|
||||
|
||||
css-has-pseudo@6.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ZTv6RlvJJZKp32jPYnAJVhowDCrRrHUTAxsYSuUPBEDJjzws6neMnzkRblxtgmv1RgcV5dhH2gn7E3wA9Wt6lw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
css-prefers-color-scheme@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
css-select@5.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==,
|
||||
}
|
||||
|
||||
css-selector-parser@3.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==,
|
||||
}
|
||||
|
||||
css-tree@2.2.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==,
|
||||
}
|
||||
engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" }
|
||||
|
||||
css-tree@2.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==,
|
||||
}
|
||||
engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 }
|
||||
|
||||
css-what@6.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
cssdb@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-diegY/vnOYmPXY0bOBj5jeHaiK8MMpjgPuipirY8pF9AthtqEXgqVdKF5tnb6RTc/ZdhQqG0TBnInQ5CbbUW7Q==,
|
||||
}
|
||||
|
||||
cssesc@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
hasBin: true
|
||||
|
||||
cssnano-preset-default@7.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Fumyr+uZMcjYQeuHssAZxn0cKj3cdQc5GcxkBcmEzISGB+UW9CLNlU4tBOJbJGcPukFDlicG32eFbrc8K9V5pw==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
cssnano-utils@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
cssnano@7.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-917Mej/4SdI7b55atsli3sU4MOJ9XDoKgnlCtQtXYj8XUFcM3riTuYHyqBBnnskawW+zWwp0KxJzpEUodlpqUg==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
csso@5.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==,
|
||||
}
|
||||
engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" }
|
||||
|
||||
debug@4.3.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==,
|
||||
}
|
||||
engines: { node: ">=6.0" }
|
||||
peerDependencies:
|
||||
supports-color: "*"
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
|
||||
decode-named-character-reference@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==,
|
||||
}
|
||||
|
||||
dequal@2.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
detect-libc@2.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
deterministic-object-hash@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
devalue@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==,
|
||||
}
|
||||
|
||||
devlop@1.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==,
|
||||
}
|
||||
|
||||
didyoumean@1.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==,
|
||||
}
|
||||
|
||||
diff@5.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==,
|
||||
}
|
||||
engines: { node: ">=0.3.1" }
|
||||
|
||||
direction@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
dlv@1.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==,
|
||||
}
|
||||
|
||||
dom-serializer@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==,
|
||||
}
|
||||
|
||||
domelementtype@2.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==,
|
||||
}
|
||||
|
||||
domhandler@5.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==,
|
||||
}
|
||||
engines: { node: ">= 4" }
|
||||
|
||||
domutils@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==,
|
||||
}
|
||||
|
||||
dset@3.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
eastasianwidth@0.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==,
|
||||
}
|
||||
|
||||
electron-to-chromium@1.4.773:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==,
|
||||
}
|
||||
|
||||
emmet@2.4.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==,
|
||||
}
|
||||
|
||||
emoji-regex@10.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==,
|
||||
}
|
||||
|
||||
emoji-regex@8.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
|
||||
}
|
||||
|
||||
emoji-regex@9.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
|
||||
}
|
||||
|
||||
entities@4.5.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==,
|
||||
}
|
||||
engines: { node: ">=0.12" }
|
||||
|
||||
es-module-lexer@1.4.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==,
|
||||
}
|
||||
|
||||
es-module-lexer@1.5.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==,
|
||||
}
|
||||
|
||||
esbuild@0.20.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
hasBin: true
|
||||
|
||||
esbuild@0.21.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
hasBin: true
|
||||
|
||||
escalade@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
escape-string-regexp@1.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==,
|
||||
}
|
||||
engines: { node: ">=0.8.0" }
|
||||
|
||||
escape-string-regexp@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
esprima@4.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
hasBin: true
|
||||
|
||||
estree-util-attach-comments@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==,
|
||||
}
|
||||
|
||||
estree-util-build-jsx@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==,
|
||||
}
|
||||
|
||||
estree-util-is-identifier-name@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==,
|
||||
}
|
||||
|
||||
estree-util-to-js@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==,
|
||||
}
|
||||
|
||||
estree-util-visit@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==,
|
||||
}
|
||||
|
||||
estree-walker@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
|
||||
}
|
||||
|
||||
eventemitter3@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==,
|
||||
}
|
||||
|
||||
execa@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==,
|
||||
}
|
||||
engines: { node: ">=16.17" }
|
||||
|
||||
expressive-code@0.35.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==,
|
||||
}
|
||||
|
||||
extend-shallow@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
extend@3.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==,
|
||||
}
|
||||
|
||||
fast-glob@3.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==,
|
||||
}
|
||||
engines: { node: ">=8.6.0" }
|
||||
|
||||
fastq@1.15.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==,
|
||||
}
|
||||
|
||||
fill-range@7.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
find-up@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
find-up@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
find-yarn-workspace-root2@1.2.16:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==,
|
||||
}
|
||||
|
||||
flattie@1.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
fraction.js@4.3.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==,
|
||||
}
|
||||
|
||||
fs.realpath@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==,
|
||||
}
|
||||
|
||||
fsevents@2.3.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
|
||||
}
|
||||
engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
|
||||
os: [darwin]
|
||||
|
||||
function-bind@1.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
|
||||
}
|
||||
|
||||
gensync@1.0.0-beta.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
|
||||
}
|
||||
engines: { node: ">=6.9.0" }
|
||||
|
||||
get-caller-file@2.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==,
|
||||
}
|
||||
engines: { node: 6.* || 8.* || >= 10.* }
|
||||
|
||||
get-east-asian-width@1.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
get-stream@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==,
|
||||
}
|
||||
engines: { node: ">=16" }
|
||||
|
||||
github-slugger@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==,
|
||||
}
|
||||
|
||||
glob-parent@5.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
glob-parent@6.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
|
||||
}
|
||||
engines: { node: ">=10.13.0" }
|
||||
|
||||
glob@7.1.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==,
|
||||
}
|
||||
|
||||
globals@11.12.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
graceful-fs@4.2.11:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
|
||||
}
|
||||
|
||||
gray-matter@4.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==,
|
||||
}
|
||||
engines: { node: ">=6.0" }
|
||||
|
||||
has-flag@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
hasown@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==,
|
||||
}
|
||||
engines: { node: ">= 0.4" }
|
||||
|
||||
hast-util-embedded@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==,
|
||||
}
|
||||
|
||||
hast-util-from-html@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==,
|
||||
}
|
||||
|
||||
hast-util-from-parse5@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==,
|
||||
}
|
||||
|
||||
hast-util-has-property@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==,
|
||||
}
|
||||
|
||||
hast-util-is-body-ok-link@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==,
|
||||
}
|
||||
|
||||
hast-util-is-element@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==,
|
||||
}
|
||||
|
||||
hast-util-parse-selector@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==,
|
||||
}
|
||||
|
||||
hast-util-phrasing@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==,
|
||||
}
|
||||
|
||||
hast-util-raw@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==,
|
||||
}
|
||||
|
||||
hast-util-select@6.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==,
|
||||
}
|
||||
|
||||
hast-util-to-estree@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==,
|
||||
}
|
||||
|
||||
hast-util-to-html@9.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==,
|
||||
}
|
||||
|
||||
hast-util-to-html@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==,
|
||||
}
|
||||
|
||||
hast-util-to-jsx-runtime@2.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==,
|
||||
}
|
||||
|
||||
hast-util-to-parse5@8.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==,
|
||||
}
|
||||
|
||||
hast-util-to-string@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==,
|
||||
}
|
||||
|
||||
hast-util-to-text@4.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==,
|
||||
}
|
||||
|
||||
hast-util-whitespace@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==,
|
||||
}
|
||||
|
||||
hastscript@8.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==,
|
||||
}
|
||||
|
||||
hastscript@9.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==,
|
||||
}
|
||||
|
||||
html-escaper@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==,
|
||||
}
|
||||
|
||||
html-void-elements@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==,
|
||||
}
|
||||
|
||||
html-whitespace-sensitive-tag-names@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==,
|
||||
}
|
||||
|
||||
http-cache-semantics@4.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==,
|
||||
}
|
||||
|
||||
human-signals@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==,
|
||||
}
|
||||
engines: { node: ">=16.17.0" }
|
||||
|
||||
import-meta-resolve@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==,
|
||||
}
|
||||
|
||||
inflight@1.0.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==,
|
||||
}
|
||||
|
||||
inherits@2.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
|
||||
}
|
||||
|
||||
inline-style-parser@0.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==,
|
||||
}
|
||||
|
||||
inline-style-parser@0.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==,
|
||||
}
|
||||
|
||||
is-alphabetical@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==,
|
||||
}
|
||||
|
||||
is-alphanumerical@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==,
|
||||
}
|
||||
|
||||
is-arrayish@0.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==,
|
||||
}
|
||||
|
||||
is-binary-path@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
is-buffer@2.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
is-core-module@2.13.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==,
|
||||
}
|
||||
|
||||
is-decimal@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==,
|
||||
}
|
||||
|
||||
is-docker@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
hasBin: true
|
||||
|
||||
is-extendable@0.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
is-extglob@2.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
is-fullwidth-code-point@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
is-glob@4.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
is-hexadecimal@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==,
|
||||
}
|
||||
|
||||
is-inside-container@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==,
|
||||
}
|
||||
engines: { node: ">=14.16" }
|
||||
hasBin: true
|
||||
|
||||
is-interactive@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
is-number@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
|
||||
}
|
||||
engines: { node: ">=0.12.0" }
|
||||
|
||||
is-plain-obj@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
is-reference@3.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==,
|
||||
}
|
||||
|
||||
is-stream@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
|
||||
is-unicode-supported@1.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
is-unicode-supported@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
is-wsl@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==,
|
||||
}
|
||||
engines: { node: ">=16" }
|
||||
|
||||
isexe@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
|
||||
}
|
||||
|
||||
jiti@1.21.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
js-tokens@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
|
||||
}
|
||||
|
||||
js-yaml@3.14.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
js-yaml@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
jsesc@2.5.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
hasBin: true
|
||||
|
||||
json5@2.2.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
hasBin: true
|
||||
|
||||
jsonc-parser@2.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==,
|
||||
}
|
||||
|
||||
kind-of@6.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
kleur@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
kleur@4.1.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
lilconfig@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
lilconfig@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==,
|
||||
}
|
||||
engines: { node: ">=14" }
|
||||
|
||||
lilconfig@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==,
|
||||
}
|
||||
engines: { node: ">=14" }
|
||||
|
||||
lines-and-columns@1.2.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
|
||||
}
|
||||
|
||||
load-yaml-file@0.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
locate-path@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
locate-path@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
lodash.memoize@4.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==,
|
||||
}
|
||||
|
||||
lodash.uniq@4.5.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==,
|
||||
}
|
||||
|
||||
log-symbols@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
longest-streak@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==,
|
||||
}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
|
||||
}
|
||||
|
||||
lru-cache@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
magic-string@0.30.10:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==,
|
||||
}
|
||||
|
||||
markdown-extensions@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==,
|
||||
}
|
||||
engines: { node: ">=16" }
|
||||
|
||||
markdown-table@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==,
|
||||
}
|
||||
|
||||
mdast-util-definitions@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==,
|
||||
}
|
||||
|
||||
mdast-util-directive@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==,
|
||||
}
|
||||
|
||||
mdast-util-find-and-replace@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==,
|
||||
}
|
||||
|
||||
mdast-util-from-markdown@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==,
|
||||
}
|
||||
|
||||
mdast-util-gfm-autolink-literal@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==,
|
||||
}
|
||||
|
||||
mdast-util-gfm-footnote@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==,
|
||||
}
|
||||
|
||||
mdast-util-gfm-strikethrough@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==,
|
||||
}
|
||||
|
||||
mdast-util-gfm-table@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==,
|
||||
}
|
||||
|
||||
mdast-util-gfm-task-list-item@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==,
|
||||
}
|
||||
|
||||
mdast-util-gfm@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==,
|
||||
}
|
||||
|
||||
mdast-util-mdx-expression@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==,
|
||||
}
|
||||
|
||||
mdast-util-mdx-jsx@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==,
|
||||
}
|
||||
|
||||
mdast-util-mdx@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==,
|
||||
}
|
||||
|
||||
mdast-util-mdxjs-esm@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==,
|
||||
}
|
||||
|
||||
mdast-util-phrasing@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==,
|
||||
}
|
||||
|
||||
mdast-util-to-hast@13.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==,
|
||||
}
|
||||
|
||||
mdast-util-to-markdown@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==,
|
||||
}
|
||||
|
||||
mdast-util-to-string@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==,
|
||||
}
|
||||
|
||||
mdn-data@2.0.28:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==,
|
||||
}
|
||||
|
||||
mdn-data@2.0.30:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==,
|
||||
}
|
||||
|
||||
merge-stream@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
|
||||
}
|
||||
|
||||
merge2@1.4.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
micromark-core-commonmark@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==,
|
||||
}
|
||||
|
||||
micromark-extension-directive@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-autolink-literal@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-footnote@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-strikethrough@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-table@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-tagfilter@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm-task-list-item@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==,
|
||||
}
|
||||
|
||||
micromark-extension-gfm@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==,
|
||||
}
|
||||
|
||||
micromark-extension-mdx-expression@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==,
|
||||
}
|
||||
|
||||
micromark-extension-mdx-jsx@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==,
|
||||
}
|
||||
|
||||
micromark-extension-mdx-md@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==,
|
||||
}
|
||||
|
||||
micromark-extension-mdxjs-esm@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==,
|
||||
}
|
||||
|
||||
micromark-extension-mdxjs@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==,
|
||||
}
|
||||
|
||||
micromark-factory-destination@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==,
|
||||
}
|
||||
|
||||
micromark-factory-label@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==,
|
||||
}
|
||||
|
||||
micromark-factory-mdx-expression@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==,
|
||||
}
|
||||
|
||||
micromark-factory-space@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==,
|
||||
}
|
||||
|
||||
micromark-factory-title@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==,
|
||||
}
|
||||
|
||||
micromark-factory-whitespace@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==,
|
||||
}
|
||||
|
||||
micromark-util-character@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==,
|
||||
}
|
||||
|
||||
micromark-util-chunked@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==,
|
||||
}
|
||||
|
||||
micromark-util-classify-character@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==,
|
||||
}
|
||||
|
||||
micromark-util-combine-extensions@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==,
|
||||
}
|
||||
|
||||
micromark-util-decode-numeric-character-reference@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==,
|
||||
}
|
||||
|
||||
micromark-util-decode-string@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==,
|
||||
}
|
||||
|
||||
micromark-util-encode@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==,
|
||||
}
|
||||
|
||||
micromark-util-events-to-acorn@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==,
|
||||
}
|
||||
|
||||
micromark-util-html-tag-name@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==,
|
||||
}
|
||||
|
||||
micromark-util-normalize-identifier@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==,
|
||||
}
|
||||
|
||||
micromark-util-resolve-all@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==,
|
||||
}
|
||||
|
||||
micromark-util-sanitize-uri@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==,
|
||||
}
|
||||
|
||||
micromark-util-subtokenize@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==,
|
||||
}
|
||||
|
||||
micromark-util-symbol@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==,
|
||||
}
|
||||
|
||||
micromark-util-types@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==,
|
||||
}
|
||||
|
||||
micromark@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==,
|
||||
}
|
||||
|
||||
micromatch@4.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==,
|
||||
}
|
||||
engines: { node: ">=8.6" }
|
||||
|
||||
mimic-fn@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
mimic-fn@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
minimatch@3.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
|
||||
}
|
||||
|
||||
mrmime@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
ms@2.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==,
|
||||
}
|
||||
|
||||
muggle-string@0.4.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==,
|
||||
}
|
||||
|
||||
mz@2.7.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==,
|
||||
}
|
||||
|
||||
nanoid@3.3.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==,
|
||||
}
|
||||
engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
|
||||
hasBin: true
|
||||
|
||||
nlcst-to-string@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==,
|
||||
}
|
||||
|
||||
node-releases@2.0.14:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==,
|
||||
}
|
||||
|
||||
normalize-path@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
normalize-range@0.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
not@0.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==,
|
||||
}
|
||||
|
||||
npm-run-path@5.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
|
||||
nth-check@2.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==,
|
||||
}
|
||||
|
||||
object-assign@4.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
object-hash@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
once@1.4.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
|
||||
}
|
||||
|
||||
onetime@5.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
onetime@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
ora@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
p-limit@2.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
p-limit@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
p-limit@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
p-locate@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
p-locate@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
p-queue@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
p-timeout@6.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==,
|
||||
}
|
||||
engines: { node: ">=14.16" }
|
||||
|
||||
p-try@2.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
pagefind@1.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
parse-entities@4.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==,
|
||||
}
|
||||
|
||||
parse-latin@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==,
|
||||
}
|
||||
|
||||
parse5@7.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==,
|
||||
}
|
||||
|
||||
path-browserify@1.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==,
|
||||
}
|
||||
|
||||
path-exists@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
path-is-absolute@1.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
path-key@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
path-key@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
path-parse@1.0.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
|
||||
}
|
||||
|
||||
path-to-regexp@6.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==,
|
||||
}
|
||||
|
||||
periscopic@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==,
|
||||
}
|
||||
|
||||
picocolors@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==,
|
||||
}
|
||||
|
||||
picomatch@2.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
|
||||
}
|
||||
engines: { node: ">=8.6" }
|
||||
|
||||
pify@2.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
pify@4.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
pirates@4.0.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
pkg-dir@4.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
postcss-attribute-case-insensitive@6.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-calc@10.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==,
|
||||
}
|
||||
engines: { node: ^18.12 || ^20.9 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.38
|
||||
|
||||
postcss-clamp@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==,
|
||||
}
|
||||
engines: { node: ">=7.6.0" }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.6
|
||||
|
||||
postcss-color-functional-notation@6.0.11:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gJ+hAtAsgBF4w7eh28Pg7EA60lx7vE5xO/B/yZawaI6FYHky+5avA9YSe73nJHnAMEVFpCMeJc6Wts5g+niksg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-color-hex-alpha@9.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-color-rebeccapurple@9.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-colormin@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5CN6fqtsEtEtwf3mFV3B4UaZnlYljPpzmGeDB4yCK067PnAtfLe9uX2aFZaEwxHE7HopG5rUkW8gyHrNAesHEg==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-convert-values@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bMuzDgXBbFbByPgj+/r6va8zNuIDUaIIbvAFgdO1t3zdgJZ77BZvu6dfWyd6gHEJnYzmeVr9ayUsAQL3/qLJ0w==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-custom-media@10.0.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BjihQoIO4Wjqv9fQNExSJIim8UAmkhLxuJnhJsLTRFSba1y1MhxkJK5awsM//6JJ+/Tu5QUxf624RQAvKHv6SA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-custom-properties@13.3.10:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ejaalIpl7p0k0L5ngIZ86AZGmp3m1KdeOCbSQTK4gQcB1ncaoPTHorw206+tsZRIhIDYvh5ZButEje6740YDXw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-custom-selectors@7.1.10:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bV/6+IExyT2J4kMzX6c+ZMlN1xDfjcC4ePr1ywKezcTgwgUn11qQN3jdzFBpo8Dk1K7vO/OYOwMb5AtJP4JZcg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-dir-pseudo-class@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-discard-comments@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xpSdzRqYmy4YIVmjfGyYXKaI1SRnK6CTr+4Zmvyof8ANwvgfZgGdVtmgAvzh59gJm808mJCWQC9tFN0KF5dEXA==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-discard-duplicates@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-discard-empty@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-discard-overridden@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-double-position-gradients@5.0.6:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QJ+089FKMaqDxOhhIHsJrh4IP7h4PIHNC5jZP5PMmnfUScNu8Hji2lskqpFWCvu+5sj+2EJFyzKd13sLEWOZmQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-focus-visible@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-focus-within@8.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-font-variant@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==,
|
||||
}
|
||||
peerDependencies:
|
||||
postcss: ^8.1.0
|
||||
|
||||
postcss-gap-properties@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-image-set-function@6.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-import@15.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==,
|
||||
}
|
||||
engines: { node: ">=14.0.0" }
|
||||
peerDependencies:
|
||||
postcss: ^8.0.0
|
||||
|
||||
postcss-js@4.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==,
|
||||
}
|
||||
engines: { node: ^12 || ^14 || >= 16 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.21
|
||||
|
||||
postcss-lab-function@6.0.16:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QWv0VxfjgIl8jBR/wuQcm/o31jn4P/LwzYuVKzNQoO5t7HPcU0d3RfWUiDrHN3frmSv+YYZppr3P81tKFTDyqg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-load-config@4.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==,
|
||||
}
|
||||
engines: { node: ">= 14" }
|
||||
peerDependencies:
|
||||
postcss: ">=8.0.9"
|
||||
ts-node: ">=9.0.0"
|
||||
peerDependenciesMeta:
|
||||
postcss:
|
||||
optional: true
|
||||
ts-node:
|
||||
optional: true
|
||||
|
||||
postcss-logical@7.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-merge-longhand@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0X8I4/9+G03X5/5NnrfopG/YEln2XU8heDh7YqBaiq2SeaKIG3n66ShZPjIolmVuLBQ0BEm3yS8o1mlCLHdW7A==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-merge-rules@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Zty3VlOsD6VSjBMu6PiHCVpLegtBT/qtZRVBcSeyEZ6q1iU5qTYT0WtEoLRV+YubZZguS5/ycfP+NRiKfjv6aw==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-minify-font-values@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-minify-gradients@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-minify-params@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XOJAuX8Q/9GT1sGxlUvaFEe2H9n50bniLZblXXsAT/BwSfFYvzSZeFG7uupwc0KbKpTnflnQ7aMwGzX6JUWliQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-minify-selectors@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-f00CExZhD6lNw2vTZbcnmfxVgaVKzUw6IRsIFX3JTT8GdsoABc1WnhhGwL1i8YPJ3sSWw39fv7XPtvLb+3Uitw==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-nested@6.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==,
|
||||
}
|
||||
engines: { node: ">=12.0" }
|
||||
peerDependencies:
|
||||
postcss: ^8.2.14
|
||||
|
||||
postcss-nesting@12.1.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-CcHOq94K137E+U4Ommu7pexcpp0Tjm24zl4UcqWs1oSLAr5cLI+jLrqQ5h/bdjhMX6cMbzunyustVNnvrzF8Zg==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-normalize-charset@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-display-values@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-positions@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-repeat-style@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-string@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-timing-functions@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-unicode@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OnKV52/VFFDAim4n0pdI+JAhsolLBdnCKxE6VV5lW5Q/JeVGFN8UM8ur6/A3EAMLsT1ZRm3fDHh/rBoBQpqi2w==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-url@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-normalize-whitespace@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-opacity-percentage@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.2
|
||||
|
||||
postcss-ordered-values@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KROvC63A8UQW1eYDljQe1dtwc1E/M+mMwDT6z7khV/weHYLWTghaLRLunU7x1xw85lWFwVZOAGakxekYvKV+0w==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-overflow-shorthand@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-page-break@3.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==,
|
||||
}
|
||||
peerDependencies:
|
||||
postcss: ^8
|
||||
|
||||
postcss-place@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-preset-env@9.5.13:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-YQMwWu6MAc4Envrjf/mW2BTrb5J8WkrJ4dV2VostZVDhrmEPpYREOyhmvtlFLDxK1/AmTDY8aXjZViMC1qKu/w==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-pseudo-class-any-link@9.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-reduce-initial@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iqGgmBxY9LrblZ0BKLjmrA1mC/cf9A/wYCCqSmD6tMi+xAyVl0+DfixZIHSVDMbCPRPjNmVF0DFGth/IDGelFQ==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-reduce-transforms@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-replace-overflow-wrap@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==,
|
||||
}
|
||||
peerDependencies:
|
||||
postcss: ^8.0.3
|
||||
|
||||
postcss-selector-not@7.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA==,
|
||||
}
|
||||
engines: { node: ^14 || ^16 || >=18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4
|
||||
|
||||
postcss-selector-parser@6.0.13:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
postcss-selector-parser@6.0.16:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
postcss-svgo@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Xj5DRdvA97yRy3wjbCH2NKXtDUwEnph6EHr5ZXszsBVKCNrKXYBjzAXqav7/Afz5WwJ/1peZoTguCEJIg7ytmA==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >= 18 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-unique-selectors@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NYFqcft7vVQMZlQPsMdMPy+qU/zDpy95Malpw4GeA9ZZjM6dVXDshXtDmLc0m4WCD6XeZCJqjTfPT1USsdt+rA==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
postcss-value-parser@4.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==,
|
||||
}
|
||||
|
||||
postcss@8.4.31:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==,
|
||||
}
|
||||
engines: { node: ^10 || ^12 || >=14 }
|
||||
|
||||
postcss@8.4.33:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==,
|
||||
}
|
||||
engines: { node: ^10 || ^12 || >=14 }
|
||||
|
||||
postcss@8.4.38:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==,
|
||||
}
|
||||
engines: { node: ^10 || ^12 || >=14 }
|
||||
|
||||
preferred-pm@3.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
prismjs@1.29.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==,
|
||||
}
|
||||
engines: { node: ">=6" }
|
||||
|
||||
prompts@2.4.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==,
|
||||
}
|
||||
engines: { node: ">= 6" }
|
||||
|
||||
property-information@6.4.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==,
|
||||
}
|
||||
|
||||
queue-microtask@1.2.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
|
||||
}
|
||||
|
||||
read-cache@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==,
|
||||
}
|
||||
|
||||
readdirp@3.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==,
|
||||
}
|
||||
engines: { node: ">=8.10.0" }
|
||||
|
||||
rehype-expressive-code@0.35.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==,
|
||||
}
|
||||
|
||||
rehype-format@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==,
|
||||
}
|
||||
|
||||
rehype-minify-whitespace@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==,
|
||||
}
|
||||
|
||||
rehype-parse@9.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==,
|
||||
}
|
||||
|
||||
rehype-raw@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==,
|
||||
}
|
||||
|
||||
rehype-stringify@10.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==,
|
||||
}
|
||||
|
||||
rehype@13.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==,
|
||||
}
|
||||
|
||||
remark-directive@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==,
|
||||
}
|
||||
|
||||
remark-gfm@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==,
|
||||
}
|
||||
|
||||
remark-mdx@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==,
|
||||
}
|
||||
|
||||
remark-parse@11.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==,
|
||||
}
|
||||
|
||||
remark-rehype@11.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==,
|
||||
}
|
||||
|
||||
remark-smartypants@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
|
||||
remark-stringify@11.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==,
|
||||
}
|
||||
|
||||
request-light@0.7.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==,
|
||||
}
|
||||
|
||||
require-directory@2.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
resolve@1.22.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
restore-cursor@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==,
|
||||
}
|
||||
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
|
||||
|
||||
retext-latin@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==,
|
||||
}
|
||||
|
||||
retext-smartypants@5.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==,
|
||||
}
|
||||
|
||||
retext-stringify@3.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==,
|
||||
}
|
||||
|
||||
retext@8.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==,
|
||||
}
|
||||
|
||||
reusify@1.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==,
|
||||
}
|
||||
engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
|
||||
|
||||
rollup@4.17.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==,
|
||||
}
|
||||
engines: { node: ">=18.0.0", npm: ">=8.0.0" }
|
||||
hasBin: true
|
||||
|
||||
run-parallel@1.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
|
||||
}
|
||||
|
||||
sax@1.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==,
|
||||
}
|
||||
|
||||
section-matter@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
semver@6.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
semver@7.5.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
hasBin: true
|
||||
|
||||
semver@7.6.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
hasBin: true
|
||||
|
||||
sharp@0.33.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==,
|
||||
}
|
||||
engines: { libvips: ">=8.15.2", node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
|
||||
|
||||
shebang-command@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
shebang-regex@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
shiki@1.5.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==,
|
||||
}
|
||||
|
||||
signal-exit@3.0.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
|
||||
}
|
||||
|
||||
signal-exit@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
|
||||
}
|
||||
engines: { node: ">=14" }
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==,
|
||||
}
|
||||
|
||||
sisteransi@1.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==,
|
||||
}
|
||||
|
||||
sitemap@7.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==,
|
||||
}
|
||||
engines: { node: ">=12.0.0", npm: ">=5.6.0" }
|
||||
hasBin: true
|
||||
|
||||
source-map-js@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
source-map-js@1.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
source-map@0.7.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
|
||||
space-separated-tokens@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==,
|
||||
}
|
||||
|
||||
sprintf-js@1.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==,
|
||||
}
|
||||
|
||||
stdin-discarder@0.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
string-width@4.2.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
string-width@5.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
string-width@7.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
stringify-entities@4.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==,
|
||||
}
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
|
||||
strip-ansi@7.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
strip-bom-string@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==,
|
||||
}
|
||||
engines: { node: ">=0.10.0" }
|
||||
|
||||
strip-bom@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
strip-final-newline@3.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
style-to-object@0.4.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==,
|
||||
}
|
||||
|
||||
style-to-object@1.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==,
|
||||
}
|
||||
|
||||
stylehacks@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-47Nw4pQ6QJb4CA6dzF2m9810sjQik4dfk4UwAm5wlwhrW3syzZKF8AR4/cfO3Cr6lsFgAoznQq0Wg57qhjTA2A==,
|
||||
}
|
||||
engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 }
|
||||
peerDependencies:
|
||||
postcss: ^8.4.31
|
||||
|
||||
sucrase@3.34.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==,
|
||||
}
|
||||
engines: { node: ">=8" }
|
||||
hasBin: true
|
||||
|
||||
supports-color@5.5.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
supports-preserve-symlinks-flag@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
|
||||
}
|
||||
engines: { node: ">= 0.4" }
|
||||
|
||||
svgo@3.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==,
|
||||
}
|
||||
engines: { node: ">=14.0.0" }
|
||||
hasBin: true
|
||||
|
||||
tailwindcss@3.4.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==,
|
||||
}
|
||||
engines: { node: ">=14.0.0" }
|
||||
hasBin: true
|
||||
|
||||
thenify-all@1.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==,
|
||||
}
|
||||
engines: { node: ">=0.8" }
|
||||
|
||||
thenify@3.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==,
|
||||
}
|
||||
|
||||
to-fast-properties@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
|
||||
}
|
||||
engines: { node: ">=8.0" }
|
||||
|
||||
trim-lines@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==,
|
||||
}
|
||||
|
||||
trough@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==,
|
||||
}
|
||||
|
||||
ts-interface-checker@0.1.13:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==,
|
||||
}
|
||||
|
||||
tsconfck@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==,
|
||||
}
|
||||
engines: { node: ^18 || >=20 }
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
typescript: ^5.0.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
tslib@2.6.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==,
|
||||
}
|
||||
|
||||
type-fest@2.19.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==,
|
||||
}
|
||||
engines: { node: ">=12.20" }
|
||||
|
||||
typesafe-path@0.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==,
|
||||
}
|
||||
|
||||
typescript-auto-import-cache@0.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==,
|
||||
}
|
||||
|
||||
typescript@5.4.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==,
|
||||
}
|
||||
engines: { node: ">=14.17" }
|
||||
hasBin: true
|
||||
|
||||
unherit@3.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==,
|
||||
}
|
||||
|
||||
unified@10.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==,
|
||||
}
|
||||
|
||||
unified@11.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==,
|
||||
}
|
||||
|
||||
unist-util-find-after@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==,
|
||||
}
|
||||
|
||||
unist-util-is@5.2.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==,
|
||||
}
|
||||
|
||||
unist-util-is@6.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==,
|
||||
}
|
||||
|
||||
unist-util-modify-children@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==,
|
||||
}
|
||||
|
||||
unist-util-position-from-estree@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==,
|
||||
}
|
||||
|
||||
unist-util-position@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==,
|
||||
}
|
||||
|
||||
unist-util-remove-position@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==,
|
||||
}
|
||||
|
||||
unist-util-stringify-position@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==,
|
||||
}
|
||||
|
||||
unist-util-stringify-position@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==,
|
||||
}
|
||||
|
||||
unist-util-visit-children@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==,
|
||||
}
|
||||
|
||||
unist-util-visit-parents@5.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==,
|
||||
}
|
||||
|
||||
unist-util-visit-parents@6.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==,
|
||||
}
|
||||
|
||||
unist-util-visit@4.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==,
|
||||
}
|
||||
|
||||
unist-util-visit@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==,
|
||||
}
|
||||
|
||||
update-browserslist-db@1.0.13:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==,
|
||||
}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
browserslist: ">= 4.21.0"
|
||||
|
||||
util-deprecate@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
|
||||
}
|
||||
|
||||
vfile-location@5.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==,
|
||||
}
|
||||
|
||||
vfile-message@3.1.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==,
|
||||
}
|
||||
|
||||
vfile-message@4.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==,
|
||||
}
|
||||
|
||||
vfile@5.3.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==,
|
||||
}
|
||||
|
||||
vfile@6.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==,
|
||||
}
|
||||
|
||||
vite@5.2.11:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==,
|
||||
}
|
||||
engines: { node: ^18.0.0 || >=20.0.0 }
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
"@types/node": ^18.0.0 || >=20.0.0
|
||||
less: "*"
|
||||
lightningcss: ^1.21.0
|
||||
sass: "*"
|
||||
stylus: "*"
|
||||
sugarss: "*"
|
||||
terser: ^5.4.0
|
||||
peerDependenciesMeta:
|
||||
"@types/node":
|
||||
optional: true
|
||||
less:
|
||||
optional: true
|
||||
lightningcss:
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
stylus:
|
||||
optional: true
|
||||
sugarss:
|
||||
optional: true
|
||||
terser:
|
||||
optional: true
|
||||
|
||||
vitefu@0.2.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==,
|
||||
}
|
||||
peerDependencies:
|
||||
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
|
||||
peerDependenciesMeta:
|
||||
vite:
|
||||
optional: true
|
||||
|
||||
volar-service-css@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-f+AlUI1+kESbcZSVaNJVAnK0c/9Da5StoxzPqA5/8VqUHJWNdubWNnwG5xpFVTfgh6pgTcey3UBhBfHytFaIOg==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
|
||||
volar-service-emmet@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9nLXSDkR1vA/3fQkFEsSXAu3XovQxOpTkVG2jilQgfek/K1ZLkaA/WMhN/TtmPmQg4NxE9Ni6mA5udBQ5gVXIA==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
|
||||
volar-service-html@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tLTJqfy1v5C4nmeAsfekFIKPl4r4qDMyL0L9MWywr/EApZzPCsbeUGxCqdzxSMC2q7PMCfX2i167txDo+J0LVA==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
|
||||
volar-service-prettier@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+mBS2EsDgp/kunKEBnHvhBwIQm5v2ahw4NKpKdg4sTpXy3UxqHt+Fq/wRYQ7Z8LlNVNRVfp75ThjM+w2zaZBAw==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
prettier: ^2.2 || ^3.0
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
prettier:
|
||||
optional: true
|
||||
|
||||
volar-service-typescript-twoslash-queries@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KrPUUvKggZgV9mrDpstCzmf20irgv0ooMv+FGDzIIQUkya+d2+nSS8Mx2h9FvsYgLccUVw5jU3Rhwhd3pv/7qg==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
|
||||
volar-service-typescript@0.0.45:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-i/mMIIAMastJ2kgPo3qvX0Rrl7NyxhIYZ0ug/B4ambZcLPI1vzBgS2fmvyWX3jhBYHh8NmbAotFj+0Y9JtN47A==,
|
||||
}
|
||||
peerDependencies:
|
||||
"@volar/language-service": ~2.2.3
|
||||
peerDependenciesMeta:
|
||||
"@volar/language-service":
|
||||
optional: true
|
||||
|
||||
vscode-css-languageservice@6.2.10:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-sYUZPku4mQ06AWGCbMyjv2tdR6juBW6hTbVPFwbJvNVzdtEfBioQOgkdXg7yMJNWnXkvWSU1FL2kb4Vxu5Cdyw==,
|
||||
}
|
||||
|
||||
vscode-html-languageservice@5.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==,
|
||||
}
|
||||
|
||||
vscode-jsonrpc@8.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==,
|
||||
}
|
||||
engines: { node: ">=14.0.0" }
|
||||
|
||||
vscode-languageserver-protocol@3.17.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==,
|
||||
}
|
||||
|
||||
vscode-languageserver-textdocument@1.0.11:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==,
|
||||
}
|
||||
|
||||
vscode-languageserver-types@3.17.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==,
|
||||
}
|
||||
|
||||
vscode-languageserver@9.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==,
|
||||
}
|
||||
hasBin: true
|
||||
|
||||
vscode-nls@5.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==,
|
||||
}
|
||||
|
||||
vscode-uri@2.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==,
|
||||
}
|
||||
|
||||
vscode-uri@3.0.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==,
|
||||
}
|
||||
|
||||
web-namespaces@2.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==,
|
||||
}
|
||||
|
||||
which-pm-runs@1.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==,
|
||||
}
|
||||
engines: { node: ">=4" }
|
||||
|
||||
which-pm@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==,
|
||||
}
|
||||
engines: { node: ">=8.15" }
|
||||
|
||||
which-pm@2.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==,
|
||||
}
|
||||
engines: { node: ">=8.15" }
|
||||
|
||||
which@2.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
|
||||
}
|
||||
engines: { node: ">= 8" }
|
||||
hasBin: true
|
||||
|
||||
widest-line@4.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
wrap-ansi@8.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
wrappy@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
|
||||
}
|
||||
|
||||
y18n@5.0.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
yallist@3.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
|
||||
}
|
||||
|
||||
yallist@4.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==,
|
||||
}
|
||||
|
||||
yaml@2.3.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==,
|
||||
}
|
||||
engines: { node: ">= 14" }
|
||||
|
||||
yargs-parser@21.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
yargs@17.7.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==,
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
|
||||
yocto-queue@0.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
|
||||
}
|
||||
engines: { node: ">=10" }
|
||||
|
||||
yocto-queue@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==,
|
||||
}
|
||||
engines: { node: ">=12.20" }
|
||||
|
||||
zod-to-json-schema@3.23.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==,
|
||||
}
|
||||
peerDependencies:
|
||||
zod: ^3.23.3
|
||||
|
||||
zod@3.22.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==,
|
||||
}
|
||||
|
||||
zod@3.23.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==,
|
||||
}
|
||||
|
||||
zwitch@2.0.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==,
|
||||
}
|
||||
|
||||
snapshots:
|
||||
"@alloc/quick-lru@5.2.0": {}
|
||||
|
||||
"@ampproject/remapping@2.2.1":
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping": 0.3.3
|
||||
"@jridgewell/trace-mapping": 0.3.20
|
||||
|
||||
"@astrojs/check@0.7.0(typescript@5.4.5)":
|
||||
dependencies:
|
||||
"@astrojs/language-server": 2.10.0(typescript@5.4.5)
|
||||
chokidar: 3.5.3
|
||||
fast-glob: 3.3.2
|
||||
kleur: 4.1.5
|
||||
typescript: 5.4.5
|
||||
yargs: 17.7.2
|
||||
transitivePeerDependencies:
|
||||
- prettier
|
||||
- prettier-plugin-astro
|
||||
|
||||
"@astrojs/compiler@2.8.0": {}
|
||||
|
||||
"@astrojs/internal-helpers@0.4.0": {}
|
||||
|
||||
"@astrojs/language-server@2.10.0(typescript@5.4.5)":
|
||||
dependencies:
|
||||
"@astrojs/compiler": 2.8.0
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
"@volar/kit": 2.2.4(typescript@5.4.5)
|
||||
"@volar/language-core": 2.2.4
|
||||
"@volar/language-server": 2.2.4
|
||||
"@volar/language-service": 2.2.4
|
||||
"@volar/typescript": 2.2.4
|
||||
fast-glob: 3.3.2
|
||||
volar-service-css: 0.0.45(@volar/language-service@2.2.4)
|
||||
volar-service-emmet: 0.0.45(@volar/language-service@2.2.4)
|
||||
volar-service-html: 0.0.45(@volar/language-service@2.2.4)
|
||||
volar-service-prettier: 0.0.45(@volar/language-service@2.2.4)
|
||||
volar-service-typescript: 0.0.45(@volar/language-service@2.2.4)
|
||||
volar-service-typescript-twoslash-queries: 0.0.45(@volar/language-service@2.2.4)
|
||||
vscode-html-languageservice: 5.2.0
|
||||
vscode-uri: 3.0.8
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
"@astrojs/markdown-remark@5.1.0":
|
||||
dependencies:
|
||||
"@astrojs/prism": 3.1.0
|
||||
github-slugger: 2.0.0
|
||||
hast-util-from-html: 2.0.1
|
||||
hast-util-to-text: 4.0.2
|
||||
import-meta-resolve: 4.0.0
|
||||
mdast-util-definitions: 6.0.0
|
||||
rehype-raw: 7.0.0
|
||||
rehype-stringify: 10.0.0
|
||||
remark-gfm: 4.0.0
|
||||
remark-parse: 11.0.0
|
||||
remark-rehype: 11.1.0
|
||||
remark-smartypants: 2.0.0
|
||||
shiki: 1.5.2
|
||||
unified: 11.0.4
|
||||
unist-util-remove-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@astrojs/mdx@2.3.1(astro@4.8.6(typescript@5.4.5))":
|
||||
dependencies:
|
||||
"@astrojs/markdown-remark": 5.1.0
|
||||
"@mdx-js/mdx": 3.0.0
|
||||
acorn: 8.11.2
|
||||
astro: 4.8.6(typescript@5.4.5)
|
||||
es-module-lexer: 1.4.1
|
||||
estree-util-visit: 2.0.0
|
||||
github-slugger: 2.0.0
|
||||
gray-matter: 4.0.3
|
||||
hast-util-to-html: 9.0.0
|
||||
kleur: 4.1.5
|
||||
rehype-raw: 7.0.0
|
||||
remark-gfm: 4.0.0
|
||||
remark-smartypants: 2.0.0
|
||||
source-map: 0.7.4
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@astrojs/prism@3.1.0":
|
||||
dependencies:
|
||||
prismjs: 1.29.0
|
||||
|
||||
"@astrojs/sitemap@3.0.5":
|
||||
dependencies:
|
||||
sitemap: 7.1.1
|
||||
zod: 3.22.4
|
||||
|
||||
"@astrojs/starlight-tailwind@2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3)":
|
||||
dependencies:
|
||||
"@astrojs/starlight": 0.22.4(astro@4.8.6(typescript@5.4.5))
|
||||
"@astrojs/tailwind": 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3)
|
||||
tailwindcss: 3.4.3
|
||||
|
||||
"@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5))":
|
||||
dependencies:
|
||||
"@astrojs/mdx": 2.3.1(astro@4.8.6(typescript@5.4.5))
|
||||
"@astrojs/sitemap": 3.0.5
|
||||
"@pagefind/default-ui": 1.0.4
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
astro: 4.8.6(typescript@5.4.5)
|
||||
astro-expressive-code: 0.35.3(astro@4.8.6(typescript@5.4.5))
|
||||
bcp-47: 2.1.0
|
||||
hast-util-from-html: 2.0.1
|
||||
hast-util-select: 6.0.2
|
||||
hast-util-to-string: 3.0.0
|
||||
hastscript: 8.0.0
|
||||
mdast-util-directive: 3.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
pagefind: 1.0.4
|
||||
rehype: 13.0.1
|
||||
rehype-format: 5.0.0
|
||||
remark-directive: 3.0.0
|
||||
unified: 11.0.4
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3)":
|
||||
dependencies:
|
||||
astro: 4.8.6(typescript@5.4.5)
|
||||
autoprefixer: 10.4.19(postcss@8.4.31)
|
||||
postcss: 8.4.31
|
||||
postcss-load-config: 4.0.2(postcss@8.4.31)
|
||||
tailwindcss: 3.4.3
|
||||
transitivePeerDependencies:
|
||||
- ts-node
|
||||
|
||||
"@astrojs/telemetry@3.1.0":
|
||||
dependencies:
|
||||
ci-info: 4.0.0
|
||||
debug: 4.3.4
|
||||
dlv: 1.1.3
|
||||
dset: 3.1.3
|
||||
is-docker: 3.0.0
|
||||
is-wsl: 3.1.0
|
||||
which-pm-runs: 1.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@babel/code-frame@7.24.2":
|
||||
dependencies:
|
||||
"@babel/highlight": 7.24.5
|
||||
picocolors: 1.0.0
|
||||
|
||||
"@babel/compat-data@7.24.4": {}
|
||||
|
||||
"@babel/core@7.24.5":
|
||||
dependencies:
|
||||
"@ampproject/remapping": 2.2.1
|
||||
"@babel/code-frame": 7.24.2
|
||||
"@babel/generator": 7.24.5
|
||||
"@babel/helper-compilation-targets": 7.23.6
|
||||
"@babel/helper-module-transforms": 7.24.5(@babel/core@7.24.5)
|
||||
"@babel/helpers": 7.24.5
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/template": 7.24.0
|
||||
"@babel/traverse": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
convert-source-map: 2.0.0
|
||||
debug: 4.3.4
|
||||
gensync: 1.0.0-beta.2
|
||||
json5: 2.2.3
|
||||
semver: 6.3.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@babel/generator@7.24.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
"@jridgewell/gen-mapping": 0.3.5
|
||||
"@jridgewell/trace-mapping": 0.3.25
|
||||
jsesc: 2.5.2
|
||||
|
||||
"@babel/helper-annotate-as-pure@7.22.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-compilation-targets@7.23.6":
|
||||
dependencies:
|
||||
"@babel/compat-data": 7.24.4
|
||||
"@babel/helper-validator-option": 7.23.5
|
||||
browserslist: 4.23.0
|
||||
lru-cache: 5.1.1
|
||||
semver: 6.3.1
|
||||
|
||||
"@babel/helper-environment-visitor@7.22.20": {}
|
||||
|
||||
"@babel/helper-function-name@7.23.0":
|
||||
dependencies:
|
||||
"@babel/template": 7.22.15
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-hoist-variables@7.22.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-module-imports@7.22.15":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-module-imports@7.24.3":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)":
|
||||
dependencies:
|
||||
"@babel/core": 7.24.5
|
||||
"@babel/helper-environment-visitor": 7.22.20
|
||||
"@babel/helper-module-imports": 7.24.3
|
||||
"@babel/helper-simple-access": 7.24.5
|
||||
"@babel/helper-split-export-declaration": 7.24.5
|
||||
"@babel/helper-validator-identifier": 7.24.5
|
||||
|
||||
"@babel/helper-plugin-utils@7.22.5": {}
|
||||
|
||||
"@babel/helper-simple-access@7.24.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-split-export-declaration@7.24.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/helper-string-parser@7.24.1": {}
|
||||
|
||||
"@babel/helper-validator-identifier@7.24.5": {}
|
||||
|
||||
"@babel/helper-validator-option@7.23.5": {}
|
||||
|
||||
"@babel/helpers@7.24.5":
|
||||
dependencies:
|
||||
"@babel/template": 7.24.0
|
||||
"@babel/traverse": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@babel/highlight@7.24.5":
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier": 7.24.5
|
||||
chalk: 2.4.2
|
||||
js-tokens: 4.0.0
|
||||
picocolors: 1.0.0
|
||||
|
||||
"@babel/parser@7.24.5":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.5)":
|
||||
dependencies:
|
||||
"@babel/core": 7.24.5
|
||||
"@babel/helper-plugin-utils": 7.22.5
|
||||
|
||||
"@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)":
|
||||
dependencies:
|
||||
"@babel/core": 7.24.5
|
||||
"@babel/helper-annotate-as-pure": 7.22.5
|
||||
"@babel/helper-module-imports": 7.22.15
|
||||
"@babel/helper-plugin-utils": 7.22.5
|
||||
"@babel/plugin-syntax-jsx": 7.23.3(@babel/core@7.24.5)
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/template@7.22.15":
|
||||
dependencies:
|
||||
"@babel/code-frame": 7.24.2
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/template@7.24.0":
|
||||
dependencies:
|
||||
"@babel/code-frame": 7.24.2
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@babel/traverse@7.24.5":
|
||||
dependencies:
|
||||
"@babel/code-frame": 7.24.2
|
||||
"@babel/generator": 7.24.5
|
||||
"@babel/helper-environment-visitor": 7.22.20
|
||||
"@babel/helper-function-name": 7.23.0
|
||||
"@babel/helper-hoist-variables": 7.22.5
|
||||
"@babel/helper-split-export-declaration": 7.24.5
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
debug: 4.3.4
|
||||
globals: 11.12.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@babel/types@7.24.5":
|
||||
dependencies:
|
||||
"@babel/helper-string-parser": 7.24.1
|
||||
"@babel/helper-validator-identifier": 7.24.5
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
"@csstools/cascade-layer-name-parser@1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)":
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
|
||||
"@csstools/color-helpers@4.2.0": {}
|
||||
|
||||
"@csstools/css-calc@1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)":
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
|
||||
"@csstools/css-color-parser@2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)":
|
||||
dependencies:
|
||||
"@csstools/color-helpers": 4.2.0
|
||||
"@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
|
||||
"@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1)":
|
||||
dependencies:
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
|
||||
"@csstools/css-tokenizer@2.3.1": {}
|
||||
|
||||
"@csstools/media-query-list-parser@2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)":
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
|
||||
"@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16)
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
"@csstools/postcss-color-function@3.0.16(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-color-mix-function@2.0.16(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-exponential-functions@1.0.7(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-gamut-mapping@1.0.9(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-gradients-interpolation-method@4.0.17(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-hwb-function@3.0.15(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-ic-unit@3.0.6(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-initial@1.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16)
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
"@csstools/postcss-light-dark-function@1.0.5(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-logical-resize@2.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-logical-viewport-units@2.0.9(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-media-minmax@1.1.6(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.9(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-nested-calc@3.0.2(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-oklab-function@3.0.16(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-progressive-custom-properties@3.2.0(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-relative-color-syntax@2.0.16(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
"@csstools/postcss-stepped-value-functions@3.0.8(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-text-decoration-shorthand@3.0.6(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/color-helpers": 4.2.0
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
"@csstools/postcss-trigonometric-functions@3.0.8(postcss@8.4.33)":
|
||||
dependencies:
|
||||
"@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/postcss-unset-value@3.0.1(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)":
|
||||
dependencies:
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
"@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16)":
|
||||
dependencies:
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
"@csstools/utilities@1.0.0(postcss@8.4.33)":
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
"@ctrl/tinycolor@4.1.0": {}
|
||||
|
||||
"@emmetio/abbreviation@2.3.3":
|
||||
dependencies:
|
||||
"@emmetio/scanner": 1.0.4
|
||||
|
||||
"@emmetio/css-abbreviation@2.1.8":
|
||||
dependencies:
|
||||
"@emmetio/scanner": 1.0.4
|
||||
|
||||
"@emmetio/css-parser@0.4.0":
|
||||
dependencies:
|
||||
"@emmetio/stream-reader": 2.2.0
|
||||
"@emmetio/stream-reader-utils": 0.1.0
|
||||
|
||||
"@emmetio/html-matcher@1.3.0":
|
||||
dependencies:
|
||||
"@emmetio/scanner": 1.0.4
|
||||
|
||||
"@emmetio/scanner@1.0.4": {}
|
||||
|
||||
"@emmetio/stream-reader-utils@0.1.0": {}
|
||||
|
||||
"@emmetio/stream-reader@2.2.0": {}
|
||||
|
||||
"@emnapi/runtime@1.1.1":
|
||||
dependencies:
|
||||
tslib: 2.6.2
|
||||
optional: true
|
||||
|
||||
"@esbuild/aix-ppc64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/aix-ppc64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-arm64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-arm64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-arm@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-arm@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/android-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/darwin-arm64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/darwin-arm64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/darwin-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/darwin-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/freebsd-arm64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/freebsd-arm64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/freebsd-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/freebsd-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-arm64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-arm64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-arm@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-arm@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-ia32@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-ia32@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-loong64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-loong64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-mips64el@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-mips64el@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-ppc64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-ppc64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-riscv64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-riscv64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-s390x@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-s390x@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/linux-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/netbsd-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/netbsd-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/openbsd-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/openbsd-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/sunos-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/sunos-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-arm64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-arm64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-ia32@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-ia32@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-x64@0.20.2":
|
||||
optional: true
|
||||
|
||||
"@esbuild/win32-x64@0.21.3":
|
||||
optional: true
|
||||
|
||||
"@expressive-code/core@0.35.3":
|
||||
dependencies:
|
||||
"@ctrl/tinycolor": 4.1.0
|
||||
hast-util-select: 6.0.2
|
||||
hast-util-to-html: 9.0.1
|
||||
hast-util-to-text: 4.0.2
|
||||
hastscript: 9.0.0
|
||||
postcss: 8.4.38
|
||||
postcss-nested: 6.0.1(postcss@8.4.38)
|
||||
unist-util-visit: 5.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
|
||||
"@expressive-code/plugin-frames@0.35.3":
|
||||
dependencies:
|
||||
"@expressive-code/core": 0.35.3
|
||||
|
||||
"@expressive-code/plugin-shiki@0.35.3":
|
||||
dependencies:
|
||||
"@expressive-code/core": 0.35.3
|
||||
shiki: 1.5.2
|
||||
|
||||
"@expressive-code/plugin-text-markers@0.35.3":
|
||||
dependencies:
|
||||
"@expressive-code/core": 0.35.3
|
||||
|
||||
"@fontsource/inter@5.0.18": {}
|
||||
|
||||
"@fontsource/rubik@5.0.20": {}
|
||||
|
||||
"@img/sharp-darwin-arm64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-arm64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-darwin-x64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-x64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-darwin-arm64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-darwin-x64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linux-arm64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linux-arm@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linux-s390x@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linux-x64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-arm64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-x64@1.0.2":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linux-arm64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linux-arm@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linux-s390x@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-s390x": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linux-x64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-x64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linuxmusl-arm64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-arm64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-linuxmusl-x64@0.33.4":
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-x64": 1.0.2
|
||||
optional: true
|
||||
|
||||
"@img/sharp-wasm32@0.33.4":
|
||||
dependencies:
|
||||
"@emnapi/runtime": 1.1.1
|
||||
optional: true
|
||||
|
||||
"@img/sharp-win32-ia32@0.33.4":
|
||||
optional: true
|
||||
|
||||
"@img/sharp-win32-x64@0.33.4":
|
||||
optional: true
|
||||
|
||||
"@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462":
|
||||
dependencies:
|
||||
"@vscode/l10n": 0.0.18
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-languageserver-types: 3.17.5
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
"@jridgewell/gen-mapping@0.3.3":
|
||||
dependencies:
|
||||
"@jridgewell/set-array": 1.1.2
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
"@jridgewell/trace-mapping": 0.3.20
|
||||
|
||||
"@jridgewell/gen-mapping@0.3.5":
|
||||
dependencies:
|
||||
"@jridgewell/set-array": 1.2.1
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
"@jridgewell/trace-mapping": 0.3.25
|
||||
|
||||
"@jridgewell/resolve-uri@3.1.1": {}
|
||||
|
||||
"@jridgewell/set-array@1.1.2": {}
|
||||
|
||||
"@jridgewell/set-array@1.2.1": {}
|
||||
|
||||
"@jridgewell/sourcemap-codec@1.4.15": {}
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.20":
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri": 3.1.1
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.25":
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri": 3.1.1
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
|
||||
"@mdx-js/mdx@3.0.0":
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdx": 2.0.10
|
||||
collapse-white-space: 2.1.0
|
||||
devlop: 1.1.0
|
||||
estree-util-build-jsx: 3.0.1
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
estree-util-to-js: 2.0.0
|
||||
estree-walker: 3.0.3
|
||||
hast-util-to-estree: 3.1.0
|
||||
hast-util-to-jsx-runtime: 2.3.0
|
||||
markdown-extensions: 2.0.0
|
||||
periscopic: 3.1.0
|
||||
remark-mdx: 3.0.0
|
||||
remark-parse: 11.0.0
|
||||
remark-rehype: 11.1.0
|
||||
source-map: 0.7.4
|
||||
unified: 11.0.4
|
||||
unist-util-position-from-estree: 2.0.0
|
||||
unist-util-stringify-position: 4.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
dependencies:
|
||||
"@nodelib/fs.stat": 2.0.5
|
||||
run-parallel: 1.2.0
|
||||
|
||||
"@nodelib/fs.stat@2.0.5": {}
|
||||
|
||||
"@nodelib/fs.walk@1.2.8":
|
||||
dependencies:
|
||||
"@nodelib/fs.scandir": 2.1.5
|
||||
fastq: 1.15.0
|
||||
|
||||
"@pagefind/darwin-arm64@1.0.4":
|
||||
optional: true
|
||||
|
||||
"@pagefind/darwin-x64@1.0.4":
|
||||
optional: true
|
||||
|
||||
"@pagefind/default-ui@1.0.4": {}
|
||||
|
||||
"@pagefind/linux-arm64@1.0.4":
|
||||
optional: true
|
||||
|
||||
"@pagefind/linux-x64@1.0.4":
|
||||
optional: true
|
||||
|
||||
"@pagefind/windows-x64@1.0.4":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-android-arm64@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-darwin-arm64@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-darwin-x64@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.17.2":
|
||||
optional: true
|
||||
|
||||
"@shikijs/core@1.5.2": {}
|
||||
|
||||
"@trysound/sax@0.2.0": {}
|
||||
|
||||
"@types/acorn@4.0.6":
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
|
||||
"@types/babel__core@7.20.5":
|
||||
dependencies:
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
"@types/babel__generator": 7.6.7
|
||||
"@types/babel__template": 7.4.4
|
||||
"@types/babel__traverse": 7.20.4
|
||||
|
||||
"@types/babel__generator@7.6.7":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@types/babel__template@7.4.4":
|
||||
dependencies:
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@types/babel__traverse@7.20.4":
|
||||
dependencies:
|
||||
"@babel/types": 7.24.5
|
||||
|
||||
"@types/cookie@0.6.0": {}
|
||||
|
||||
"@types/debug@4.1.12":
|
||||
dependencies:
|
||||
"@types/ms": 0.7.34
|
||||
|
||||
"@types/estree-jsx@1.0.3":
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
|
||||
"@types/estree@1.0.5": {}
|
||||
|
||||
"@types/hast@3.0.3":
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
"@types/mdast@4.0.3":
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
"@types/mdx@2.0.10": {}
|
||||
|
||||
"@types/ms@0.7.34": {}
|
||||
|
||||
"@types/nlcst@1.0.4":
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
|
||||
"@types/node@17.0.45": {}
|
||||
|
||||
"@types/sax@1.2.7":
|
||||
dependencies:
|
||||
"@types/node": 17.0.45
|
||||
|
||||
"@types/unist@2.0.10": {}
|
||||
|
||||
"@types/unist@3.0.2": {}
|
||||
|
||||
"@ungap/structured-clone@1.2.0": {}
|
||||
|
||||
"@volar/kit@2.2.4(typescript@5.4.5)":
|
||||
dependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
"@volar/typescript": 2.2.4
|
||||
typesafe-path: 0.2.2
|
||||
typescript: 5.4.5
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
"@volar/language-core@2.2.4":
|
||||
dependencies:
|
||||
"@volar/source-map": 2.2.4
|
||||
|
||||
"@volar/language-server@2.2.4":
|
||||
dependencies:
|
||||
"@volar/language-core": 2.2.4
|
||||
"@volar/language-service": 2.2.4
|
||||
"@volar/snapshot-document": 2.2.4
|
||||
"@volar/typescript": 2.2.4
|
||||
"@vscode/l10n": 0.0.16
|
||||
path-browserify: 1.0.1
|
||||
request-light: 0.7.0
|
||||
vscode-languageserver: 9.0.1
|
||||
vscode-languageserver-protocol: 3.17.5
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
"@volar/language-service@2.2.4":
|
||||
dependencies:
|
||||
"@volar/language-core": 2.2.4
|
||||
vscode-languageserver-protocol: 3.17.5
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
"@volar/snapshot-document@2.2.4":
|
||||
dependencies:
|
||||
vscode-languageserver-protocol: 3.17.5
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
|
||||
"@volar/source-map@2.2.4":
|
||||
dependencies:
|
||||
muggle-string: 0.4.1
|
||||
|
||||
"@volar/typescript@2.2.4":
|
||||
dependencies:
|
||||
"@volar/language-core": 2.2.4
|
||||
path-browserify: 1.0.1
|
||||
|
||||
"@vscode/emmet-helper@2.9.2":
|
||||
dependencies:
|
||||
emmet: 2.4.6
|
||||
jsonc-parser: 2.3.1
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-languageserver-types: 3.17.5
|
||||
vscode-uri: 2.1.2
|
||||
|
||||
"@vscode/l10n@0.0.16": {}
|
||||
|
||||
"@vscode/l10n@0.0.18": {}
|
||||
|
||||
acorn-jsx@5.3.2(acorn@8.11.2):
|
||||
dependencies:
|
||||
acorn: 8.11.2
|
||||
|
||||
acorn@8.11.2: {}
|
||||
|
||||
acorn@8.11.3: {}
|
||||
|
||||
ansi-align@3.0.1:
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
|
||||
ansi-regex@5.0.1: {}
|
||||
|
||||
ansi-regex@6.0.1: {}
|
||||
|
||||
ansi-styles@3.2.1:
|
||||
dependencies:
|
||||
color-convert: 1.9.3
|
||||
|
||||
ansi-styles@4.3.0:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
|
||||
ansi-styles@6.2.1: {}
|
||||
|
||||
any-promise@1.3.0: {}
|
||||
|
||||
anymatch@3.1.3:
|
||||
dependencies:
|
||||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.1
|
||||
|
||||
arg@5.0.2: {}
|
||||
|
||||
argparse@1.0.10:
|
||||
dependencies:
|
||||
sprintf-js: 1.0.3
|
||||
|
||||
argparse@2.0.1: {}
|
||||
|
||||
aria-query@5.3.0:
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
|
||||
array-iterate@2.0.1: {}
|
||||
|
||||
astring@1.8.6: {}
|
||||
|
||||
astro-expressive-code@0.35.3(astro@4.8.6(typescript@5.4.5)):
|
||||
dependencies:
|
||||
astro: 4.8.6(typescript@5.4.5)
|
||||
rehype-expressive-code: 0.35.3
|
||||
|
||||
astro@4.8.6(typescript@5.4.5):
|
||||
dependencies:
|
||||
"@astrojs/compiler": 2.8.0
|
||||
"@astrojs/internal-helpers": 0.4.0
|
||||
"@astrojs/markdown-remark": 5.1.0
|
||||
"@astrojs/telemetry": 3.1.0
|
||||
"@babel/core": 7.24.5
|
||||
"@babel/generator": 7.24.5
|
||||
"@babel/parser": 7.24.5
|
||||
"@babel/plugin-transform-react-jsx": 7.23.4(@babel/core@7.24.5)
|
||||
"@babel/traverse": 7.24.5
|
||||
"@babel/types": 7.24.5
|
||||
"@types/babel__core": 7.20.5
|
||||
"@types/cookie": 0.6.0
|
||||
acorn: 8.11.3
|
||||
aria-query: 5.3.0
|
||||
axobject-query: 4.0.0
|
||||
boxen: 7.1.1
|
||||
chokidar: 3.6.0
|
||||
ci-info: 4.0.0
|
||||
clsx: 2.1.1
|
||||
common-ancestor-path: 1.0.1
|
||||
cookie: 0.6.0
|
||||
cssesc: 3.0.0
|
||||
debug: 4.3.4
|
||||
deterministic-object-hash: 2.0.2
|
||||
devalue: 5.0.0
|
||||
diff: 5.2.0
|
||||
dlv: 1.1.3
|
||||
dset: 3.1.3
|
||||
es-module-lexer: 1.5.2
|
||||
esbuild: 0.21.3
|
||||
estree-walker: 3.0.3
|
||||
execa: 8.0.1
|
||||
fast-glob: 3.3.2
|
||||
flattie: 1.1.1
|
||||
github-slugger: 2.0.0
|
||||
gray-matter: 4.0.3
|
||||
html-escaper: 3.0.3
|
||||
http-cache-semantics: 4.1.1
|
||||
js-yaml: 4.1.0
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.10
|
||||
mrmime: 2.0.0
|
||||
ora: 8.0.1
|
||||
p-limit: 5.0.0
|
||||
p-queue: 8.0.1
|
||||
path-to-regexp: 6.2.2
|
||||
preferred-pm: 3.1.3
|
||||
prompts: 2.4.2
|
||||
rehype: 13.0.1
|
||||
resolve: 1.22.8
|
||||
semver: 7.6.2
|
||||
shiki: 1.5.2
|
||||
string-width: 7.1.0
|
||||
strip-ansi: 7.1.0
|
||||
tsconfck: 3.0.3(typescript@5.4.5)
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
vite: 5.2.11
|
||||
vitefu: 0.2.5(vite@5.2.11)
|
||||
which-pm: 2.1.1
|
||||
yargs-parser: 21.1.1
|
||||
zod: 3.23.8
|
||||
zod-to-json-schema: 3.23.0(zod@3.23.8)
|
||||
optionalDependencies:
|
||||
sharp: 0.33.4
|
||||
transitivePeerDependencies:
|
||||
- "@types/node"
|
||||
- less
|
||||
- lightningcss
|
||||
- sass
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
- typescript
|
||||
|
||||
autoprefixer@10.4.19(postcss@8.4.31):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-lite: 1.0.30001620
|
||||
fraction.js: 4.3.7
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.31
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
autoprefixer@10.4.19(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-lite: 1.0.30001620
|
||||
fraction.js: 4.3.7
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
axobject-query@4.0.0:
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
|
||||
bail@2.0.2: {}
|
||||
|
||||
balanced-match@1.0.2: {}
|
||||
|
||||
base-64@1.0.0: {}
|
||||
|
||||
bcp-47-match@2.0.3: {}
|
||||
|
||||
bcp-47@2.1.0:
|
||||
dependencies:
|
||||
is-alphabetical: 2.0.1
|
||||
is-alphanumerical: 2.0.1
|
||||
is-decimal: 2.0.1
|
||||
|
||||
binary-extensions@2.2.0: {}
|
||||
|
||||
boolbase@1.0.0: {}
|
||||
|
||||
boxen@7.1.1:
|
||||
dependencies:
|
||||
ansi-align: 3.0.1
|
||||
camelcase: 7.0.1
|
||||
chalk: 5.3.0
|
||||
cli-boxes: 3.0.0
|
||||
string-width: 5.1.2
|
||||
type-fest: 2.19.0
|
||||
widest-line: 4.0.1
|
||||
wrap-ansi: 8.1.0
|
||||
|
||||
brace-expansion@1.1.11:
|
||||
dependencies:
|
||||
balanced-match: 1.0.2
|
||||
concat-map: 0.0.1
|
||||
|
||||
braces@3.0.2:
|
||||
dependencies:
|
||||
fill-range: 7.0.1
|
||||
|
||||
browserslist@4.23.0:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001620
|
||||
electron-to-chromium: 1.4.773
|
||||
node-releases: 2.0.14
|
||||
update-browserslist-db: 1.0.13(browserslist@4.23.0)
|
||||
|
||||
camelcase-css@2.0.1: {}
|
||||
|
||||
camelcase@7.0.1: {}
|
||||
|
||||
caniuse-api@3.0.0:
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-lite: 1.0.30001620
|
||||
lodash.memoize: 4.1.2
|
||||
lodash.uniq: 4.5.0
|
||||
|
||||
caniuse-lite@1.0.30001620: {}
|
||||
|
||||
ccount@2.0.1: {}
|
||||
|
||||
chalk@2.4.2:
|
||||
dependencies:
|
||||
ansi-styles: 3.2.1
|
||||
escape-string-regexp: 1.0.5
|
||||
supports-color: 5.5.0
|
||||
|
||||
chalk@5.3.0: {}
|
||||
|
||||
character-entities-html4@2.1.0: {}
|
||||
|
||||
character-entities-legacy@3.0.0: {}
|
||||
|
||||
character-entities@2.0.2: {}
|
||||
|
||||
character-reference-invalid@2.0.1: {}
|
||||
|
||||
chokidar@3.5.3:
|
||||
dependencies:
|
||||
anymatch: 3.1.3
|
||||
braces: 3.0.2
|
||||
glob-parent: 5.1.2
|
||||
is-binary-path: 2.1.0
|
||||
is-glob: 4.0.3
|
||||
normalize-path: 3.0.0
|
||||
readdirp: 3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
chokidar@3.6.0:
|
||||
dependencies:
|
||||
anymatch: 3.1.3
|
||||
braces: 3.0.2
|
||||
glob-parent: 5.1.2
|
||||
is-binary-path: 2.1.0
|
||||
is-glob: 4.0.3
|
||||
normalize-path: 3.0.0
|
||||
readdirp: 3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
ci-info@4.0.0: {}
|
||||
|
||||
cli-boxes@3.0.0: {}
|
||||
|
||||
cli-cursor@4.0.0:
|
||||
dependencies:
|
||||
restore-cursor: 4.0.0
|
||||
|
||||
cli-spinners@2.9.2: {}
|
||||
|
||||
cliui@8.0.1:
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
wrap-ansi: 7.0.0
|
||||
|
||||
clsx@2.1.1: {}
|
||||
|
||||
collapse-white-space@2.1.0: {}
|
||||
|
||||
color-convert@1.9.3:
|
||||
dependencies:
|
||||
color-name: 1.1.3
|
||||
|
||||
color-convert@2.0.1:
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
|
||||
color-name@1.1.3: {}
|
||||
|
||||
color-name@1.1.4: {}
|
||||
|
||||
color-string@1.9.1:
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
simple-swizzle: 0.2.2
|
||||
|
||||
color@4.2.3:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
color-string: 1.9.1
|
||||
|
||||
colord@2.9.3: {}
|
||||
|
||||
comma-separated-tokens@2.0.3: {}
|
||||
|
||||
commander@4.1.1: {}
|
||||
|
||||
commander@7.2.0: {}
|
||||
|
||||
common-ancestor-path@1.0.1: {}
|
||||
|
||||
concat-map@0.0.1: {}
|
||||
|
||||
convert-source-map@2.0.0: {}
|
||||
|
||||
cookie@0.6.0: {}
|
||||
|
||||
cross-spawn@7.0.3:
|
||||
dependencies:
|
||||
path-key: 3.1.1
|
||||
shebang-command: 2.0.0
|
||||
which: 2.0.2
|
||||
|
||||
css-blank-pseudo@6.0.2(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
css-declaration-sorter@7.2.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
css-has-pseudo@6.0.5(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16)
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
css-prefers-color-scheme@9.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
css-select@5.1.0:
|
||||
dependencies:
|
||||
boolbase: 1.0.0
|
||||
css-what: 6.1.0
|
||||
domhandler: 5.0.3
|
||||
domutils: 3.1.0
|
||||
nth-check: 2.1.1
|
||||
|
||||
css-selector-parser@3.0.4: {}
|
||||
|
||||
css-tree@2.2.1:
|
||||
dependencies:
|
||||
mdn-data: 2.0.28
|
||||
source-map-js: 1.2.0
|
||||
|
||||
css-tree@2.3.1:
|
||||
dependencies:
|
||||
mdn-data: 2.0.30
|
||||
source-map-js: 1.2.0
|
||||
|
||||
css-what@6.1.0: {}
|
||||
|
||||
cssdb@8.0.1: {}
|
||||
|
||||
cssesc@3.0.0: {}
|
||||
|
||||
cssnano-preset-default@7.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
css-declaration-sorter: 7.2.0(postcss@8.4.33)
|
||||
cssnano-utils: 5.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-calc: 10.0.0(postcss@8.4.33)
|
||||
postcss-colormin: 7.0.0(postcss@8.4.33)
|
||||
postcss-convert-values: 7.0.0(postcss@8.4.33)
|
||||
postcss-discard-comments: 7.0.0(postcss@8.4.33)
|
||||
postcss-discard-duplicates: 7.0.0(postcss@8.4.33)
|
||||
postcss-discard-empty: 7.0.0(postcss@8.4.33)
|
||||
postcss-discard-overridden: 7.0.0(postcss@8.4.33)
|
||||
postcss-merge-longhand: 7.0.0(postcss@8.4.33)
|
||||
postcss-merge-rules: 7.0.0(postcss@8.4.33)
|
||||
postcss-minify-font-values: 7.0.0(postcss@8.4.33)
|
||||
postcss-minify-gradients: 7.0.0(postcss@8.4.33)
|
||||
postcss-minify-params: 7.0.0(postcss@8.4.33)
|
||||
postcss-minify-selectors: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-charset: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-display-values: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-positions: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-repeat-style: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-string: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-timing-functions: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-unicode: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-url: 7.0.0(postcss@8.4.33)
|
||||
postcss-normalize-whitespace: 7.0.0(postcss@8.4.33)
|
||||
postcss-ordered-values: 7.0.0(postcss@8.4.33)
|
||||
postcss-reduce-initial: 7.0.0(postcss@8.4.33)
|
||||
postcss-reduce-transforms: 7.0.0(postcss@8.4.33)
|
||||
postcss-svgo: 7.0.0(postcss@8.4.33)
|
||||
postcss-unique-selectors: 7.0.0(postcss@8.4.33)
|
||||
|
||||
cssnano-utils@5.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
cssnano@7.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
cssnano-preset-default: 7.0.1(postcss@8.4.33)
|
||||
lilconfig: 3.1.1
|
||||
postcss: 8.4.33
|
||||
|
||||
csso@5.0.5:
|
||||
dependencies:
|
||||
css-tree: 2.2.1
|
||||
|
||||
debug@4.3.4:
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
|
||||
decode-named-character-reference@1.0.2:
|
||||
dependencies:
|
||||
character-entities: 2.0.2
|
||||
|
||||
dequal@2.0.3: {}
|
||||
|
||||
detect-libc@2.0.3: {}
|
||||
|
||||
deterministic-object-hash@2.0.2:
|
||||
dependencies:
|
||||
base-64: 1.0.0
|
||||
|
||||
devalue@5.0.0: {}
|
||||
|
||||
devlop@1.1.0:
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
|
||||
didyoumean@1.2.2: {}
|
||||
|
||||
diff@5.2.0: {}
|
||||
|
||||
direction@2.0.1: {}
|
||||
|
||||
dlv@1.1.3: {}
|
||||
|
||||
dom-serializer@2.0.0:
|
||||
dependencies:
|
||||
domelementtype: 2.3.0
|
||||
domhandler: 5.0.3
|
||||
entities: 4.5.0
|
||||
|
||||
domelementtype@2.3.0: {}
|
||||
|
||||
domhandler@5.0.3:
|
||||
dependencies:
|
||||
domelementtype: 2.3.0
|
||||
|
||||
domutils@3.1.0:
|
||||
dependencies:
|
||||
dom-serializer: 2.0.0
|
||||
domelementtype: 2.3.0
|
||||
domhandler: 5.0.3
|
||||
|
||||
dset@3.1.3: {}
|
||||
|
||||
eastasianwidth@0.2.0: {}
|
||||
|
||||
electron-to-chromium@1.4.773: {}
|
||||
|
||||
emmet@2.4.6:
|
||||
dependencies:
|
||||
"@emmetio/abbreviation": 2.3.3
|
||||
"@emmetio/css-abbreviation": 2.1.8
|
||||
|
||||
emoji-regex@10.3.0: {}
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
|
||||
emoji-regex@9.2.2: {}
|
||||
|
||||
entities@4.5.0: {}
|
||||
|
||||
es-module-lexer@1.4.1: {}
|
||||
|
||||
es-module-lexer@1.5.2: {}
|
||||
|
||||
esbuild@0.20.2:
|
||||
optionalDependencies:
|
||||
"@esbuild/aix-ppc64": 0.20.2
|
||||
"@esbuild/android-arm": 0.20.2
|
||||
"@esbuild/android-arm64": 0.20.2
|
||||
"@esbuild/android-x64": 0.20.2
|
||||
"@esbuild/darwin-arm64": 0.20.2
|
||||
"@esbuild/darwin-x64": 0.20.2
|
||||
"@esbuild/freebsd-arm64": 0.20.2
|
||||
"@esbuild/freebsd-x64": 0.20.2
|
||||
"@esbuild/linux-arm": 0.20.2
|
||||
"@esbuild/linux-arm64": 0.20.2
|
||||
"@esbuild/linux-ia32": 0.20.2
|
||||
"@esbuild/linux-loong64": 0.20.2
|
||||
"@esbuild/linux-mips64el": 0.20.2
|
||||
"@esbuild/linux-ppc64": 0.20.2
|
||||
"@esbuild/linux-riscv64": 0.20.2
|
||||
"@esbuild/linux-s390x": 0.20.2
|
||||
"@esbuild/linux-x64": 0.20.2
|
||||
"@esbuild/netbsd-x64": 0.20.2
|
||||
"@esbuild/openbsd-x64": 0.20.2
|
||||
"@esbuild/sunos-x64": 0.20.2
|
||||
"@esbuild/win32-arm64": 0.20.2
|
||||
"@esbuild/win32-ia32": 0.20.2
|
||||
"@esbuild/win32-x64": 0.20.2
|
||||
|
||||
esbuild@0.21.3:
|
||||
optionalDependencies:
|
||||
"@esbuild/aix-ppc64": 0.21.3
|
||||
"@esbuild/android-arm": 0.21.3
|
||||
"@esbuild/android-arm64": 0.21.3
|
||||
"@esbuild/android-x64": 0.21.3
|
||||
"@esbuild/darwin-arm64": 0.21.3
|
||||
"@esbuild/darwin-x64": 0.21.3
|
||||
"@esbuild/freebsd-arm64": 0.21.3
|
||||
"@esbuild/freebsd-x64": 0.21.3
|
||||
"@esbuild/linux-arm": 0.21.3
|
||||
"@esbuild/linux-arm64": 0.21.3
|
||||
"@esbuild/linux-ia32": 0.21.3
|
||||
"@esbuild/linux-loong64": 0.21.3
|
||||
"@esbuild/linux-mips64el": 0.21.3
|
||||
"@esbuild/linux-ppc64": 0.21.3
|
||||
"@esbuild/linux-riscv64": 0.21.3
|
||||
"@esbuild/linux-s390x": 0.21.3
|
||||
"@esbuild/linux-x64": 0.21.3
|
||||
"@esbuild/netbsd-x64": 0.21.3
|
||||
"@esbuild/openbsd-x64": 0.21.3
|
||||
"@esbuild/sunos-x64": 0.21.3
|
||||
"@esbuild/win32-arm64": 0.21.3
|
||||
"@esbuild/win32-ia32": 0.21.3
|
||||
"@esbuild/win32-x64": 0.21.3
|
||||
|
||||
escalade@3.1.1: {}
|
||||
|
||||
escape-string-regexp@1.0.5: {}
|
||||
|
||||
escape-string-regexp@5.0.0: {}
|
||||
|
||||
esprima@4.0.1: {}
|
||||
|
||||
estree-util-attach-comments@3.0.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
|
||||
estree-util-build-jsx@3.0.1:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
devlop: 1.1.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
estree-walker: 3.0.3
|
||||
|
||||
estree-util-is-identifier-name@3.0.0: {}
|
||||
|
||||
estree-util-to-js@2.0.0:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
astring: 1.8.6
|
||||
source-map: 0.7.4
|
||||
|
||||
estree-util-visit@2.0.0:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
estree-walker@3.0.3:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
|
||||
eventemitter3@5.0.1: {}
|
||||
|
||||
execa@8.0.1:
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
get-stream: 8.0.1
|
||||
human-signals: 5.0.0
|
||||
is-stream: 3.0.0
|
||||
merge-stream: 2.0.0
|
||||
npm-run-path: 5.1.0
|
||||
onetime: 6.0.0
|
||||
signal-exit: 4.1.0
|
||||
strip-final-newline: 3.0.0
|
||||
|
||||
expressive-code@0.35.3:
|
||||
dependencies:
|
||||
"@expressive-code/core": 0.35.3
|
||||
"@expressive-code/plugin-frames": 0.35.3
|
||||
"@expressive-code/plugin-shiki": 0.35.3
|
||||
"@expressive-code/plugin-text-markers": 0.35.3
|
||||
|
||||
extend-shallow@2.0.1:
|
||||
dependencies:
|
||||
is-extendable: 0.1.1
|
||||
|
||||
extend@3.0.2: {}
|
||||
|
||||
fast-glob@3.3.2:
|
||||
dependencies:
|
||||
"@nodelib/fs.stat": 2.0.5
|
||||
"@nodelib/fs.walk": 1.2.8
|
||||
glob-parent: 5.1.2
|
||||
merge2: 1.4.1
|
||||
micromatch: 4.0.5
|
||||
|
||||
fastq@1.15.0:
|
||||
dependencies:
|
||||
reusify: 1.0.4
|
||||
|
||||
fill-range@7.0.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
find-up@4.1.0:
|
||||
dependencies:
|
||||
locate-path: 5.0.0
|
||||
path-exists: 4.0.0
|
||||
|
||||
find-up@5.0.0:
|
||||
dependencies:
|
||||
locate-path: 6.0.0
|
||||
path-exists: 4.0.0
|
||||
|
||||
find-yarn-workspace-root2@1.2.16:
|
||||
dependencies:
|
||||
micromatch: 4.0.5
|
||||
pkg-dir: 4.2.0
|
||||
|
||||
flattie@1.1.1: {}
|
||||
|
||||
fraction.js@4.3.7: {}
|
||||
|
||||
fs.realpath@1.0.0: {}
|
||||
|
||||
fsevents@2.3.3:
|
||||
optional: true
|
||||
|
||||
function-bind@1.1.2: {}
|
||||
|
||||
gensync@1.0.0-beta.2: {}
|
||||
|
||||
get-caller-file@2.0.5: {}
|
||||
|
||||
get-east-asian-width@1.2.0: {}
|
||||
|
||||
get-stream@8.0.1: {}
|
||||
|
||||
github-slugger@2.0.0: {}
|
||||
|
||||
glob-parent@5.1.2:
|
||||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
|
||||
glob-parent@6.0.2:
|
||||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
|
||||
glob@7.1.6:
|
||||
dependencies:
|
||||
fs.realpath: 1.0.0
|
||||
inflight: 1.0.6
|
||||
inherits: 2.0.4
|
||||
minimatch: 3.1.2
|
||||
once: 1.4.0
|
||||
path-is-absolute: 1.0.1
|
||||
|
||||
globals@11.12.0: {}
|
||||
|
||||
graceful-fs@4.2.11: {}
|
||||
|
||||
gray-matter@4.0.3:
|
||||
dependencies:
|
||||
js-yaml: 3.14.1
|
||||
kind-of: 6.0.3
|
||||
section-matter: 1.0.0
|
||||
strip-bom-string: 1.0.0
|
||||
|
||||
has-flag@3.0.0: {}
|
||||
|
||||
hasown@2.0.0:
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
hast-util-embedded@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-is-element: 3.0.0
|
||||
|
||||
hast-util-from-html@2.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
devlop: 1.1.0
|
||||
hast-util-from-parse5: 8.0.1
|
||||
parse5: 7.1.2
|
||||
vfile: 6.0.1
|
||||
vfile-message: 4.0.2
|
||||
|
||||
hast-util-from-parse5@8.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
devlop: 1.1.0
|
||||
hastscript: 8.0.0
|
||||
property-information: 6.4.0
|
||||
vfile: 6.0.1
|
||||
vfile-location: 5.0.2
|
||||
web-namespaces: 2.0.1
|
||||
|
||||
hast-util-has-property@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hast-util-is-body-ok-link@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hast-util-is-element@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hast-util-parse-selector@4.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hast-util-phrasing@3.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-embedded: 3.0.0
|
||||
hast-util-has-property: 3.0.0
|
||||
hast-util-is-body-ok-link: 3.0.0
|
||||
hast-util-is-element: 3.0.0
|
||||
|
||||
hast-util-raw@9.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
"@ungap/structured-clone": 1.2.0
|
||||
hast-util-from-parse5: 8.0.1
|
||||
hast-util-to-parse5: 8.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.0.2
|
||||
parse5: 7.1.2
|
||||
unist-util-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
web-namespaces: 2.0.1
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-select@6.0.2:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
bcp-47-match: 2.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
css-selector-parser: 3.0.4
|
||||
devlop: 1.1.0
|
||||
direction: 2.0.1
|
||||
hast-util-has-property: 3.0.0
|
||||
hast-util-to-string: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
not: 0.1.0
|
||||
nth-check: 2.1.1
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
unist-util-visit: 5.0.0
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-estree@3.1.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/hast": 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
devlop: 1.1.0
|
||||
estree-util-attach-comments: 3.0.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
style-to-object: 0.4.4
|
||||
unist-util-position: 5.0.0
|
||||
zwitch: 2.0.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
hast-util-to-html@9.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
ccount: 2.0.1
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-raw: 9.0.1
|
||||
hast-util-whitespace: 3.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.0.2
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
stringify-entities: 4.0.3
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-html@9.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
ccount: 2.0.1
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-raw: 9.0.1
|
||||
hast-util-whitespace: 3.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.0.2
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
stringify-entities: 4.0.3
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-jsx-runtime@2.3.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
comma-separated-tokens: 2.0.3
|
||||
devlop: 1.1.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
style-to-object: 1.0.5
|
||||
unist-util-position: 5.0.0
|
||||
vfile-message: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
hast-util-to-parse5@8.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
devlop: 1.1.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
web-namespaces: 2.0.1
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-string@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hast-util-to-text@4.0.2:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/unist": 3.0.2
|
||||
hast-util-is-element: 3.0.0
|
||||
unist-util-find-after: 5.0.0
|
||||
|
||||
hast-util-whitespace@3.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
|
||||
hastscript@8.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-parse-selector: 4.0.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
|
||||
hastscript@9.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-parse-selector: 4.0.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
|
||||
html-escaper@3.0.3: {}
|
||||
|
||||
html-void-elements@3.0.0: {}
|
||||
|
||||
html-whitespace-sensitive-tag-names@3.0.0: {}
|
||||
|
||||
http-cache-semantics@4.1.1: {}
|
||||
|
||||
human-signals@5.0.0: {}
|
||||
|
||||
import-meta-resolve@4.0.0: {}
|
||||
|
||||
inflight@1.0.6:
|
||||
dependencies:
|
||||
once: 1.4.0
|
||||
wrappy: 1.0.2
|
||||
|
||||
inherits@2.0.4: {}
|
||||
|
||||
inline-style-parser@0.1.1: {}
|
||||
|
||||
inline-style-parser@0.2.2: {}
|
||||
|
||||
is-alphabetical@2.0.1: {}
|
||||
|
||||
is-alphanumerical@2.0.1:
|
||||
dependencies:
|
||||
is-alphabetical: 2.0.1
|
||||
is-decimal: 2.0.1
|
||||
|
||||
is-arrayish@0.3.2: {}
|
||||
|
||||
is-binary-path@2.1.0:
|
||||
dependencies:
|
||||
binary-extensions: 2.2.0
|
||||
|
||||
is-buffer@2.0.5: {}
|
||||
|
||||
is-core-module@2.13.1:
|
||||
dependencies:
|
||||
hasown: 2.0.0
|
||||
|
||||
is-decimal@2.0.1: {}
|
||||
|
||||
is-docker@3.0.0: {}
|
||||
|
||||
is-extendable@0.1.1: {}
|
||||
|
||||
is-extglob@2.1.1: {}
|
||||
|
||||
is-fullwidth-code-point@3.0.0: {}
|
||||
|
||||
is-glob@4.0.3:
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
|
||||
is-hexadecimal@2.0.1: {}
|
||||
|
||||
is-inside-container@1.0.0:
|
||||
dependencies:
|
||||
is-docker: 3.0.0
|
||||
|
||||
is-interactive@2.0.0: {}
|
||||
|
||||
is-number@7.0.0: {}
|
||||
|
||||
is-plain-obj@4.1.0: {}
|
||||
|
||||
is-reference@3.0.2:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
|
||||
is-stream@3.0.0: {}
|
||||
|
||||
is-unicode-supported@1.3.0: {}
|
||||
|
||||
is-unicode-supported@2.0.0: {}
|
||||
|
||||
is-wsl@3.1.0:
|
||||
dependencies:
|
||||
is-inside-container: 1.0.0
|
||||
|
||||
isexe@2.0.0: {}
|
||||
|
||||
jiti@1.21.0: {}
|
||||
|
||||
js-tokens@4.0.0: {}
|
||||
|
||||
js-yaml@3.14.1:
|
||||
dependencies:
|
||||
argparse: 1.0.10
|
||||
esprima: 4.0.1
|
||||
|
||||
js-yaml@4.1.0:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
|
||||
jsesc@2.5.2: {}
|
||||
|
||||
json5@2.2.3: {}
|
||||
|
||||
jsonc-parser@2.3.1: {}
|
||||
|
||||
kind-of@6.0.3: {}
|
||||
|
||||
kleur@3.0.3: {}
|
||||
|
||||
kleur@4.1.5: {}
|
||||
|
||||
lilconfig@2.1.0: {}
|
||||
|
||||
lilconfig@3.0.0: {}
|
||||
|
||||
lilconfig@3.1.1: {}
|
||||
|
||||
lines-and-columns@1.2.4: {}
|
||||
|
||||
load-yaml-file@0.2.0:
|
||||
dependencies:
|
||||
graceful-fs: 4.2.11
|
||||
js-yaml: 3.14.1
|
||||
pify: 4.0.1
|
||||
strip-bom: 3.0.0
|
||||
|
||||
locate-path@5.0.0:
|
||||
dependencies:
|
||||
p-locate: 4.1.0
|
||||
|
||||
locate-path@6.0.0:
|
||||
dependencies:
|
||||
p-locate: 5.0.0
|
||||
|
||||
lodash.memoize@4.1.2: {}
|
||||
|
||||
lodash.uniq@4.5.0: {}
|
||||
|
||||
log-symbols@6.0.0:
|
||||
dependencies:
|
||||
chalk: 5.3.0
|
||||
is-unicode-supported: 1.3.0
|
||||
|
||||
longest-streak@3.1.0: {}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
dependencies:
|
||||
yallist: 3.1.1
|
||||
|
||||
lru-cache@6.0.0:
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
|
||||
magic-string@0.30.10:
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec": 1.4.15
|
||||
|
||||
markdown-extensions@2.0.0: {}
|
||||
|
||||
markdown-table@3.0.3: {}
|
||||
|
||||
mdast-util-definitions@6.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-visit: 5.0.0
|
||||
|
||||
mdast-util-directive@3.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
"@types/unist": 3.0.2
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
parse-entities: 4.0.1
|
||||
stringify-entities: 4.0.3
|
||||
unist-util-visit-parents: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-find-and-replace@3.0.1:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
escape-string-regexp: 5.0.0
|
||||
unist-util-is: 6.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
|
||||
mdast-util-from-markdown@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
"@types/unist": 3.0.2
|
||||
decode-named-character-reference: 1.0.2
|
||||
devlop: 1.1.0
|
||||
mdast-util-to-string: 4.0.0
|
||||
micromark: 4.0.0
|
||||
micromark-util-decode-numeric-character-reference: 2.0.1
|
||||
micromark-util-decode-string: 2.0.0
|
||||
micromark-util-normalize-identifier: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
unist-util-stringify-position: 4.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-autolink-literal@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
ccount: 2.0.1
|
||||
devlop: 1.1.0
|
||||
mdast-util-find-and-replace: 3.0.1
|
||||
micromark-util-character: 2.0.1
|
||||
|
||||
mdast-util-gfm-footnote@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
micromark-util-normalize-identifier: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-strikethrough@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-table@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
devlop: 1.1.0
|
||||
markdown-table: 3.0.3
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-task-list-item@2.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm@3.0.0:
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-gfm-autolink-literal: 2.0.0
|
||||
mdast-util-gfm-footnote: 2.0.0
|
||||
mdast-util-gfm-strikethrough: 2.0.0
|
||||
mdast-util-gfm-table: 2.0.0
|
||||
mdast-util-gfm-task-list-item: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx-expression@2.0.0:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx-jsx@3.0.0:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
"@types/unist": 3.0.2
|
||||
ccount: 2.0.1
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
parse-entities: 4.0.1
|
||||
stringify-entities: 4.0.3
|
||||
unist-util-remove-position: 5.0.0
|
||||
unist-util-stringify-position: 4.0.0
|
||||
vfile-message: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx@3.0.0:
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdxjs-esm@2.0.1:
|
||||
dependencies:
|
||||
"@types/estree-jsx": 1.0.3
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-phrasing@4.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
unist-util-is: 6.0.0
|
||||
|
||||
mdast-util-to-hast@13.0.2:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
"@ungap/structured-clone": 1.2.0
|
||||
devlop: 1.1.0
|
||||
micromark-util-sanitize-uri: 2.0.0
|
||||
trim-lines: 3.0.1
|
||||
unist-util-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
|
||||
mdast-util-to-markdown@2.1.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
"@types/unist": 3.0.2
|
||||
longest-streak: 3.1.0
|
||||
mdast-util-phrasing: 4.0.0
|
||||
mdast-util-to-string: 4.0.0
|
||||
micromark-util-decode-string: 2.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
zwitch: 2.0.4
|
||||
|
||||
mdast-util-to-string@4.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
|
||||
mdn-data@2.0.28: {}
|
||||
|
||||
mdn-data@2.0.30: {}
|
||||
|
||||
merge-stream@2.0.0: {}
|
||||
|
||||
merge2@1.4.1: {}
|
||||
|
||||
micromark-core-commonmark@2.0.0:
|
||||
dependencies:
|
||||
decode-named-character-reference: 1.0.2
|
||||
devlop: 1.1.0
|
||||
micromark-factory-destination: 2.0.0
|
||||
micromark-factory-label: 2.0.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-factory-title: 2.0.0
|
||||
micromark-factory-whitespace: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-chunked: 2.0.0
|
||||
micromark-util-classify-character: 2.0.0
|
||||
micromark-util-html-tag-name: 2.0.0
|
||||
micromark-util-normalize-identifier: 2.0.0
|
||||
micromark-util-resolve-all: 2.0.0
|
||||
micromark-util-subtokenize: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-directive@3.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-factory-whitespace: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
parse-entities: 4.0.1
|
||||
|
||||
micromark-extension-gfm-autolink-literal@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-sanitize-uri: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm-footnote@2.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-core-commonmark: 2.0.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-normalize-identifier: 2.0.0
|
||||
micromark-util-sanitize-uri: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm-strikethrough@2.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-util-chunked: 2.0.0
|
||||
micromark-util-classify-character: 2.0.0
|
||||
micromark-util-resolve-all: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm-table@2.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm-tagfilter@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm-task-list-item@2.0.1:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-gfm@3.0.0:
|
||||
dependencies:
|
||||
micromark-extension-gfm-autolink-literal: 2.0.0
|
||||
micromark-extension-gfm-footnote: 2.0.0
|
||||
micromark-extension-gfm-strikethrough: 2.0.0
|
||||
micromark-extension-gfm-table: 2.0.0
|
||||
micromark-extension-gfm-tagfilter: 2.0.0
|
||||
micromark-extension-gfm-task-list-item: 2.0.1
|
||||
micromark-util-combine-extensions: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-mdx-expression@3.0.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
devlop: 1.1.0
|
||||
micromark-factory-mdx-expression: 2.0.1
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-events-to-acorn: 2.0.2
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-mdx-jsx@3.0.0:
|
||||
dependencies:
|
||||
"@types/acorn": 4.0.6
|
||||
"@types/estree": 1.0.5
|
||||
devlop: 1.1.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
micromark-factory-mdx-expression: 2.0.1
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
vfile-message: 4.0.2
|
||||
|
||||
micromark-extension-mdx-md@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-extension-mdxjs-esm@3.0.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
devlop: 1.1.0
|
||||
micromark-core-commonmark: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-events-to-acorn: 2.0.2
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
unist-util-position-from-estree: 2.0.0
|
||||
vfile-message: 4.0.2
|
||||
|
||||
micromark-extension-mdxjs@3.0.0:
|
||||
dependencies:
|
||||
acorn: 8.11.2
|
||||
acorn-jsx: 5.3.2(acorn@8.11.2)
|
||||
micromark-extension-mdx-expression: 3.0.0
|
||||
micromark-extension-mdx-jsx: 3.0.0
|
||||
micromark-extension-mdx-md: 2.0.0
|
||||
micromark-extension-mdxjs-esm: 3.0.0
|
||||
micromark-util-combine-extensions: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-factory-destination@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-factory-label@2.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-factory-mdx-expression@2.0.1:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
devlop: 1.1.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-events-to-acorn: 2.0.2
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
unist-util-position-from-estree: 2.0.0
|
||||
vfile-message: 4.0.2
|
||||
|
||||
micromark-factory-space@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-factory-title@2.0.0:
|
||||
dependencies:
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-factory-whitespace@2.0.0:
|
||||
dependencies:
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-character@2.0.1:
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-chunked@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.0
|
||||
|
||||
micromark-util-classify-character@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-combine-extensions@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-chunked: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-decode-numeric-character-reference@2.0.1:
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.0
|
||||
|
||||
micromark-util-decode-string@2.0.0:
|
||||
dependencies:
|
||||
decode-named-character-reference: 1.0.2
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-decode-numeric-character-reference: 2.0.1
|
||||
micromark-util-symbol: 2.0.0
|
||||
|
||||
micromark-util-encode@2.0.0: {}
|
||||
|
||||
micromark-util-events-to-acorn@2.0.2:
|
||||
dependencies:
|
||||
"@types/acorn": 4.0.6
|
||||
"@types/estree": 1.0.5
|
||||
"@types/unist": 3.0.2
|
||||
devlop: 1.1.0
|
||||
estree-util-visit: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
vfile-message: 4.0.2
|
||||
|
||||
micromark-util-html-tag-name@2.0.0: {}
|
||||
|
||||
micromark-util-normalize-identifier@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.0
|
||||
|
||||
micromark-util-resolve-all@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-sanitize-uri@2.0.0:
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-encode: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
|
||||
micromark-util-subtokenize@2.0.0:
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark-util-chunked: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
|
||||
micromark-util-symbol@2.0.0: {}
|
||||
|
||||
micromark-util-types@2.0.0: {}
|
||||
|
||||
micromark@4.0.0:
|
||||
dependencies:
|
||||
"@types/debug": 4.1.12
|
||||
debug: 4.3.4
|
||||
decode-named-character-reference: 1.0.2
|
||||
devlop: 1.1.0
|
||||
micromark-core-commonmark: 2.0.0
|
||||
micromark-factory-space: 2.0.0
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-chunked: 2.0.0
|
||||
micromark-util-combine-extensions: 2.0.0
|
||||
micromark-util-decode-numeric-character-reference: 2.0.1
|
||||
micromark-util-encode: 2.0.0
|
||||
micromark-util-normalize-identifier: 2.0.0
|
||||
micromark-util-resolve-all: 2.0.0
|
||||
micromark-util-sanitize-uri: 2.0.0
|
||||
micromark-util-subtokenize: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromatch@4.0.5:
|
||||
dependencies:
|
||||
braces: 3.0.2
|
||||
picomatch: 2.3.1
|
||||
|
||||
mimic-fn@2.1.0: {}
|
||||
|
||||
mimic-fn@4.0.0: {}
|
||||
|
||||
minimatch@3.1.2:
|
||||
dependencies:
|
||||
brace-expansion: 1.1.11
|
||||
|
||||
mrmime@2.0.0: {}
|
||||
|
||||
ms@2.1.2: {}
|
||||
|
||||
muggle-string@0.4.1: {}
|
||||
|
||||
mz@2.7.0:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
object-assign: 4.1.1
|
||||
thenify-all: 1.6.0
|
||||
|
||||
nanoid@3.3.7: {}
|
||||
|
||||
nlcst-to-string@3.1.1:
|
||||
dependencies:
|
||||
"@types/nlcst": 1.0.4
|
||||
|
||||
node-releases@2.0.14: {}
|
||||
|
||||
normalize-path@3.0.0: {}
|
||||
|
||||
normalize-range@0.1.2: {}
|
||||
|
||||
not@0.1.0: {}
|
||||
|
||||
npm-run-path@5.1.0:
|
||||
dependencies:
|
||||
path-key: 4.0.0
|
||||
|
||||
nth-check@2.1.1:
|
||||
dependencies:
|
||||
boolbase: 1.0.0
|
||||
|
||||
object-assign@4.1.1: {}
|
||||
|
||||
object-hash@3.0.0: {}
|
||||
|
||||
once@1.4.0:
|
||||
dependencies:
|
||||
wrappy: 1.0.2
|
||||
|
||||
onetime@5.1.2:
|
||||
dependencies:
|
||||
mimic-fn: 2.1.0
|
||||
|
||||
onetime@6.0.0:
|
||||
dependencies:
|
||||
mimic-fn: 4.0.0
|
||||
|
||||
ora@8.0.1:
|
||||
dependencies:
|
||||
chalk: 5.3.0
|
||||
cli-cursor: 4.0.0
|
||||
cli-spinners: 2.9.2
|
||||
is-interactive: 2.0.0
|
||||
is-unicode-supported: 2.0.0
|
||||
log-symbols: 6.0.0
|
||||
stdin-discarder: 0.2.2
|
||||
string-width: 7.1.0
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
p-limit@2.3.0:
|
||||
dependencies:
|
||||
p-try: 2.2.0
|
||||
|
||||
p-limit@3.1.0:
|
||||
dependencies:
|
||||
yocto-queue: 0.1.0
|
||||
|
||||
p-limit@5.0.0:
|
||||
dependencies:
|
||||
yocto-queue: 1.0.0
|
||||
|
||||
p-locate@4.1.0:
|
||||
dependencies:
|
||||
p-limit: 2.3.0
|
||||
|
||||
p-locate@5.0.0:
|
||||
dependencies:
|
||||
p-limit: 3.1.0
|
||||
|
||||
p-queue@8.0.1:
|
||||
dependencies:
|
||||
eventemitter3: 5.0.1
|
||||
p-timeout: 6.1.2
|
||||
|
||||
p-timeout@6.1.2: {}
|
||||
|
||||
p-try@2.2.0: {}
|
||||
|
||||
pagefind@1.0.4:
|
||||
optionalDependencies:
|
||||
"@pagefind/darwin-arm64": 1.0.4
|
||||
"@pagefind/darwin-x64": 1.0.4
|
||||
"@pagefind/linux-arm64": 1.0.4
|
||||
"@pagefind/linux-x64": 1.0.4
|
||||
"@pagefind/windows-x64": 1.0.4
|
||||
|
||||
parse-entities@4.0.1:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
character-entities: 2.0.2
|
||||
character-entities-legacy: 3.0.0
|
||||
character-reference-invalid: 2.0.1
|
||||
decode-named-character-reference: 1.0.2
|
||||
is-alphanumerical: 2.0.1
|
||||
is-decimal: 2.0.1
|
||||
is-hexadecimal: 2.0.1
|
||||
|
||||
parse-latin@5.0.1:
|
||||
dependencies:
|
||||
nlcst-to-string: 3.1.1
|
||||
unist-util-modify-children: 3.1.1
|
||||
unist-util-visit-children: 2.0.2
|
||||
|
||||
parse5@7.1.2:
|
||||
dependencies:
|
||||
entities: 4.5.0
|
||||
|
||||
path-browserify@1.0.1: {}
|
||||
|
||||
path-exists@4.0.0: {}
|
||||
|
||||
path-is-absolute@1.0.1: {}
|
||||
|
||||
path-key@3.1.1: {}
|
||||
|
||||
path-key@4.0.0: {}
|
||||
|
||||
path-parse@1.0.7: {}
|
||||
|
||||
path-to-regexp@6.2.2: {}
|
||||
|
||||
periscopic@3.1.0:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
estree-walker: 3.0.3
|
||||
is-reference: 3.0.2
|
||||
|
||||
picocolors@1.0.0: {}
|
||||
|
||||
picomatch@2.3.1: {}
|
||||
|
||||
pify@2.3.0: {}
|
||||
|
||||
pify@4.0.1: {}
|
||||
|
||||
pirates@4.0.6: {}
|
||||
|
||||
pkg-dir@4.2.0:
|
||||
dependencies:
|
||||
find-up: 4.1.0
|
||||
|
||||
postcss-attribute-case-insensitive@6.0.3(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-calc@10.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-clamp@4.1.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-color-functional-notation@6.0.11(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-color-hex-alpha@9.0.4(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-color-rebeccapurple@9.0.3(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-colormin@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-api: 3.0.0
|
||||
colord: 2.9.3
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-convert-values@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-custom-media@10.0.6(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-custom-properties@13.3.10(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-custom-selectors@7.1.10(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-dir-pseudo-class@8.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-discard-comments@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-discard-duplicates@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-discard-empty@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-discard-overridden@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-double-position-gradients@5.0.6(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-focus-visible@9.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-focus-within@8.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-font-variant@5.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-gap-properties@5.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-image-set-function@6.0.3(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-import@15.1.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
read-cache: 1.0.0
|
||||
resolve: 1.22.8
|
||||
|
||||
postcss-js@4.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
camelcase-css: 2.0.1
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-lab-function@6.0.16(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1)
|
||||
"@csstools/css-tokenizer": 2.3.1
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/utilities": 1.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-load-config@4.0.2(postcss@8.4.31):
|
||||
dependencies:
|
||||
lilconfig: 3.0.0
|
||||
yaml: 2.3.4
|
||||
optionalDependencies:
|
||||
postcss: 8.4.31
|
||||
|
||||
postcss-load-config@4.0.2(postcss@8.4.33):
|
||||
dependencies:
|
||||
lilconfig: 3.0.0
|
||||
yaml: 2.3.4
|
||||
optionalDependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-logical@7.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-merge-longhand@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
stylehacks: 7.0.0(postcss@8.4.33)
|
||||
|
||||
postcss-merge-rules@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-api: 3.0.0
|
||||
cssnano-utils: 5.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-minify-font-values@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-minify-gradients@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
colord: 2.9.3
|
||||
cssnano-utils: 5.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-minify-params@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
cssnano-utils: 5.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-minify-selectors@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-nested@6.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.13
|
||||
|
||||
postcss-nested@6.0.1(postcss@8.4.38):
|
||||
dependencies:
|
||||
postcss: 8.4.38
|
||||
postcss-selector-parser: 6.0.13
|
||||
|
||||
postcss-nesting@12.1.4(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/selector-resolve-nested": 1.1.0(postcss-selector-parser@6.0.16)
|
||||
"@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16)
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-normalize-charset@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-normalize-display-values@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-positions@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-repeat-style@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-string@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-timing-functions@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-unicode@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-url@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-normalize-whitespace@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-opacity-percentage@2.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-ordered-values@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
cssnano-utils: 5.0.0(postcss@8.4.33)
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-overflow-shorthand@5.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-page-break@3.0.4(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-place@9.0.1(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-preset-env@9.5.13(postcss@8.4.33):
|
||||
dependencies:
|
||||
"@csstools/postcss-cascade-layers": 4.0.6(postcss@8.4.33)
|
||||
"@csstools/postcss-color-function": 3.0.16(postcss@8.4.33)
|
||||
"@csstools/postcss-color-mix-function": 2.0.16(postcss@8.4.33)
|
||||
"@csstools/postcss-exponential-functions": 1.0.7(postcss@8.4.33)
|
||||
"@csstools/postcss-font-format-keywords": 3.0.2(postcss@8.4.33)
|
||||
"@csstools/postcss-gamut-mapping": 1.0.9(postcss@8.4.33)
|
||||
"@csstools/postcss-gradients-interpolation-method": 4.0.17(postcss@8.4.33)
|
||||
"@csstools/postcss-hwb-function": 3.0.15(postcss@8.4.33)
|
||||
"@csstools/postcss-ic-unit": 3.0.6(postcss@8.4.33)
|
||||
"@csstools/postcss-initial": 1.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-is-pseudo-class": 4.0.8(postcss@8.4.33)
|
||||
"@csstools/postcss-light-dark-function": 1.0.5(postcss@8.4.33)
|
||||
"@csstools/postcss-logical-float-and-clear": 2.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-logical-overflow": 1.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-logical-overscroll-behavior": 1.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-logical-resize": 2.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-logical-viewport-units": 2.0.9(postcss@8.4.33)
|
||||
"@csstools/postcss-media-minmax": 1.1.6(postcss@8.4.33)
|
||||
"@csstools/postcss-media-queries-aspect-ratio-number-values": 2.0.9(postcss@8.4.33)
|
||||
"@csstools/postcss-nested-calc": 3.0.2(postcss@8.4.33)
|
||||
"@csstools/postcss-normalize-display-values": 3.0.2(postcss@8.4.33)
|
||||
"@csstools/postcss-oklab-function": 3.0.16(postcss@8.4.33)
|
||||
"@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33)
|
||||
"@csstools/postcss-relative-color-syntax": 2.0.16(postcss@8.4.33)
|
||||
"@csstools/postcss-scope-pseudo-class": 3.0.1(postcss@8.4.33)
|
||||
"@csstools/postcss-stepped-value-functions": 3.0.8(postcss@8.4.33)
|
||||
"@csstools/postcss-text-decoration-shorthand": 3.0.6(postcss@8.4.33)
|
||||
"@csstools/postcss-trigonometric-functions": 3.0.8(postcss@8.4.33)
|
||||
"@csstools/postcss-unset-value": 3.0.1(postcss@8.4.33)
|
||||
autoprefixer: 10.4.19(postcss@8.4.33)
|
||||
browserslist: 4.23.0
|
||||
css-blank-pseudo: 6.0.2(postcss@8.4.33)
|
||||
css-has-pseudo: 6.0.5(postcss@8.4.33)
|
||||
css-prefers-color-scheme: 9.0.1(postcss@8.4.33)
|
||||
cssdb: 8.0.1
|
||||
postcss: 8.4.33
|
||||
postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.33)
|
||||
postcss-clamp: 4.1.0(postcss@8.4.33)
|
||||
postcss-color-functional-notation: 6.0.11(postcss@8.4.33)
|
||||
postcss-color-hex-alpha: 9.0.4(postcss@8.4.33)
|
||||
postcss-color-rebeccapurple: 9.0.3(postcss@8.4.33)
|
||||
postcss-custom-media: 10.0.6(postcss@8.4.33)
|
||||
postcss-custom-properties: 13.3.10(postcss@8.4.33)
|
||||
postcss-custom-selectors: 7.1.10(postcss@8.4.33)
|
||||
postcss-dir-pseudo-class: 8.0.1(postcss@8.4.33)
|
||||
postcss-double-position-gradients: 5.0.6(postcss@8.4.33)
|
||||
postcss-focus-visible: 9.0.1(postcss@8.4.33)
|
||||
postcss-focus-within: 8.0.1(postcss@8.4.33)
|
||||
postcss-font-variant: 5.0.0(postcss@8.4.33)
|
||||
postcss-gap-properties: 5.0.1(postcss@8.4.33)
|
||||
postcss-image-set-function: 6.0.3(postcss@8.4.33)
|
||||
postcss-lab-function: 6.0.16(postcss@8.4.33)
|
||||
postcss-logical: 7.0.1(postcss@8.4.33)
|
||||
postcss-nesting: 12.1.4(postcss@8.4.33)
|
||||
postcss-opacity-percentage: 2.0.0(postcss@8.4.33)
|
||||
postcss-overflow-shorthand: 5.0.1(postcss@8.4.33)
|
||||
postcss-page-break: 3.0.4(postcss@8.4.33)
|
||||
postcss-place: 9.0.1(postcss@8.4.33)
|
||||
postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.33)
|
||||
postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.33)
|
||||
postcss-selector-not: 7.0.2(postcss@8.4.33)
|
||||
|
||||
postcss-pseudo-class-any-link@9.0.2(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-reduce-initial@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
caniuse-api: 3.0.0
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-reduce-transforms@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
|
||||
postcss-replace-overflow-wrap@4.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
|
||||
postcss-selector-not@7.0.2(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-selector-parser@6.0.13:
|
||||
dependencies:
|
||||
cssesc: 3.0.0
|
||||
util-deprecate: 1.0.2
|
||||
|
||||
postcss-selector-parser@6.0.16:
|
||||
dependencies:
|
||||
cssesc: 3.0.0
|
||||
util-deprecate: 1.0.2
|
||||
|
||||
postcss-svgo@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
svgo: 3.3.2
|
||||
|
||||
postcss-unique-selectors@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
postcss-value-parser@4.2.0: {}
|
||||
|
||||
postcss@8.4.31:
|
||||
dependencies:
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
|
||||
postcss@8.4.33:
|
||||
dependencies:
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
|
||||
postcss@8.4.38:
|
||||
dependencies:
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.2.0
|
||||
|
||||
preferred-pm@3.1.3:
|
||||
dependencies:
|
||||
find-up: 5.0.0
|
||||
find-yarn-workspace-root2: 1.2.16
|
||||
path-exists: 4.0.0
|
||||
which-pm: 2.0.0
|
||||
|
||||
prismjs@1.29.0: {}
|
||||
|
||||
prompts@2.4.2:
|
||||
dependencies:
|
||||
kleur: 3.0.3
|
||||
sisteransi: 1.0.5
|
||||
|
||||
property-information@6.4.0: {}
|
||||
|
||||
queue-microtask@1.2.3: {}
|
||||
|
||||
read-cache@1.0.0:
|
||||
dependencies:
|
||||
pify: 2.3.0
|
||||
|
||||
readdirp@3.6.0:
|
||||
dependencies:
|
||||
picomatch: 2.3.1
|
||||
|
||||
rehype-expressive-code@0.35.3:
|
||||
dependencies:
|
||||
expressive-code: 0.35.3
|
||||
|
||||
rehype-format@5.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-embedded: 3.0.0
|
||||
hast-util-is-element: 3.0.0
|
||||
hast-util-phrasing: 3.0.1
|
||||
hast-util-whitespace: 3.0.0
|
||||
html-whitespace-sensitive-tag-names: 3.0.0
|
||||
rehype-minify-whitespace: 6.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
|
||||
rehype-minify-whitespace@6.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-embedded: 3.0.0
|
||||
hast-util-is-element: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
unist-util-is: 6.0.0
|
||||
|
||||
rehype-parse@9.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-from-html: 2.0.1
|
||||
unified: 11.0.4
|
||||
|
||||
rehype-raw@7.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-raw: 9.0.1
|
||||
vfile: 6.0.1
|
||||
|
||||
rehype-stringify@10.0.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
hast-util-to-html: 9.0.0
|
||||
unified: 11.0.4
|
||||
|
||||
rehype@13.0.1:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
rehype-parse: 9.0.0
|
||||
rehype-stringify: 10.0.0
|
||||
unified: 11.0.4
|
||||
|
||||
remark-directive@3.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-directive: 3.0.0
|
||||
micromark-extension-directive: 3.0.0
|
||||
unified: 11.0.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-gfm@4.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-gfm: 3.0.0
|
||||
micromark-extension-gfm: 3.0.0
|
||||
remark-parse: 11.0.0
|
||||
remark-stringify: 11.0.0
|
||||
unified: 11.0.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-mdx@3.0.0:
|
||||
dependencies:
|
||||
mdast-util-mdx: 3.0.0
|
||||
micromark-extension-mdxjs: 3.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-parse@11.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
unified: 11.0.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-rehype@11.1.0:
|
||||
dependencies:
|
||||
"@types/hast": 3.0.3
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-to-hast: 13.0.2
|
||||
unified: 11.0.4
|
||||
vfile: 6.0.1
|
||||
|
||||
remark-smartypants@2.0.0:
|
||||
dependencies:
|
||||
retext: 8.1.0
|
||||
retext-smartypants: 5.2.0
|
||||
unist-util-visit: 4.1.2
|
||||
|
||||
remark-stringify@11.0.0:
|
||||
dependencies:
|
||||
"@types/mdast": 4.0.3
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
unified: 11.0.4
|
||||
|
||||
request-light@0.7.0: {}
|
||||
|
||||
require-directory@2.1.1: {}
|
||||
|
||||
resolve@1.22.8:
|
||||
dependencies:
|
||||
is-core-module: 2.13.1
|
||||
path-parse: 1.0.7
|
||||
supports-preserve-symlinks-flag: 1.0.0
|
||||
|
||||
restore-cursor@4.0.0:
|
||||
dependencies:
|
||||
onetime: 5.1.2
|
||||
signal-exit: 3.0.7
|
||||
|
||||
retext-latin@3.1.0:
|
||||
dependencies:
|
||||
"@types/nlcst": 1.0.4
|
||||
parse-latin: 5.0.1
|
||||
unherit: 3.0.1
|
||||
unified: 10.1.2
|
||||
|
||||
retext-smartypants@5.2.0:
|
||||
dependencies:
|
||||
"@types/nlcst": 1.0.4
|
||||
nlcst-to-string: 3.1.1
|
||||
unified: 10.1.2
|
||||
unist-util-visit: 4.1.2
|
||||
|
||||
retext-stringify@3.1.0:
|
||||
dependencies:
|
||||
"@types/nlcst": 1.0.4
|
||||
nlcst-to-string: 3.1.1
|
||||
unified: 10.1.2
|
||||
|
||||
retext@8.1.0:
|
||||
dependencies:
|
||||
"@types/nlcst": 1.0.4
|
||||
retext-latin: 3.1.0
|
||||
retext-stringify: 3.1.0
|
||||
unified: 10.1.2
|
||||
|
||||
reusify@1.0.4: {}
|
||||
|
||||
rollup@4.17.2:
|
||||
dependencies:
|
||||
"@types/estree": 1.0.5
|
||||
optionalDependencies:
|
||||
"@rollup/rollup-android-arm-eabi": 4.17.2
|
||||
"@rollup/rollup-android-arm64": 4.17.2
|
||||
"@rollup/rollup-darwin-arm64": 4.17.2
|
||||
"@rollup/rollup-darwin-x64": 4.17.2
|
||||
"@rollup/rollup-linux-arm-gnueabihf": 4.17.2
|
||||
"@rollup/rollup-linux-arm-musleabihf": 4.17.2
|
||||
"@rollup/rollup-linux-arm64-gnu": 4.17.2
|
||||
"@rollup/rollup-linux-arm64-musl": 4.17.2
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": 4.17.2
|
||||
"@rollup/rollup-linux-riscv64-gnu": 4.17.2
|
||||
"@rollup/rollup-linux-s390x-gnu": 4.17.2
|
||||
"@rollup/rollup-linux-x64-gnu": 4.17.2
|
||||
"@rollup/rollup-linux-x64-musl": 4.17.2
|
||||
"@rollup/rollup-win32-arm64-msvc": 4.17.2
|
||||
"@rollup/rollup-win32-ia32-msvc": 4.17.2
|
||||
"@rollup/rollup-win32-x64-msvc": 4.17.2
|
||||
fsevents: 2.3.3
|
||||
|
||||
run-parallel@1.2.0:
|
||||
dependencies:
|
||||
queue-microtask: 1.2.3
|
||||
|
||||
sax@1.3.0: {}
|
||||
|
||||
section-matter@1.0.0:
|
||||
dependencies:
|
||||
extend-shallow: 2.0.1
|
||||
kind-of: 6.0.3
|
||||
|
||||
semver@6.3.1: {}
|
||||
|
||||
semver@7.5.4:
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
|
||||
semver@7.6.2: {}
|
||||
|
||||
sharp@0.33.4:
|
||||
dependencies:
|
||||
color: 4.2.3
|
||||
detect-libc: 2.0.3
|
||||
semver: 7.6.2
|
||||
optionalDependencies:
|
||||
"@img/sharp-darwin-arm64": 0.33.4
|
||||
"@img/sharp-darwin-x64": 0.33.4
|
||||
"@img/sharp-libvips-darwin-arm64": 1.0.2
|
||||
"@img/sharp-libvips-darwin-x64": 1.0.2
|
||||
"@img/sharp-libvips-linux-arm": 1.0.2
|
||||
"@img/sharp-libvips-linux-arm64": 1.0.2
|
||||
"@img/sharp-libvips-linux-s390x": 1.0.2
|
||||
"@img/sharp-libvips-linux-x64": 1.0.2
|
||||
"@img/sharp-libvips-linuxmusl-arm64": 1.0.2
|
||||
"@img/sharp-libvips-linuxmusl-x64": 1.0.2
|
||||
"@img/sharp-linux-arm": 0.33.4
|
||||
"@img/sharp-linux-arm64": 0.33.4
|
||||
"@img/sharp-linux-s390x": 0.33.4
|
||||
"@img/sharp-linux-x64": 0.33.4
|
||||
"@img/sharp-linuxmusl-arm64": 0.33.4
|
||||
"@img/sharp-linuxmusl-x64": 0.33.4
|
||||
"@img/sharp-wasm32": 0.33.4
|
||||
"@img/sharp-win32-ia32": 0.33.4
|
||||
"@img/sharp-win32-x64": 0.33.4
|
||||
|
||||
shebang-command@2.0.0:
|
||||
dependencies:
|
||||
shebang-regex: 3.0.0
|
||||
|
||||
shebang-regex@3.0.0: {}
|
||||
|
||||
shiki@1.5.2:
|
||||
dependencies:
|
||||
"@shikijs/core": 1.5.2
|
||||
|
||||
signal-exit@3.0.7: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
dependencies:
|
||||
is-arrayish: 0.3.2
|
||||
|
||||
sisteransi@1.0.5: {}
|
||||
|
||||
sitemap@7.1.1:
|
||||
dependencies:
|
||||
"@types/node": 17.0.45
|
||||
"@types/sax": 1.2.7
|
||||
arg: 5.0.2
|
||||
sax: 1.3.0
|
||||
|
||||
source-map-js@1.0.2: {}
|
||||
|
||||
source-map-js@1.2.0: {}
|
||||
|
||||
source-map@0.7.4: {}
|
||||
|
||||
space-separated-tokens@2.0.2: {}
|
||||
|
||||
sprintf-js@1.0.3: {}
|
||||
|
||||
stdin-discarder@0.2.2: {}
|
||||
|
||||
string-width@4.2.3:
|
||||
dependencies:
|
||||
emoji-regex: 8.0.0
|
||||
is-fullwidth-code-point: 3.0.0
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
string-width@5.1.2:
|
||||
dependencies:
|
||||
eastasianwidth: 0.2.0
|
||||
emoji-regex: 9.2.2
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
string-width@7.1.0:
|
||||
dependencies:
|
||||
emoji-regex: 10.3.0
|
||||
get-east-asian-width: 1.2.0
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
stringify-entities@4.0.3:
|
||||
dependencies:
|
||||
character-entities-html4: 2.1.0
|
||||
character-entities-legacy: 3.0.0
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
dependencies:
|
||||
ansi-regex: 5.0.1
|
||||
|
||||
strip-ansi@7.1.0:
|
||||
dependencies:
|
||||
ansi-regex: 6.0.1
|
||||
|
||||
strip-bom-string@1.0.0: {}
|
||||
|
||||
strip-bom@3.0.0: {}
|
||||
|
||||
strip-final-newline@3.0.0: {}
|
||||
|
||||
style-to-object@0.4.4:
|
||||
dependencies:
|
||||
inline-style-parser: 0.1.1
|
||||
|
||||
style-to-object@1.0.5:
|
||||
dependencies:
|
||||
inline-style-parser: 0.2.2
|
||||
|
||||
stylehacks@7.0.0(postcss@8.4.33):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.16
|
||||
|
||||
sucrase@3.34.0:
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping": 0.3.3
|
||||
commander: 4.1.1
|
||||
glob: 7.1.6
|
||||
lines-and-columns: 1.2.4
|
||||
mz: 2.7.0
|
||||
pirates: 4.0.6
|
||||
ts-interface-checker: 0.1.13
|
||||
|
||||
supports-color@5.5.0:
|
||||
dependencies:
|
||||
has-flag: 3.0.0
|
||||
|
||||
supports-preserve-symlinks-flag@1.0.0: {}
|
||||
|
||||
svgo@3.3.2:
|
||||
dependencies:
|
||||
"@trysound/sax": 0.2.0
|
||||
commander: 7.2.0
|
||||
css-select: 5.1.0
|
||||
css-tree: 2.3.1
|
||||
css-what: 6.1.0
|
||||
csso: 5.0.5
|
||||
picocolors: 1.0.0
|
||||
|
||||
tailwindcss@3.4.3:
|
||||
dependencies:
|
||||
"@alloc/quick-lru": 5.2.0
|
||||
arg: 5.0.2
|
||||
chokidar: 3.5.3
|
||||
didyoumean: 1.2.2
|
||||
dlv: 1.1.3
|
||||
fast-glob: 3.3.2
|
||||
glob-parent: 6.0.2
|
||||
is-glob: 4.0.3
|
||||
jiti: 1.21.0
|
||||
lilconfig: 2.1.0
|
||||
micromatch: 4.0.5
|
||||
normalize-path: 3.0.0
|
||||
object-hash: 3.0.0
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.33
|
||||
postcss-import: 15.1.0(postcss@8.4.33)
|
||||
postcss-js: 4.0.1(postcss@8.4.33)
|
||||
postcss-load-config: 4.0.2(postcss@8.4.33)
|
||||
postcss-nested: 6.0.1(postcss@8.4.33)
|
||||
postcss-selector-parser: 6.0.13
|
||||
resolve: 1.22.8
|
||||
sucrase: 3.34.0
|
||||
transitivePeerDependencies:
|
||||
- ts-node
|
||||
|
||||
thenify-all@1.6.0:
|
||||
dependencies:
|
||||
thenify: 3.3.1
|
||||
|
||||
thenify@3.3.1:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
|
||||
to-fast-properties@2.0.0: {}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
trim-lines@3.0.1: {}
|
||||
|
||||
trough@2.1.0: {}
|
||||
|
||||
ts-interface-checker@0.1.13: {}
|
||||
|
||||
tsconfck@3.0.3(typescript@5.4.5):
|
||||
optionalDependencies:
|
||||
typescript: 5.4.5
|
||||
|
||||
tslib@2.6.2:
|
||||
optional: true
|
||||
|
||||
type-fest@2.19.0: {}
|
||||
|
||||
typesafe-path@0.2.2: {}
|
||||
|
||||
typescript-auto-import-cache@0.3.2:
|
||||
dependencies:
|
||||
semver: 7.5.4
|
||||
|
||||
typescript@5.4.5: {}
|
||||
|
||||
unherit@3.0.1: {}
|
||||
|
||||
unified@10.1.2:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
bail: 2.0.2
|
||||
extend: 3.0.2
|
||||
is-buffer: 2.0.5
|
||||
is-plain-obj: 4.1.0
|
||||
trough: 2.1.0
|
||||
vfile: 5.3.7
|
||||
|
||||
unified@11.0.4:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
bail: 2.0.2
|
||||
devlop: 1.1.0
|
||||
extend: 3.0.2
|
||||
is-plain-obj: 4.1.0
|
||||
trough: 2.1.0
|
||||
vfile: 6.0.1
|
||||
|
||||
unist-util-find-after@5.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
|
||||
unist-util-is@5.2.1:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
|
||||
unist-util-is@6.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
unist-util-modify-children@3.1.1:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
array-iterate: 2.0.1
|
||||
|
||||
unist-util-position-from-estree@2.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
unist-util-position@5.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
unist-util-remove-position@5.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-visit: 5.0.0
|
||||
|
||||
unist-util-stringify-position@3.0.3:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
|
||||
unist-util-stringify-position@4.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
|
||||
unist-util-visit-children@2.0.2:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
|
||||
unist-util-visit-parents@5.1.3:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
unist-util-is: 5.2.1
|
||||
|
||||
unist-util-visit-parents@6.0.1:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
|
||||
unist-util-visit@4.1.2:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
unist-util-is: 5.2.1
|
||||
unist-util-visit-parents: 5.1.3
|
||||
|
||||
unist-util-visit@5.0.0:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
|
||||
update-browserslist-db@1.0.13(browserslist@4.23.0):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
escalade: 3.1.1
|
||||
picocolors: 1.0.0
|
||||
|
||||
util-deprecate@1.0.2: {}
|
||||
|
||||
vfile-location@5.0.2:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
vfile: 6.0.1
|
||||
|
||||
vfile-message@3.1.4:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
unist-util-stringify-position: 3.0.3
|
||||
|
||||
vfile-message@4.0.2:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-stringify-position: 4.0.0
|
||||
|
||||
vfile@5.3.7:
|
||||
dependencies:
|
||||
"@types/unist": 2.0.10
|
||||
is-buffer: 2.0.5
|
||||
unist-util-stringify-position: 3.0.3
|
||||
vfile-message: 3.1.4
|
||||
|
||||
vfile@6.0.1:
|
||||
dependencies:
|
||||
"@types/unist": 3.0.2
|
||||
unist-util-stringify-position: 4.0.0
|
||||
vfile-message: 4.0.2
|
||||
|
||||
vite@5.2.11:
|
||||
dependencies:
|
||||
esbuild: 0.20.2
|
||||
postcss: 8.4.38
|
||||
rollup: 4.17.2
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
vitefu@0.2.5(vite@5.2.11):
|
||||
optionalDependencies:
|
||||
vite: 5.2.11
|
||||
|
||||
volar-service-css@0.0.45(@volar/language-service@2.2.4):
|
||||
dependencies:
|
||||
vscode-css-languageservice: 6.2.10
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
volar-service-emmet@0.0.45(@volar/language-service@2.2.4):
|
||||
dependencies:
|
||||
"@emmetio/css-parser": 0.4.0
|
||||
"@emmetio/html-matcher": 1.3.0
|
||||
"@vscode/emmet-helper": 2.9.2
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
volar-service-html@0.0.45(@volar/language-service@2.2.4):
|
||||
dependencies:
|
||||
vscode-html-languageservice: "@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462"
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
volar-service-prettier@0.0.45(@volar/language-service@2.2.4):
|
||||
dependencies:
|
||||
vscode-uri: 3.0.8
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
volar-service-typescript-twoslash-queries@0.0.45(@volar/language-service@2.2.4):
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
volar-service-typescript@0.0.45(@volar/language-service@2.2.4):
|
||||
dependencies:
|
||||
path-browserify: 1.0.1
|
||||
semver: 7.5.4
|
||||
typescript-auto-import-cache: 0.3.2
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-nls: 5.2.0
|
||||
optionalDependencies:
|
||||
"@volar/language-service": 2.2.4
|
||||
|
||||
vscode-css-languageservice@6.2.10:
|
||||
dependencies:
|
||||
"@vscode/l10n": 0.0.16
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-languageserver-types: 3.17.5
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
vscode-html-languageservice@5.2.0:
|
||||
dependencies:
|
||||
"@vscode/l10n": 0.0.18
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-languageserver-types: 3.17.5
|
||||
vscode-uri: 3.0.8
|
||||
|
||||
vscode-jsonrpc@8.2.0: {}
|
||||
|
||||
vscode-languageserver-protocol@3.17.5:
|
||||
dependencies:
|
||||
vscode-jsonrpc: 8.2.0
|
||||
vscode-languageserver-types: 3.17.5
|
||||
|
||||
vscode-languageserver-textdocument@1.0.11: {}
|
||||
|
||||
vscode-languageserver-types@3.17.5: {}
|
||||
|
||||
vscode-languageserver@9.0.1:
|
||||
dependencies:
|
||||
vscode-languageserver-protocol: 3.17.5
|
||||
|
||||
vscode-nls@5.2.0: {}
|
||||
|
||||
vscode-uri@2.1.2: {}
|
||||
|
||||
vscode-uri@3.0.8: {}
|
||||
|
||||
web-namespaces@2.0.1: {}
|
||||
|
||||
which-pm-runs@1.1.0: {}
|
||||
|
||||
which-pm@2.0.0:
|
||||
dependencies:
|
||||
load-yaml-file: 0.2.0
|
||||
path-exists: 4.0.0
|
||||
|
||||
which-pm@2.1.1:
|
||||
dependencies:
|
||||
load-yaml-file: 0.2.0
|
||||
path-exists: 4.0.0
|
||||
|
||||
which@2.0.2:
|
||||
dependencies:
|
||||
isexe: 2.0.0
|
||||
|
||||
widest-line@4.0.1:
|
||||
dependencies:
|
||||
string-width: 5.1.2
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
wrap-ansi@8.1.0:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.1
|
||||
string-width: 5.1.2
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
wrappy@1.0.2: {}
|
||||
|
||||
y18n@5.0.8: {}
|
||||
|
||||
yallist@3.1.1: {}
|
||||
|
||||
yallist@4.0.0: {}
|
||||
|
||||
yaml@2.3.4: {}
|
||||
|
||||
yargs-parser@21.1.1: {}
|
||||
|
||||
yargs@17.7.2:
|
||||
dependencies:
|
||||
cliui: 8.0.1
|
||||
escalade: 3.1.1
|
||||
get-caller-file: 2.0.5
|
||||
require-directory: 2.1.1
|
||||
string-width: 4.2.3
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
|
||||
yocto-queue@0.1.0: {}
|
||||
|
||||
yocto-queue@1.0.0: {}
|
||||
|
||||
zod-to-json-schema@3.23.0(zod@3.23.8):
|
||||
dependencies:
|
||||
zod: 3.23.8
|
||||
|
||||
zod@3.22.4: {}
|
||||
|
||||
zod@3.23.8: {}
|
||||
|
||||
zwitch@2.0.4: {}
|
||||
10
docs/postcss.config.cjs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
module.exports = {
|
||||
plugins: [
|
||||
require("autoprefixer"),
|
||||
require("cssnano"),
|
||||
require("postcss-preset-env")({
|
||||
stage: 3,
|
||||
features: { "nesting-rules": false },
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
/* eslint-disable */
|
||||
|
||||
module.exports = {
|
||||
plugins: [require("tailwindcss")],
|
||||
};
|
||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
|
@ -1,7 +1,13 @@
|
|||
public
|
||||
contributing
|
||||
getting-started
|
||||
index.md
|
||||
fr
|
||||
pt-BR
|
||||
nn-NO
|
||||
assets
|
||||
styles
|
||||
env.d.ts
|
||||
content/config.ts
|
||||
content/docs/en
|
||||
content/docs/ca
|
||||
content/docs/de
|
||||
content/docs/es
|
||||
content/docs/fr
|
||||
content/docs/nn-no
|
||||
content/docs/pt-br
|
||||
content/docs/sr-latn
|
||||
content/docs/zh-hans
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"label": "Getting Started",
|
||||
"position": 2
|
||||
}
|
||||
|
|
@ -1,300 +0,0 @@
|
|||
---
|
||||
sidebarDepth: 2
|
||||
---
|
||||
|
||||
# Welcome 👋
|
||||
|
||||
[![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars]
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<div class="flex items-center">
|
||||
<a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Install<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a>
|
||||
</div>
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-yassinedoghri" title="Maintenance">🚧</a> <a href="#content-yassinedoghri" title="Content">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Accessibility">️️️️♿️</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-yassinedoghri" title="Answering Questions">💬</a> <a href="#mentoring-yassinedoghri" title="Mentoring">🧑🏫</a> <a href="#infra-yassinedoghri" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-yassinedoghri" title="Project Management">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/benjamin"><img src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100" width="100px;" alt="Benjamin Bellamy"/><br /><sub><b>Benjamin Bellamy</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin" title="Reviewed Pull Requests">👀</a> <a href="#content-benjamin" title="Content">🖋</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-benjamin" title="Answering Questions">💬</a> <a href="#infra-benjamin" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.castopod.org/author/benjamin-bellamy/" title="Blogposts">📝</a> <a href="#projectManagement-benjamin" title="Project Management">📆</a> <a href="#talk-benjamin" title="Talks">📢</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ola Hneini"/><br /><sub><b>Ola Hneini</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola" title="Reviewed Pull Requests">👀</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="#maintenance-ola" title="Maintenance">🚧</a> <a href="#question-ola" title="Answering Questions">💬</a> <a href="#ideas-ola" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="#infra-rdelaage" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Bug reports">🐛</a> <a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Bug reports">🐛</a> <a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Bug reports">🐛</a> <a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/NeoluxConsulting"><img src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100" width="100px;" alt="Guy Martin"/><br /><sub><b>Guy Martin</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Ad Aures Logo" class="h-16" /></a>
|
||||
<a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="NLnet Logo" class="h-16" /></a>
|
||||
</div>
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
|
||||
https://img.shields.io/github/license/ad-aures/castopod?color=blue
|
||||
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
|
||||
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
https://img.shields.io/github/stars/ad-aures/castopod?style=social
|
||||
|
||||
[release]: https://code.castopod.org/adaures/castopod/-/releases
|
||||
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
|
||||
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
|
||||
[semantic-release]: https://github.com/semantic-release/semantic-release
|
||||
[discord]: https://castopod.org/discord
|
||||
[stars]: https://github.com/ad-aures/castopod/stargazers
|
||||
[crowdin]: https://translate.castopod.org/project/castopod
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
7
docs/src/assets/images/sponsors/adaures.svg
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 261 50">
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
svg { background-color: white; }
|
||||
}
|
||||
</style>
|
||||
<g clip-path="url(#a)"><path fill="#2A2D7C" d="M96.9 15.975v22.95h-6.1l-.675-1.625a10.875 10.875 0 0 1-6.925 2.5 11.699 11.699 0 0 1-12.05-12.3A11.65 11.65 0 0 1 83.2 15.35c2.554-.01 5.03.874 7 2.5l.825-1.775 5.875-.1Zm-7.5 11.5a5.15 5.15 0 1 0-10.275 0 5.15 5.15 0 1 0 10.275 0Zm36.725-19.75V38.95h-5.85l-.75-1.7a10.549 10.549 0 0 1-6.925 2.5 11.702 11.702 0 0 1-12.1-12.25 11.699 11.699 0 0 1 12.1-12.25c2.013-.018 3.99.537 5.7 1.6V7.725h7.825ZM118.8 27.5a5.152 5.152 0 0 0-5.137-5.509 5.151 5.151 0 0 0-5.138 5.509 5.152 5.152 0 0 0 5.138 5.509A5.15 5.15 0 0 0 118.8 27.5Zm45.925-11.525v22.95h-6.1L158 37.3a10.823 10.823 0 0 1-6.925 2.5A11.677 11.677 0 0 1 139 27.5a11.61 11.61 0 0 1 .763-4.706 11.612 11.612 0 0 1 6.564-6.633 11.626 11.626 0 0 1 4.698-.811 10.87 10.87 0 0 1 7 2.5l.825-1.775 5.875-.1Zm-7.5 11.5a5.152 5.152 0 0 0-5.137-5.509 5.151 5.151 0 0 0-5.138 5.509 5.152 5.152 0 0 0 5.138 5.509 5.15 5.15 0 0 0 5.137-5.509Zm12.2 1.625V16h7.9v12.75c0 2.5 1.3 3.85 3.425 3.85s3.375-1.45 3.375-3.85V16h7.9v13.1c0 6.425-4.5 10.6-11.275 10.6s-11.325-4.175-11.325-10.6Zm42.225-13.2v7.225h-3.075c-2.8 0-3.975 1.225-3.975 4.15V38.95h-7.9V16h5.3l1.225 2.5a7.675 7.675 0 0 1 6.325-2.65l2.1.05ZM238 27.275a14.703 14.703 0 0 1-.15 2.075H220.7a4.476 4.476 0 0 0 4.8 4 4.628 4.628 0 0 0 4.15-2.15h7.85a12.497 12.497 0 0 1-13.868 8.866A12.5 12.5 0 0 1 213 27.5a12.5 12.5 0 1 1 25-.2v-.025ZM220.85 25h9.275a4.6 4.6 0 0 0-4.625-3.55 4.425 4.425 0 0 0-4.65 3.55Zm29.5 14.7c-6.25 0-10-3.3-10-8.275h7.5a2.347 2.347 0 0 0 1.638 2.415 2.35 2.35 0 0 0 1.037.085c1.15 0 2.25-.575 2.25-1.775s-1.725-1.7-3.925-2.05c-3.6-.625-8.35-1.7-8.35-7.275 0-4.6 3.925-7.5 9.8-7.5 5.875 0 9.65 3.125 9.725 7.775h-7.5c0-1.475-.975-2.15-2.5-2.15s-2.125.625-2.125 1.675 1.75 1.625 3.925 2c3.625.65 8.45 1.4 8.45 7.225 0 4.8-4.05 7.925-10.15 7.925l.225-.075ZM.5 0v50h50V0H.5Zm33.35 31.65a9.6 9.6 0 0 1-6.275 9 9.75 9.75 0 0 1-3.325.6 9.6 9.6 0 0 1-3.325-18.6 2.5 2.5 0 0 1 3.3 1.525A2.5 2.5 0 0 1 22.7 27.5a4.454 4.454 0 0 0 3.1 8.35 4.4 4.4 0 0 0 2.9-4.175v-13.7a4.1 4.1 0 0 0-8.2 0 2.5 2.5 0 0 1-5 0 9.225 9.225 0 0 1 18.45 0l-.1 13.675Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h260v50H0z" transform="translate(.5)"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
7
docs/src/assets/images/sponsors/nlnet.svg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"label": "Getting Started",
|
||||
"position": 2
|
||||
}
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Authentication & Authorization
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Rolloù an istañs
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
|
||||
| roll | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podkaster | General users of Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
|
||||
### Aotreoù war an istañs
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
|
||||
| aotre | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Gallout a ra enporzhiañ podkastoù. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
|
||||
| roll | description | permissions |
|
||||
| ---------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Merour·ez | Has complete control of podcast #{id}. | \* |
|
||||
| Embanner | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Aozer·ez | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Kouviad·ez | General contributor of the podcast #{id}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
|
||||
| aotre | description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------ |
|
||||
| view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| edit | Can edit podcast #{id}. |
|
||||
| delete | Can delete podcast #{id}. |
|
||||
| manage-import | Can synchronize imported podcast #{id}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-contributors | Can manage contributors of podcast #{id}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #{id}. |
|
||||
| manage-publications | Can publish podcast #{id}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
|
||||
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| episodes.create | Can create episodes for podcast #{id}. |
|
||||
| episodes.edit | Can edit podcast #{id}. |
|
||||
| episodes.delete | Can delete podcast #{id}. |
|
||||
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
|
||||
| episodes.manage-publications | Can publish podcast #{id}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
|
|
@ -1,300 +0,0 @@
|
|||
---
|
||||
sidebarDepth: 2
|
||||
---
|
||||
|
||||
# Donemat 👋
|
||||
|
||||
[![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars]
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<div class="flex items-center">
|
||||
<a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Staliañ<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a>
|
||||
</div>
|
||||
|
||||
## Perzhioù
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Arc'hantaouiñ :
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Perak Castopod ?
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Kod an dereadegezh
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-yassinedoghri" title="Maintenance">🚧</a> <a href="#content-yassinedoghri" title="Content">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Accessibility">️️️️♿️</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-yassinedoghri" title="Answering Questions">💬</a> <a href="#mentoring-yassinedoghri" title="Mentoring">🧑🏫</a> <a href="#infra-yassinedoghri" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-yassinedoghri" title="Project Management">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/benjamin"><img src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100" width="100px;" alt="Benjamin Bellamy"/><br /><sub><b>Benjamin Bellamy</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin" title="Reviewed Pull Requests">👀</a> <a href="#content-benjamin" title="Content">🖋</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-benjamin" title="Answering Questions">💬</a> <a href="#infra-benjamin" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.castopod.org/author/benjamin-bellamy/" title="Blogposts">📝</a> <a href="#projectManagement-benjamin" title="Project Management">📆</a> <a href="#talk-benjamin" title="Talks">📢</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ola Hneini"/><br /><sub><b>Ola Hneini</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola" title="Reviewed Pull Requests">👀</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="#maintenance-ola" title="Maintenance">🚧</a> <a href="#question-ola" title="Answering Questions">💬</a> <a href="#ideas-ola" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="#infra-rdelaage" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Bug reports">🐛</a> <a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Bug reports">🐛</a> <a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Bug reports">🐛</a> <a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/NeoluxConsulting"><img src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100" width="100px;" alt="Guy Martin"/><br /><sub><b>Guy Martin</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Darempred
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Ad Aures Logo" class="h-16" /></a>
|
||||
<a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="NLnet Logo" class="h-16" /></a>
|
||||
</div>
|
||||
|
||||
## Aotre
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
|
||||
https://img.shields.io/github/license/ad-aures/castopod?color=blue
|
||||
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
|
||||
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
https://img.shields.io/github/stars/ad-aures/castopod?style=social
|
||||
|
||||
[release]: https://code.castopod.org/adaures/castopod/-/releases
|
||||
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
|
||||
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
|
||||
[semantic-release]: https://github.com/semantic-release/semantic-release
|
||||
[discord]: https://castopod.org/discord
|
||||
[stars]: https://github.com/ad-aures/castopod/stargazers
|
||||
[crowdin]: https://translate.castopod.org/project/castopod
|
||||
|
|
@ -1,302 +0,0 @@
|
|||
---
|
||||
sidebarDepth: 2
|
||||
---
|
||||
|
||||
# Benvinguts 👋
|
||||
|
||||
[![release-badge]][release] [![license-badge]][license] [![contributions-badge]][contributions] [![semantic-release-badge]][semantic-release] [![crowdin-badge]][crowdin] [![discord-badge]][discord] [![stars-badge]][stars]
|
||||
|
||||
Castopod és una plataforma d'allotjament gratuïta i de codi obert creada per a
|
||||
podcasters que volen involucrar i interactuar amb el seu públic.
|
||||
|
||||
Castopod és fàcil d'instal·lar i s'ha creat amb
|
||||
[CodeIgniter4](https://codeigniter.com/), un marc PHP potent amb una empremta
|
||||
molt petita.
|
||||
|
||||
<div class="flex items-center">
|
||||
<a href="/getting-started/install" class="inline-flex items-center px-4 py-2 mx-auto font-semibold text-center text-white rounded-full shadow gap-x-1 bg-pine-500 hover:no-underline hover:bg-pine-600">Instal·lar<svg viewBox="0 0 24 24" width="1em" height="1em" class="text-xl text-pine-200"><path fill="currentColor" d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z"></path></svg></a>
|
||||
</div>
|
||||
|
||||
## Característiques
|
||||
|
||||
- 🌱 Gratis i de codi obert (llicència AGPL v3)
|
||||
- 🔐 Centrat en la sobirania de les dades: el vostre contingut, audiència
|
||||
i estadístiques us pertanyen, i només a vosaltres
|
||||
- 🪄 Funcions de podcasting 2.0: GUID, bloqueigos, transcripcions,
|
||||
finançament, capítols, geo-localització, persones, fragments d'àudio, …
|
||||
- 💬 Xarxa social integrada:
|
||||
- 🚀 Castopod forma part de Fediverse, una xarxa social descentralitzada
|
||||
- ❤️ Creeu publicacions, compartiu-les, afegiu-hi com a preferits i
|
||||
comenteu episodis
|
||||
- 📈 Estadístiques integrades:
|
||||
- ⚖️ Complint amb GDPR / CCPA / LGPD
|
||||
- 🪙 Mesura d'audiència segons l'estàndard IABv2
|
||||
- 🏡 Estadístiques locals, sense cap tercer implicat
|
||||
- 📢 Eines de màrqueting integrades:
|
||||
- ✅ Preparada per a SEO (metaetiquetes de gràfics oberts, JSON-LD, …)
|
||||
- 📱 PWA: instal·lable pels oients com a aplicació autònoma
|
||||
- 🎨 Colors del tema personalitzables
|
||||
- 🎬 Genereu videoclips d'episodis preparats per compartir
|
||||
- 🔉 Genera fragments d'àudio de cada episodi
|
||||
- ▶️ Reproductor incrustable, per incrustar els episodis a qualsevol
|
||||
lloc web
|
||||
- 💸 Monetització:
|
||||
- 🔗 Enllaços de finançament
|
||||
- 📲 Anuncis per escoltar-fent-clic
|
||||
- 🤝 Integració amb value4value i WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publiqueu els vostres episodis a tot arreu amb RSS:
|
||||
- 📱 A tots els directoris i aplicacions: Podcast Index, Apple Podcasts,
|
||||
Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Emeteu els vostres episodis a l'instant amb WebSub
|
||||
- 📥 Importació de podcasts: moveu el vostre podcast existent a Castopod
|
||||
- 📤 Traieu el vostre podcast fora de Castopod
|
||||
- 🔀 Multi-podcast: allotgeu tants programes com vulgueu en un mateix lloc
|
||||
- 👥 Multi-usuari: afegiu col·laboradors i definiu rols
|
||||
- 🌎 Suport i18n: traduït a l'anglès, català, espanyol, xinès, francès,
|
||||
polonès, alemany, portuguès brasiler ... i
|
||||
[més per venir](https://translate.castopod.org)!
|
||||
|
||||
## Motivació
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparació amb altres solucions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs altres plataformes de podcast
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod es pot auto-allotjar i és la única solució que us permet mantenir el
|
||||
control total sobre el que produïu. A més, com que és de codi obert, fins i
|
||||
tot podeu personalitzar-lo com vulgueu.
|
||||
|
||||
- Castopod és l'única solució que actualment integra tant una xarxa social
|
||||
descentralitzada amb ActivityPub com moltes de les funcions de podcasting 2.0,
|
||||
amb l'esperança de salvar la bretxa entre les dues.
|
||||
|
||||
## Col·laborar
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Codi de conducta
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Guia de col·laboració
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Col·laboradors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yassinedoghri"><img src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100" width="100px;" alt="Yassine Doghri"/><br /><sub><b>Yassine Doghri</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri" title="Reviewed Pull Requests">👀</a> <a href="#maintenance-yassinedoghri" title="Maintenance">🚧</a> <a href="#content-yassinedoghri" title="Content">🖋</a> <a href="#design-yassinedoghri" title="Design">🎨</a> <a href="#a11y-yassinedoghri" title="Accessibility">️️️️♿️</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-yassinedoghri" title="Answering Questions">💬</a> <a href="#mentoring-yassinedoghri" title="Mentoring">🧑🏫</a> <a href="#infra-yassinedoghri" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-yassinedoghri" title="Project Management">📆</a> <a href="https://blog.castopod.org/author/yassinedoghri/" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/benjamin"><img src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100" width="100px;" alt="Benjamin Bellamy"/><br /><sub><b>Benjamin Bellamy</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin" title="Reviewed Pull Requests">👀</a> <a href="#content-benjamin" title="Content">🖋</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-benjamin" title="Answering Questions">💬</a> <a href="#infra-benjamin" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.castopod.org/author/benjamin-bellamy/" title="Blogposts">📝</a> <a href="#projectManagement-benjamin" title="Project Management">📆</a> <a href="#talk-benjamin" title="Talks">📢</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ola-hn"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ola Hneini"/><br /><sub><b>Ola Hneini</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola" title="Reviewed Pull Requests">👀</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="#maintenance-ola" title="Maintenance">🚧</a> <a href="#question-ola" title="Answering Questions">💬</a> <a href="#ideas-ola" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mamot.fr/@rdelaage"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Romain de Laage"/><br /><sub><b>Romain de Laage</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="#infra-rdelaage" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Documentation">📖</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/lyonelbernard"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Lyonel Bernard"/><br /><sub><b>Lyonel Bernard</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel" title="Bug reports">🐛</a> <a href="#question-Lyonel" title="Answering Questions">💬</a> <a href="#audio-Lyonel" title="Audio">🔊</a> <a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.crypticchameleon.com/"><img src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100" width="100px;" alt="Christopher Lagonick-Weitzel"/><br /><sub><b>Christopher Lagonick-Weitzel</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83" title="Bug reports">🐛</a> <a href="#question-ctlw83" title="Answering Questions">💬</a> <a href="#audio-ctlw83" title="Audio">🔊</a> <a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ernestoacosta.me/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Ernesto Acosta"/><br /><sub><b>Ernesto Acosta</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame" title="Bug reports">🐛</a> <a href="#audio-ernestoacostame" title="Audio">🔊</a> <a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#question-ernestoacostame" title="Answering Questions">💬</a> <a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fedi.bzh/@ewen"><img src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100" width="100px;" alt="Ewen"/><br /><sub><b>Ewen</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-3wen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Behel"><img src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100" width="100px;" alt="Bastien Luneteau"/><br /><sub><b>Bastien Luneteau</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a> <a href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.cecillie.fr/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Cécile Ricordeau"/><br /><sub><b>Cécile Ricordeau</b></sub></a><br /><a href="#design-cecillie" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/PatrykMis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Miś"/><br /><sub><b>Patryk Miś</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/mspanc"><img src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100" width="100px;" alt="Marcin Lewandowski"/><br /><sub><b>Marcin Lewandowski</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc" title="Bug reports">🐛</a> <a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/SJanik"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sebastian Janik"/><br /><sub><b>Sebastian Janik</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/patryk"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Patryk Karczmarczyk"/><br /><sub><b>Patryk Karczmarczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/ddenis"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="denis d"/><br /><sub><b>denis d</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis" title="Bug reports">🐛</a> <a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/douglaskastle"><img src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100" width="100px;" alt="Douglas Kastle"/><br /><sub><b>Douglas Kastle</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle" title="Bug reports">🐛</a> <a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cExplorer"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="cExplorer"/><br /><sub><b>cExplorer</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer" title="Bug reports">🐛</a> <a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/imacrea"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="ImaCrea"/><br /><sub><b>ImaCrea</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea" title="Bug reports">🐛</a> <a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/jonas"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Jonas S"/><br /><sub><b>Jonas S</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/yannL"><img src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100" width="100px;" alt="LEFEBVRE Yann"/><br /><sub><b>LEFEBVRE Yann</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/spaetz"><img src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100" width="100px;" alt="Sebastian Späth"/><br /><sub><b>Sebastian Späth</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz" title="Bug reports">🐛</a> <a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/rocky"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="rocky III"/><br /><sub><b>rocky III</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/Regenpfeifer"><img src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100" width="100px;" alt="Hermann Josef Eckl"/><br /><sub><b>Hermann Josef Eckl</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer" title="Bug reports">🐛</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/cyrilledel"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Delhaye Cyrille"/><br /><sub><b>Delhaye Cyrille</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel" title="Bug reports">🐛</a> <a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/otetranome"><img src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100" width="100px;" alt="João Leandro"/><br /><sub><b>João Leandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a> <a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://achouvardas.eu/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Angelos Chouvardas"/><br /><sub><b>Angelos Chouvardas</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mastodon.fjerland.no/@eivind"><img src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100" width="100px;" alt="Eivind"/><br /><sub><b>Eivind</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/forght"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100" width="100px;" alt="forght"/><br /><sub><b>forght</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/glottis0q"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100" width="100px;" alt="glottis0q"/><br /><sub><b>glottis0q</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mstdn.fr/@ButterflyOfFire"><img src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100" width="100px;" alt="ButterflyOfFire"/><br /><sub><b>ButterflyOfFire</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lil5"><img src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100" width="100px;" alt="Lucian I. Last"/><br /><sub><b>Lucian I. Last</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/luuzviir"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100" width="100px;" alt="LuuzViir"/><br /><sub><b>LuuzViir</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/cthtc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100" width="100px;" alt="CTHTC"/><br /><sub><b>CTHTC</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/retrograde"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100" width="100px;" alt="Russian Retro"/><br /><sub><b>Russian Retro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/mareklach"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100" width="100px;" alt="Marek L'ach"/><br /><sub><b>Marek L'ach</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gunchleoc"><img src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100" width="100px;" alt="GunChleoc"/><br /><sub><b>GunChleoc</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/gabisnow"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100" width="100px;" alt="GabiSnow"/><br /><sub><b>GabiSnow</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/bendaha"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100" width="100px;" alt="bendaha"/><br /><sub><b>bendaha</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/samuelroland"><img src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100" width="100px;" alt="Samuel Roland"/><br /><sub><b>Samuel Roland</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://dimitriregnier.net/"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Dimitri Regnier"/><br /><sub><b>Dimitri Regnier</b></sub></a><br /><a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://im.irithys.com/@thy"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100" width="100px;" alt="irithys"/><br /><sub><b>irithys</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/caos30"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Sergi"/><br /><sub><b>Sergi</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/xosem"><img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100" width="100px;" alt="ghose (XoseM)"/><br /><sub><b>ghose (XoseM)</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/basen1982"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="Andreas Olsson"/><br /><sub><b>Andreas Olsson</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/leonfrom"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="leonfrom"/><br /><sub><b>leonfrom</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/agentcobra57"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="agentcobra"/><br /><sub><b>agentcobra</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/alephoto85"><img src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100" width="100px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://crowdin.com/profile/liimee"><img src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100" width="100px;" alt="liimee"/><br /><sub><b>liimee</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmedsabouni"><img src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100" width="100px;" alt="Ahmed Sabouni"/><br /><sub><b>Ahmed Sabouni</b></sub></a><br /><a href="https://translate.castopod.org" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KrzysztofDomanczyk"><img src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100" width="100px;" alt="KrzysztofDomanczyk"/><br /><sub><b>KrzysztofDomanczyk</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://code.castopod.org/NeoluxConsulting"><img src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100" width="100px;" alt="Guy Martin"/><br /><sub><b>Guy Martin</b></sub></a><br /><a href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting" title="Bug reports">🐛</a> <a href="https://code.castopod.org/adaures/castopod/commits/master" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contacte
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (per a la interacció directa amb
|
||||
desenvolupadors i la comunitat)
|
||||
- [Seguiment d'incidències](https://code.castopod.org/adaures/castopod/-/issues)
|
||||
(per a sol·licituds de noves funcionalitats i informes d'errors)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (instància de Mastodon)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Patrocinadors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/adaures.svg" alt="Ad Aures Logo" class="h-16" /></a>
|
||||
<a href="https://nlnet.nl/project/Castopod/" target="_blank" rel="noopener noreferrer"><img src="/images/sponsors/nlnet.svg" alt="NLnet Logo" class="h-16" /></a>
|
||||
</div>
|
||||
|
||||
## Llicència
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
|
||||
https://img.shields.io/github/license/ad-aures/castopod?color=blue
|
||||
https://img.shields.io/badge/contributions-welcome-brightgreen.svg
|
||||
https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
https://img.shields.io/github/stars/ad-aures/castopod?style=social
|
||||
|
||||
[release]: https://code.castopod.org/adaures/castopod/-/releases
|
||||
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
|
||||
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
|
||||
[semantic-release]: https://github.com/semantic-release/semantic-release
|
||||
[discord]: https://castopod.org/discord
|
||||
[stars]: https://github.com/ad-aures/castopod/stargazers
|
||||
[crowdin]: https://translate.castopod.org/project/castopod
|
||||
7
docs/src/content/config.ts
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import { defineCollection } from "astro:content";
|
||||
import { docsSchema, i18nSchema } from "@astrojs/starlight/schema";
|
||||
|
||||
export const collections = {
|
||||
docs: defineCollection({ schema: docsSchema() }),
|
||||
i18n: defineCollection({ type: "data", schema: i18nSchema() }),
|
||||
};
|
||||
85
docs/src/content/docs/ar/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Autenticação & Autorização
|
||||
---
|
||||
|
||||
Castopod lida com autenticação e autorização usando `codeigniter/shield`
|
||||
juntamente com regras personalizadas. Papéis e permissões são definidos em dois
|
||||
níveis:
|
||||
|
||||
1. [toda instância](#1-instance-wide-roles-and-permissions)
|
||||
2. [por podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## Papéis e permissões para toda a instância
|
||||
|
||||
### Cargos de instância
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Permissões da instância
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Por funções de podcast e permissões
|
||||
|
||||
### Por cargos de podcast
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Por permissões de podcast
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Inštalácia
|
||||
sidebarDepth: 3
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
# How to install Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Začať podcastovať!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -2,8 +2,6 @@
|
|||
title: Zabezpečenie
|
||||
---
|
||||
|
||||
# Security concerns
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1381
docs/src/content/docs/ar/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Donemat 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Staliañ" href="./getting-started/install" />
|
||||
|
||||
## Perzhioù
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Arc'hantaouiñ :
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Perak Castopod ?
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Kod an dereadegezh
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Darempred
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## Aotre
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/br/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| --------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Dreistmerour·ez | Ur c'hontroll klok en deus war Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Merour·ez | Merañ a ra endalc'had Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podkaster | Implijerien·ezed kustum Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| admin.access | Gallout a ra gwelet taolenn-stur Castopod. |
|
||||
| admin.settings | Gallout a ra gwelet arventennoù Castopod. |
|
||||
| users.manage | Gallout a ra ober war-dro implijerien·ezed Castopod. |
|
||||
| persons.manage | Gallout a ra merañ an emellerien·ezed. |
|
||||
| pages.manage | Gallout a ra merañ ar pajennoù. |
|
||||
| podcasts.view | Gallout a ra gwelet an holl bodkastoù. |
|
||||
| podcasts.create | Gallout a ra krouiñ podkastoù nevez. |
|
||||
| podcasts.import | Gallout a ra enporzhiañ podkastoù. |
|
||||
| fediverse.manage-blocks | Gallout a ra mirout aktourien·ezed pe domanioù ar Fediverse ouzh kaout darempredoù gant Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ---------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Merour·ez | Ur c'hontroll klok en deus war ar podkast #\{id\}. | \* |
|
||||
| Embanner | Merañ a ra endalc'had hag embannadurioù ar podkast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Aozer·ez | Merañ a ra endalc'had ar podkast #\{id\} met ne c'hall ket embann anezho. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Kouviad·ez | Perzhiad·ez eus ar podkast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| view | Gallout a ra gwelet taolenn-stur ha muzulioù heklev ar podkast #\{id\}. |
|
||||
| edit | Gallout a ra kemmañ ar podkast #\{id\}. |
|
||||
| delete | Gallout a ra lemel ar podkast #\{id\}. |
|
||||
| manage-import | Gallout a ra sinkronekaat ar podkast enporzhiet #\{id\}. |
|
||||
| manage-persons | Gallout a ra merañ koumanantoù ar podkast #\{id\}. |
|
||||
| manage-subscriptions | Gallout a ra merañ koumanantoù ar podkast #\{id\}. |
|
||||
| manage-contributors | Gallout a ra merañ perzhidi ha perzhiadezed ar podkast #\{id\}. |
|
||||
| manage-platforms | Gallout a ra ouzhpennañ pe lemel liammoù etrezek savennoù diavaez evit ar podkast #\{id\}. |
|
||||
| manage-publications | Gallout a ra embann ar podkast #\{id\}. |
|
||||
| manage-notifications | Gallout a ra gwelet kemennoù ar podkast #\{id\} ha lakaat anezho evel lennet. |
|
||||
| interact-as | Gallout a ra ober traoù gant identelezh ar podkast #\{id\}: ouzhpennañ ur gemennadenn d'ar re garetañ, rannañ anezhi pe respont dezhi. |
|
||||
| episodes.view | Gallout a ra gwelet taolennoù-stur ha muzulioù heklev rannoù ar podkast #\{id\}. |
|
||||
| episodes.create | Gallout a ra krouiñ rannoù evit podkast #\{id\}. |
|
||||
| episodes.edit | Gallout a ra kemmañ rannoù ar podkast #\{id\}. |
|
||||
| episodes.delete | Gallout a ra lemel rannoù ar podkast #\{id\}. |
|
||||
| episodes.manage-persons | Gallout a ra merañ emellerien·ezed ar podkast #\{id\}. |
|
||||
| episodes.manage-clips | Gallout a ra merañ klipoù video pe tennadoù son ar podkast #\{id\}. |
|
||||
| episodes.manage-publications | Gallout a ra embann pe diembann rannoù ha kemennadennoù ar podkast #\{id\}. |
|
||||
| episodes.manage-comments | Gallout a ra krouiñ/lemel evezhiadennoù evit rannoù ar podkast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Staliañ
|
||||
sidebarDepth: 3
|
||||
title: Penaos staliañ Castopod?
|
||||
---
|
||||
|
||||
# Penaos staliañ Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Kregiñ da bodkastiñ!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Bezbednost
|
||||
title: Bezbednosni interesi
|
||||
---
|
||||
|
||||
# Bezbednosni interesi
|
||||
|
||||
Castopod je napravljen na [CodeIgniter4](https://codeigniter.com/), PHP okviru
|
||||
koji podstiče
|
||||
[dobre bezbednosne prakse](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1381
docs/src/content/docs/br/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivácia
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/ca/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Autenticació i Autorització
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------ |
|
||||
| Super administrador | Té control complet sobre Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Administrador | Administra el contingut de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | Usos generals de Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | -------------------------------------------------------------------- |
|
||||
| admin.access | Pot accedir a l'àrea d'administració de Castopod. |
|
||||
| admin.settings | Pot accedir a la configuració de Castopod. |
|
||||
| users.manage | Pot administrar els usuaris de Castopod. |
|
||||
| persons.manage | Pot administrar persones. |
|
||||
| pages.manage | Pot administrar pàgines. |
|
||||
| podcasts.view | Pot veure els pòdcasts. |
|
||||
| podcasts.create | Pot crear nous pòdcasts. |
|
||||
| podcasts.import | Pot importar pòdcasts. |
|
||||
| fediverse.manage-blocks | Pot evitar que actors/dominis del fedivers interactuen amb Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Administrador | Té control complet del pòdcast #\{id\}. | \* |
|
||||
| Editor | Administra els continguts i la publicació del pòdcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Autor | Administra el contingut del podcast #\{id\} però no el pot publicar. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Convidat | Col·laborador general del podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
||||
| view | Pot veure el tauler i les estadístiques del podcast #\{id\}. |
|
||||
| edit | Pot editar el podcast #\{id\}. |
|
||||
| delete | Pot suprimir el podcast #\{id\}. |
|
||||
| manage-import | Pot sincronitzar el podcast importat #\{id\}. |
|
||||
| manage-persons | Pot gestionar les subscripcions del podcast #\{id\}. |
|
||||
| manage-subscriptions | Pot gestionar les subscripcions del podcast #\{id\}. |
|
||||
| manage-contributors | Pot gestionar els col·laboradors del podcast #\{id\}. |
|
||||
| manage-platforms | Pot establir/eliminar enllaços de plataforma del podcast #\{id\}. |
|
||||
| manage-publications | Pot publicar el podcast #\{id\}. |
|
||||
| manage-notifications | Pot veure i marcar les notificacions com a llegides per al podcast #\{id\}. |
|
||||
| interact-as | Pot interactuar en nom del podcast #\{id\} per marcar les publicacions com a preferides, compartir-les o respondre-hi. |
|
||||
| episodes.view | Pot veure taulers i estadístiques dels episodis del podcast #\{id\}. |
|
||||
| episodes.create | Pot crear episodis per al podcast #\{id\}. |
|
||||
| episodes.edit | Pot editar episodis del podcast #\{id\}. |
|
||||
| episodes.delete | Pot suprimir episodis del podcast #\{id\}. |
|
||||
| episodes.manage-persons | Pot gestionar persones d'episodi del podcast #\{id\}. |
|
||||
| episodes.manage-clips | Pot gestionar clips de vídeo o fragments de so del pòdcast #\{id\}. |
|
||||
| episodes.manage-publications | Pot publicar/anul·lar la publicació d'episodis i publicacions del pòdcast #\{id\}. |
|
||||
| episodes.manage-comments | Pot crear/eliminar comentaris d'episodi del pòdcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,16 +1,13 @@
|
|||
---
|
||||
title: Imatges Docker oficials
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Imatges Docker oficials
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [** code>castopod/app</code>**](https://hub.docker.com/r/castopod/app): el
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el
|
||||
paquet incloent Castopod i totes les dependències
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una
|
||||
configuració de Nginx per a Castopod
|
||||
|
|
@ -1,22 +1,21 @@
|
|||
---
|
||||
title: Instal·lació
|
||||
sidebarDepth: 3
|
||||
title: Com instal·lar Castopod?
|
||||
---
|
||||
|
||||
# Com instal·lar Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod va ser pensat per ser fàcil d'instal·lar. Ja sigui utilitzant un
|
||||
allotjament dedicat o un compartit, podeu instal·lar-lo a la majoria de
|
||||
servidors web compatibles amb PHP-MySQL.
|
||||
|
||||
::: tip Nota
|
||||
<Aside>
|
||||
|
||||
Hem publicat imatges oficials de Docker per a Castopod!
|
||||
|
||||
Si preferiu utilitzar Docker, podeu ometre això i anar directament a la
|
||||
[documentació de Docker](./docker.md) per a Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requisits
|
||||
|
||||
|
|
@ -48,14 +47,6 @@ PHP:
|
|||
|
||||
> Us recomanem que utilitzeu [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Avís
|
||||
|
||||
Castopod només funciona amb bases de dades compatibles amb MySQL 5.7 o superior.
|
||||
No funcionarà amb l'anterior MySQL v5.6, per exemple, ja que el seu final de
|
||||
vida va ser el 5 de febrer de 2021.
|
||||
|
||||
:::
|
||||
|
||||
Necessitareu el nom d'amfitrió del servidor (hostname), el nom de la base de
|
||||
dades, el nom d'usuari i la contrasenya per completar el procés d'instal·lació.
|
||||
Si no els teniu, poseu-vos en contacte amb l'administrador del vostre servidor.
|
||||
|
|
@ -118,13 +109,13 @@ o superior. Cal instal·lar les següents extensions:
|
|||
2. Seguiu les instruccions a la vostra pantalla.
|
||||
3. Comenceu a fer podcasts!
|
||||
|
||||
::: info Nota
|
||||
<Aside>
|
||||
|
||||
L'script d'instal·lació escriu un fitxer `.env` a l'arrel del paquet. If you
|
||||
cannot go through the install wizard, you can create and edit the `.env` file
|
||||
manually based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -229,13 +220,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Instal·lar Castopod amb YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Instal·lar Castopod amb YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Repositori
|
||||
a Github</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Repositori a Github
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Seguretat
|
||||
title: Detalls de seguretat
|
||||
---
|
||||
|
||||
# Detalls de seguretat
|
||||
|
||||
Castopod està fet amb [CodeIgniter4](https://codeigniter.com/), un framework PHP
|
||||
que fomenta les
|
||||
[bones pràctiques de seguretat](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Actualitzar
|
||||
sidebarDepth: 3
|
||||
title: Com actualitzar Castopod?
|
||||
---
|
||||
|
||||
# Com actualitzar Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Després d'instal·lar Castopod, és possible que vulgueu actualitzar la vostra
|
||||
instància a la darrera versió per gaudir de les últimes funcions ✨, correccions
|
||||
|
|
@ -36,12 +35,12 @@ d'errors 🐛 i millores de rendiment ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ d'errors 🐛 i millores de rendiment ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1383
docs/src/content/docs/ca/index.mdx
Normal file
|
|
@ -0,0 +1,1383 @@
|
|||
---
|
||||
title: Benvinguts 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod és una plataforma d'allotjament gratuïta i de codi obert creada per a
|
||||
podcasters que volen involucrar i interactuar amb el seu públic.
|
||||
|
||||
Castopod és fàcil d'instal·lar i s'ha creat amb
|
||||
[CodeIgniter4](https://codeigniter.com/), un marc PHP potent amb una empremta
|
||||
molt petita.
|
||||
|
||||
<LinkCard title="Instal·lar" href="./getting-started/install" />
|
||||
|
||||
## Característiques
|
||||
|
||||
- 🌱 Gratis i de codi obert (llicència AGPL v3)
|
||||
- 🔐 Centrat en la sobirania de les dades: el vostre contingut, audiència
|
||||
i estadístiques us pertanyen, i només a vosaltres
|
||||
- 🪄 Funcions de podcasting 2.0: GUID, bloqueigos, transcripcions,
|
||||
finançament, capítols, geo-localització, persones, fragments d'àudio, …
|
||||
- 💬 Xarxa social integrada:
|
||||
- 🚀 Castopod forma part de Fediverse, una xarxa social descentralitzada
|
||||
- ❤️ Creeu publicacions, compartiu-les, afegiu-hi com a preferits i
|
||||
comenteu episodis
|
||||
- 📈 Estadístiques integrades:
|
||||
- ⚖️ Complint amb GDPR / CCPA / LGPD
|
||||
- 🪙 Mesura d'audiència segons l'estàndard IABv2
|
||||
- 🏡 Estadístiques locals, sense cap tercer implicat
|
||||
- 📢 Eines de màrqueting integrades:
|
||||
- ✅ Preparada per a SEO (metaetiquetes de gràfics oberts, JSON-LD, …)
|
||||
- 📱 PWA: instal·lable pels oients com a aplicació autònoma
|
||||
- 🎨 Colors del tema personalitzables
|
||||
- 🎬 Genereu videoclips d'episodis preparats per compartir
|
||||
- 🔉 Genera fragments d'àudio de cada episodi
|
||||
- ▶️ Reproductor incrustable, per incrustar els episodis a qualsevol
|
||||
lloc web
|
||||
- 💸 Monetització:
|
||||
- 🔗 Enllaços de finançament
|
||||
- 📲 Anuncis per escoltar-fent-clic
|
||||
- 🤝 Integració amb value4value i WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publiqueu els vostres episodis a tot arreu amb RSS:
|
||||
- 📱 A tots els directoris i aplicacions: Podcast Index, Apple Podcasts,
|
||||
Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Emeteu els vostres episodis a l'instant amb WebSub
|
||||
- 📥 Importació de podcasts: moveu el vostre podcast existent a Castopod
|
||||
- 📤 Traieu el vostre podcast fora de Castopod
|
||||
- 🔀 Multi-podcast: allotgeu tants programes com vulgueu en un mateix lloc
|
||||
- 👥 Multi-usuari: afegiu col·laboradors i definiu rols
|
||||
- 🌎 Suport i18n: traduït a l'anglès, català, espanyol, xinès, francès,
|
||||
polonès, alemany, portuguès brasiler ... i
|
||||
[més per venir](https://translate.castopod.org)!
|
||||
|
||||
## Motivació
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparació amb altres solucions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs altres plataformes de podcast
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod es pot auto-allotjar i és la única solució que us permet mantenir el
|
||||
control total sobre el que produïu. A més, com que és de codi obert, fins i
|
||||
tot podeu personalitzar-lo com vulgueu.
|
||||
|
||||
- Castopod és l'única solució que actualment integra tant una xarxa social
|
||||
descentralitzada amb ActivityPub com moltes de les funcions de podcasting 2.0,
|
||||
amb l'esperança de salvar la bretxa entre les dues.
|
||||
|
||||
## Col·laborar
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Codi de conducta
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Guia de col·laboració
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Col·laboradors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contacte
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (per a la interacció directa amb
|
||||
desenvolupadors i la comunitat)
|
||||
- [Seguiment d'incidències](https://code.castopod.org/adaures/castopod/-/issues)
|
||||
(per a sol·licituds de noves funcionalitats i informes d'errors)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (instància de Mastodon)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Patrocinadors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## Llicència
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/da/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Rolloù an istañs
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Aotreoù war an istañs
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Zvanične Docker slike
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Zvanične Docker slike
|
||||
|
||||
Castopod gura 3 Docker slike u Docker Hub tokom njegovog automatizovanog procesa
|
||||
izrade:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
# How to install Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Security
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
# Ar surentez
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
108
docs/src/content/docs/da/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
title: Ako aktualizovať Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
improvements ⚡.
|
||||
|
||||
## Update instructions
|
||||
|
||||
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
|
||||
database.
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. On your server:
|
||||
|
||||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
> Coming soon... 👀
|
||||
|
||||
## Frequently asked questions (FAQ)
|
||||
|
||||
### Where can I find my Castopod version?
|
||||
|
||||
Go to your Castopod admin panel, the version is displayed on the bottom left
|
||||
corner.
|
||||
|
||||
Alternatively, you can find the version in the `app > Config > Constants.php`
|
||||
file.
|
||||
|
||||
### I haven't updated my instance in a long time… What should I do?
|
||||
|
||||
No problem! Just get the latest release as described above. Only, when going
|
||||
through the release instructions (4), perform them sequentially, from the oldest
|
||||
to the newest.
|
||||
|
||||
> You may want to backup your instance depending on how long you haven't updated
|
||||
> Castopod.
|
||||
|
||||
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
|
||||
`v1.0.0-beta.1`:
|
||||
|
||||
0. (highly recommended) Make a backup of your files and database.
|
||||
|
||||
1. Download the latest release, overwrite your files whilst keeping `.env` and
|
||||
`public/media`.
|
||||
|
||||
2. Go through each release update instructions sequentially (from oldest to
|
||||
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
|
||||
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
|
||||
|
||||
3. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
### Should I make a backup before updating?
|
||||
|
||||
We advise you do, so you don't lose everything if anything goes wrong!
|
||||
|
||||
More generally, we advise you make regular backups of your Castopod files and
|
||||
database to prevent you from losing it all…
|
||||
1383
docs/src/content/docs/da/index.mdx
Normal file
|
|
@ -0,0 +1,1383 @@
|
|||
---
|
||||
title: Dobrodošli 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod je besplatna platforma otvorenog koda napravljena za podkastere koji
|
||||
žele interakciju sa svojom publikom.
|
||||
|
||||
Castopod se lako instalira i napravljen je na
|
||||
[CodeIgniter4](https://codeigniter.com/), moćnom PHP okviru sa jako malim
|
||||
otiskom (footprint).
|
||||
|
||||
<LinkCard title="Instaliraj" href="./getting-started/install" />
|
||||
|
||||
## Funkcionalnosti
|
||||
|
||||
- 🌱 Besplatan i otvorenog koda (AGPL v3 License)
|
||||
- 🔐 Fokusiran an suverenitet podataka: vaš sadržaj, publika i analitika pripada
|
||||
vama i samo vama
|
||||
- 🪄 Podkasting 2.0 funkcionalnosti: GUID, zaključan, transkripti,
|
||||
podrška, poglavlja, lokacija, posobe, zvučni isečci, …
|
||||
- 💬 Ugrađena društvena mreža:
|
||||
- 🚀 Castopod je deo Fediversa, decentralizovane društvene mreže
|
||||
- ❤️ Napravite objave, delite, dodajte u omiljene i komentarišite
|
||||
epizode
|
||||
- 📈 Ugrađena analitika:
|
||||
- ⚖️ U skladu sa GDPR / CCPA / LGPD
|
||||
- 🪙 Merenje publike putem IABv2 standarda
|
||||
- 🏡 Analitika na licu mesta, bez uključenosti trećih strana
|
||||
- 📢 Ugrađeni marketinški alati:
|
||||
- ✅ SEO spremno (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: instalirajte kao samostojeću aplikaciju
|
||||
- 🎨 Prilagodljive boje teme
|
||||
- 🎬 Napravite video isečke iz epizoda koji su spremni za deljenje
|
||||
- 🔉 Napravite audio isečke
|
||||
- ▶️ Plejer koji možete koristiti na svom sajtu (embed)
|
||||
- 💸 Monetizacija:
|
||||
- 🔗 Linkovi za podršku publike
|
||||
- 📲 Slušaj i klikni reklame
|
||||
- 🤝 value4value / Veb Monetizacija
|
||||
- 💎 Premijum podkasti
|
||||
- 📡 Objavite svoje epizode svugde uz RSS:
|
||||
- 📱 Na svim agregatorima i aplikacijama: Podcast Index, Apple Podcasts,
|
||||
Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Emitujte svoje epizode instant uz WebSub
|
||||
- 📥 Uvoz podkasta: prebacite svoj postojeći podkast na Castopod
|
||||
- 📤 Prebacite svoj podkast sa Castopod-a
|
||||
- 🔀 Mreža: hostujte koliko god želite podkasta
|
||||
- 👥 Više korisnika: dodajte saradnike i odredite njihove uloge
|
||||
- 🌎 i18n podrška: prevedeno na engleski, francuski, poljski, nemački,
|
||||
brazilski portugalski, španski…
|
||||
[još jezika uskoro](https://translate.castopod.org)!
|
||||
|
||||
## Motivacija
|
||||
|
||||
Ekosistem podcasta je po prirodi decentralizovan: možete kreirati svoj podkast
|
||||
kao RSS datoteku, objavite je na vebu i deliti svuda na mreži.
|
||||
|
||||
To je zapravo jedan od retkih medija koji je ostao decentralizovan ovako dugo.
|
||||
|
||||
Kako se upotreba razvija, sve više ljudi ulazi u podkaste: ili kao kreatori koji
|
||||
pronalaze nove načine da podele svoje ideje ili kao slušaoci u potrazi za boljim
|
||||
sadržajem.
|
||||
|
||||
Kako podkasting postaje sve više korišćen, neke kompanije pokušavaju da ga
|
||||
promene ka kontrolisanijem i centralizovanijem mediju.
|
||||
|
||||
Castopod je stvoren u nastojanju da pruži otvorenu i održivu alternativu za
|
||||
hostovanje vaših podkasta, promovišući decentralizaciju kako bi se osiguralo da
|
||||
podkasterska kreativnost može da se izrazi.
|
||||
|
||||
Ovaj projekat gura zajednica otvorenog koda, ponajviše
|
||||
[Fedivers](https://fediverse.party/en/fediverse/) i
|
||||
[Podcasting 2.0](https://podcastindex.org/) pokreti.
|
||||
|
||||
## Poređenje sa drugim rešenjima
|
||||
|
||||
Verujemo da jedno rešenje nije dobro za sve, već da sve zavisi od vaših potreba.
|
||||
Tako da evo poređenja sa drugim alatima kako bi ste mogli da procenite da li je
|
||||
Castopod prava stvar za vas.
|
||||
|
||||
### Castopod protiv Wordpress-a
|
||||
|
||||
Castopod je često nazivan "Wordpress-om za podkaste" zbog sličnosti koje deli sa
|
||||
ovom ploatformom. U neku ruku ovo je tačno. I zapravo, Castopod bio je u velikoj
|
||||
meri inspirisan Wordpress ekosistemom, videvši lakoću usvajanja od zajednice i
|
||||
broja veb lokacija koje rade na njemu.
|
||||
|
||||
Isto kao i Wordpress, Castopod je besplatan i otvorenog koda, napravljen
|
||||
koristeći PHP i MySQL baze podataka i spakovan na način koji vam omogućava
|
||||
jednostavnu instalaciju na većini veb servera.
|
||||
|
||||
Wordpress je odličan način na napravite veb stranicu i upotpunite je dodatcima
|
||||
kako bi dobili ono što želite. To je potpuno razvijen CMS koji vam pomaže da
|
||||
dobijete bilo koju vrstu veb stranica na mreži.
|
||||
|
||||
S druge strane, Castopod treba da odgovori na posebne potrebe podkastera,
|
||||
fokusirajući se na podkasting, i ništa drugo. Nisu vam potrebni nikakvi dodatci
|
||||
kako bi ste krenuli na svoje podkastersko putovanje.
|
||||
|
||||
Ovo omogućava optimizaciju procesa specifičnih za podcasting: u rasponu od
|
||||
kreiranja vaših podkasta i objavljivanja novih epizoda sve do emitovanja,
|
||||
marketinga i analitike.
|
||||
|
||||
Konačno, u zavisnosti od vaših potreba, Wordpress i Castopod mogu čak i da
|
||||
funkcionišu zajedno jer dele iste zahteve!
|
||||
|
||||
### Castopod protiv Funkwhale-a
|
||||
|
||||
Funkwhale je moderan besplatni muzički server otvorenog koda koji se samostalno
|
||||
hostuje. Kao i Castopod, Funkwhale je deo Fedivers-a, decentralizovane društvene
|
||||
mreže što omogućava kompatibilnost između njih.
|
||||
|
||||
Funkwhale je u početku napravljen oko muzike. Kasnije, kako je projekat
|
||||
napredovao, dodata je opcija hostovanja podkasta.
|
||||
|
||||
Za razliku od Funkwhale-a, Castopod je dizajniran i napravljen isključivo oko
|
||||
podkasta. Ovo omogućava lakšu implementaciju funkcionalnosti koje se odnose na
|
||||
podkast ekosistem, kao što su podkasting 2.0 alati (transkripti, poglavlja,
|
||||
lokacije, osobe, ...).
|
||||
|
||||
Tako da bi ste verovatno trebali da koristite Funkwhale ukoliko želite da
|
||||
hostujete svoju muziku a Castopod ukoliko želite da hostujete svoje podkaste.
|
||||
|
||||
### Castopod protiv drugih podkast hosting-a
|
||||
|
||||
Postoji mnogo različitih rešenja za hostovanje vaših podkasta, neka od njih su
|
||||
stvarno fantastična i [ dosta njih](https://podcastindex.org/apps) se
|
||||
priključuje Podcasting 2.0 trendu, isto kao i Castopod!
|
||||
|
||||
Svako od ovih rešenja se razlikuje jedno od drugog, možete ih uporediti sa
|
||||
[listom funkcionalnosti](#features).
|
||||
|
||||
Imajući to u vidu, postoje dve glavne razlike u odnosu na druga rešenja za
|
||||
podkasting:
|
||||
|
||||
- Castopod može biti samostalno hostovan i jedino je rešenje koje vam omogućava
|
||||
da zadržite punu kontrolu nad onim što proizvodite. Takođe, pošto je otvorenog
|
||||
koda, možete ga čak prilagoditi kako želite.
|
||||
|
||||
- Castopod je jedino rešenje koje trenutno uklapa decentralizovanu društvenu
|
||||
mrežu sa ActivityPub-om kao i mnoge funkcionalnosti podkasting-a 2.0, nadajući
|
||||
se da će ih tako približiti.
|
||||
|
||||
## Doprinos
|
||||
|
||||
Volite Catsopod i voleli bi ste da pomognete? Pogledajte dokumentaciju koja
|
||||
sledi kako bi ste počeli.
|
||||
|
||||
### Kodeks ponašanja
|
||||
|
||||
Castopod je usvojio Kodeks ponašanja kojeg očekujemo da se učesnici u projektu
|
||||
pridržavaju. Molimo da pročitate
|
||||
[Uputstvo Kodeksa ponašanja](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
kako bi ste razumeli šta hoće a šta neće biti tolerisano.
|
||||
|
||||
### Vodič za doprinos
|
||||
|
||||
Pročitajte naše [uputstvo za doprinos](../contributing/guidelines.md) kako bi
|
||||
ste bolje razumeli naš proces razvoja, kako da predložite popravke bagova i
|
||||
unapređenja i kako da napravite i testirate svoje promene na Castopod-u.
|
||||
|
||||
## Saradnici ✨
|
||||
|
||||
Veliko hvala ovim divnim ljudima
|
||||
([ključ emotikona](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
Ovaj projekat prati specifikaciju
|
||||
[svih saradnika](https://github.com/all-contributors/all-contributors).
|
||||
Doprinosi bilo koje vrste su dobrodošli!
|
||||
|
||||
## Kontakt
|
||||
|
||||
Možete nas kontaktirati za pomoć ili postaviti bilo koje pitanje koje imate na:
|
||||
|
||||
- [Discord-u](https://castopod.org/discord) (za direktnu interakciju sa
|
||||
programerima i zajednicom)
|
||||
- [Listi pitanja](https://code.castopod.org/adaures/castopod/-/issues) (za
|
||||
zahteve za funkcionalnostima i prijavu bagova)
|
||||
|
||||
Takođe, možete nas pratiti na društvenim mrežama kako bi ste dobili najnovije
|
||||
vesti o Castopod-u:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (instanca Mastodon-a)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponzori
|
||||
|
||||
Tekući razvoj Castopod-a je omogućen uz podršku vas koji nas podržavate. Ukoliko
|
||||
želite da pomognete, razmislite o
|
||||
[sponzorisanju razvoja Castopod-a](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## Licenca
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Autorska prava © 2020-danas, [Ad Aures](https://adaures.com/).
|
||||
85
docs/src/content/docs/de/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Authentifizierung & Autorisierung
|
||||
---
|
||||
|
||||
Castopod behandelt Authentifizierung und Autorisierung mit `codeigniter/shield`
|
||||
kombiniert mit eigenen Regeln. Rollen und Berechtigungen sind auf zwei Ebenen
|
||||
definiert:
|
||||
|
||||
1. [instanzweit](#1-instance-wide-roles-and-permissions)
|
||||
2. [je Podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instanzweite Rollen und Berechtigungen
|
||||
|
||||
### Instanz Rollen
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super-Administrator | Hat die vollständige Kontrolle über Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Verwaltet Castopods Inhalte. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | Allgemeine Benutzer von Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instanz Berechtigungen
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ---------------------------------------------------------------------------- |
|
||||
| admin.access | Kann auf den Admin-Bereich von Castopod zugreifen. |
|
||||
| admin.settings | Kann auf die Einstellungen von Castopod zugreifen. |
|
||||
| users.manage | Kann Castopod-Benutzer verwalten. |
|
||||
| persons.manage | Kann Mitwirkende verwalten. |
|
||||
| pages.manage | Kann Seiten verwalten. |
|
||||
| podcasts.view | Kann alle Podcasts einsehen. |
|
||||
| podcasts.create | Kann neue Podcasts erstellen. |
|
||||
| podcasts.import | Kann Podcasts importieren. |
|
||||
| fediverse.manage-blocks | Kann föderierte Nutzer/Domains davon abhalten, mit Castopod zu interagieren. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Pro Podcast Rollen und Berechtigungen
|
||||
|
||||
### Pro Podcast Rollen
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Administrator | Hat die vollständige Kontrolle über Podcast #\{id\}. | \* |
|
||||
| Editor | Verwaltet Inhalte und Veröffentlichungen von Podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Autor | Verwaltet Inhalte von Podcast #\{id\}, kann diese aber nicht veröffentlichen. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Gast | Allgemeiner Mitwirkender des Podcasts #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Pro Podcast Berechtigung
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| view | Kann das Dashboard und Analysen des Podcasts #\{id\} einsehen. |
|
||||
| edit | Kann Podcast #\{id\} bearbeiten. |
|
||||
| delete | Kann Podcast #\{id\} löschen. |
|
||||
| manage-import | Kann den importierten Podcast #\{id\} synchronisieren. |
|
||||
| manage-persons | Kann Abonnements des Podcasts #\{id\} verwalten. |
|
||||
| manage-subscriptions | Kann Abonnements des Podcasts #\{id\} verwalten. |
|
||||
| manage-contributors | Kann Mitwirkende des Podcasts #\{id\} verwalten. |
|
||||
| manage-platforms | Kann Plattform-Links des Podcasts #\{id\} verwalten. |
|
||||
| manage-publications | Kann Podcast #\{id\} veröffentlichen. |
|
||||
| manage-notifications | Kann Benachrichtigungen des Podcasts #\{id\} einsehen und als gelesen markieren. |
|
||||
| interact-as | Kann als Podcast #\{id\} interagieren, um Beiträge zu favorisieren, zu teilen oder diese zu beantworten. |
|
||||
| episodes.view | Kann Dashboards und Analysen von Episoden des Podcasts #\{id\} einsehen. |
|
||||
| episodes.create | Kann Folgen für Podcast #\{id\} erstellen. |
|
||||
| episodes.edit | Kann Folgen von Podcast #\{id\} bearbeiten. |
|
||||
| episodes.delete | Kann Folgen von Podcast #\{id\} löschen. |
|
||||
| episodes.manage-persons | Kann Personen von Episoden des Podcasts #\{id\} verwalten. |
|
||||
| episodes.manage-clips | Kann Videoclips und Soundbites des Podcasts #\{id\} verwalten. |
|
||||
| episodes.manage-publications | Kann Episoden und Posts von Podcast #\{id\} veröffentlichen/zurückziehen. |
|
||||
| episodes.manage-comments | Kann Kommentare von Folgen des Podcasts #\{id\} erstellen und löschen. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Offizielle Docker Images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Offizielle Docker Images
|
||||
|
||||
Castopod erstellt während des automatischen Build-Prozesses 3 Docker-Images auf
|
||||
Docker Hub:
|
||||
|
||||
|
|
@ -1,22 +1,21 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: Wie installiere ich Castopod?
|
||||
---
|
||||
|
||||
# Wie installiere ich Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod ist für eine einfache Installation konzipiert. Ob dediziertes oder
|
||||
Shared-Hosting, du kannst es auf den meisten PHP-MySQL-kompatiblen Webservern
|
||||
installieren.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
Wir haben offizielle Docker Images für Castopod veröffentlicht!
|
||||
|
||||
Wenn du Docker bevorzugst, kannst du die manuelle Anleitung überspringen und
|
||||
direkt zur [Docker-Dokumentation](./docker.md) für Castopod gehen.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
|
|
@ -49,14 +48,6 @@ sind:
|
|||
|
||||
> Wir empfehlen [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod funktioniert nur mit unterstützten MySQL 5.7 oder höher kompatiblen
|
||||
Datenbanken. Es wird zum Beispiel mit dem vorherigen MySQL v5.6 nicht mehr
|
||||
funktionieren, dessen Lebensende am 5. Februar 2021 war.
|
||||
|
||||
:::
|
||||
|
||||
Du benötigst den Servernamen, den Datenbanknamen, den Benutzernamen und das
|
||||
Passwort, um den Installationsvorgang abzuschließen. Kontaktiere bitte den
|
||||
Administrator, falls du keinen Benutzeraccount hast.
|
||||
|
|
@ -120,13 +111,13 @@ nicht installiert: %s:
|
|||
2. Folge der Anleitung auf dem Bildschirm.
|
||||
3. Podcasting starten!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Das Installationsskript schreibt eine `.env` Datei im Paket-Root. Wenn Sie nicht
|
||||
durch den Installations-Assistenten kommen, können Sie die `.env` Datei manuell
|
||||
erstellen und bearbeiten basierend auf der `.env.example` Datei.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -234,13 +225,35 @@ kümmert sich um den Aufwand von self-hosting für dich.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Installiere Castopod mit YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Installiere Castopod mit YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Sicherheit
|
||||
title: Sicherheitsbedenken
|
||||
---
|
||||
|
||||
# Sicherheitsbedenken
|
||||
|
||||
Castopod wurde mittels [CodeIgniter4](https://codeigniter.com/) (einem PHP
|
||||
Framework) gebaut, welches
|
||||
[gute Sicherheitspraktiken](https://codeigniter.com/user_guide/concepts/security.html)
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Ažuriranje
|
||||
sidebarDepth: 3
|
||||
title: Kako da ažurirate Castopod?
|
||||
---
|
||||
|
||||
# Kako da ažurirate Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Nakon instalacije Castopod-a, možete poželeti da ažurirate svoju instancu na
|
||||
najnoviju verziju kako bi ste uživali u najnovijim opcijama ✨, sređenim
|
||||
|
|
@ -36,12 +35,12 @@ bagovima 🐛 i unapređenim performansama ⚡.
|
|||
- Uklonite sve datoteke sem `.env` i `public/media`
|
||||
- Kopirajte nove datoteke iz preuzetog paketa na vaš server
|
||||
|
||||
::: info Napomena
|
||||
<Aside>
|
||||
|
||||
Možda ćete morati da resetujete dozvole za datoteke kao tokom procesa
|
||||
instalacije. Proverite [Bezbednosne interese](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Ažurirajte svoju šemu baze podataka iz vaše `Castopod Admin` > `About`
|
||||
stranice ili tako što ćete pokrenuti:
|
||||
|
|
@ -53,7 +52,7 @@ bagovima 🐛 i unapređenim performansama ⚡.
|
|||
5. Očistite keš iz `Castopod Admin` > `Settings` > `general` > `Housekeeping`
|
||||
6. ✨ Uživajte u svežoj instanci, završili ste!
|
||||
|
||||
::: info Napomena
|
||||
<Aside>
|
||||
|
||||
Izdanja mogu doći sa dodatnim uputstvima za ažuriranje (pogledajte
|
||||
[stranicu izdanja](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -61,7 +60,7 @@ Izdanja mogu doći sa dodatnim uputstvima za ažuriranje (pogledajte
|
|||
- cf.
|
||||
[Nisam ažurirao/la svoju instancu jako dugo… Šta treba da uradim?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Potpuno automatsko ažuriranje
|
||||
|
||||
1382
docs/src/content/docs/de/index.mdx
Normal file
|
|
@ -0,0 +1,1382 @@
|
|||
---
|
||||
title: Willkommen 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod ist eine freie & Open-Source-Hosting-Plattform für Podcastende, die ihr
|
||||
Publikum einbinden und mit ihnen interagieren möchten.
|
||||
|
||||
Castopod ist einfach zu installieren und wurde auf
|
||||
[CodeIgniter4](https://codeigniter.com/) aufgebaut, ein mächtiges PHP Framework,
|
||||
mit einem sehr kleinen Fußabdruck.
|
||||
|
||||
<LinkCard title="Installieren" href="./getting-started/install" />
|
||||
|
||||
## Merkmale
|
||||
|
||||
- 🌱 Kostenlos & Open-Source (AGPL v3 Lizenz)
|
||||
- 🔐 Fokussiert auf die Datensouveränität: Ihre Inhalte, Ihr Publikum und
|
||||
Analysen gehören zu Ihnen, und nur Ihnen
|
||||
- 🪄 Podcasting 2.0 Features: GUID, gesperrt, Transkripte, Finanzierung,
|
||||
Kapitel, Standort, Personen, Soundbites, …
|
||||
- 💬 Integriertes soziales Netzwerk:
|
||||
- 🚀 Castopod ist Teil des Fediversums, einem dezentralen sozialen
|
||||
Netzwerk
|
||||
- ❤️ Erstelle Beiträge, teile, favorisiere und kommentiere Episoden
|
||||
- 📈 Integrierte Analyse:
|
||||
- ⚖️ GDPR / CCPA / LGPD konform
|
||||
- 🪙 Standard IABv2 Zuschauermessung
|
||||
- 🏡 On-premises Analytik, kein Dritter beteiligt
|
||||
- 📢 Integrierte Marketing-Tools:
|
||||
- ✅ SEO bereit (open-graph Meta-Tags, JSON-LD, …)
|
||||
- 📱 PWA: als eigenständige App installieren
|
||||
- 🎨 Anpassbare Theme-Farben
|
||||
- 🎬 Generiere Videoclips aus Episoden fertig zum Teilen
|
||||
- 🔉 Soundbites erstellen
|
||||
- ▶️ Embeddable Player, binde deine Episoden auf jeder Webseite ein
|
||||
- 💸 Monetarisierung:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Vergleiche mit anderen Lösungen
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
85
docs/src/content/docs/el/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Ταυτοποίηση & εξουσιοδότηση
|
||||
---
|
||||
|
||||
Ο Castopod χειρίζεται τον έλεγχο ταυτότητας και την έγκριση χρησιμοποιώντας
|
||||
`codeigniter/shield` σε συνδυασμό με προσαρμοσμένους κανόνες. Οι ρόλοι και τα
|
||||
δικαιώματα καθορίζονται σε δύο επίπεδα:
|
||||
|
||||
1. [ευρεία παρουσία](#1-instance-wide-roles-and-permissions)
|
||||
2. [ανά podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Διαχείριση ρόλων και δικαιωμάτων
|
||||
|
||||
### Ρόλοι εμφάνισης
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ---------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Υπερδιαχειριστής | Έχει πλήρη έλεγχο του Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Διαχειριστής | Διαχείριση περιεχομένου του Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | Γενικοί χρήστες του Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | -------------------------------------------------------------------------------------- |
|
||||
| admin.access | Μπορεί να έχει πρόσβαση στην περιοχή διαχείρισης Castopod. |
|
||||
| admin.settings | Μπορεί να έχει πρόσβαση στις ρυθμίσεις Castopod. |
|
||||
| users.manage | Μπορεί να διαχειριστεί τους χρήστες Castopod. |
|
||||
| persons.manage | Μπορεί να διαχειριστεί τα άτομα. |
|
||||
| pages.manage | Μπορεί να διαχειριστεί τις σελίδες. |
|
||||
| podcasts.view | Μπορεί να δει όλα τα podcasts. |
|
||||
| podcasts.create | Μπορεί να δημιουργήσει νέα podcasts. |
|
||||
| podcasts.import | Μπορεί να εισάγει podcasts. |
|
||||
| fediverse.manage-blocks | Μπορεί να εμποδίσει τους ψευτογενείς ηθοποιούς/τομείς να αλληλεπιδρούν με το Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Διαχειριστής | Έχει πλήρη έλεγχο του podcast #\{id\}. | \* |
|
||||
| Εκδότης | Διαχειρίζεται περιεχόμενο και δημοσιεύσεις του podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Συντάκτης | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Επισκέπτης | Γενικός συντελεστής του podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Installatie
|
||||
sidebarDepth: 3
|
||||
title: Hoe installeer je Castopod?
|
||||
---
|
||||
|
||||
# Hoe installeer je Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Vereisten
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Begin met podcasting!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Security
|
||||
title: Veiligheidszorgen
|
||||
---
|
||||
|
||||
# Security concerns
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Bijwerken
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Volledig geautomatiseerde updates
|
||||
|
||||
1382
docs/src/content/docs/el/index.mdx
Normal file
|
|
@ -0,0 +1,1382 @@
|
|||
---
|
||||
title: Καλώς Ήλθατε 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Το Castopod είναι μια δωρεάν & ανοικτού κώδικα πλατφόρμα φιλοξενίας podcast που
|
||||
κατασκευάζεται για podcasters που θέλουν να συμμετάσχουν και να αλληλεπιδράσουν
|
||||
με το κοινό τους.
|
||||
|
||||
Το Castopod είναι εύκολο στην εγκατάσταση και χτίστηκε με το
|
||||
[CodeIgniter4](https://codeigniter.com/), ένα ισχυρό PHP framework με ένα πολύ
|
||||
μικρό αποτύπωμα.
|
||||
|
||||
<LinkCard title="Εγκατάσταση" href="./getting-started/install" />
|
||||
|
||||
## Χαρακτηριστικά
|
||||
|
||||
- 🌱 Δωρεάν & open-source (AGPL v3 License)
|
||||
- 🔐 Εστιάζει στην κυριαρχία των δεδομένων: το περιεχόμενο, το κοινό και
|
||||
τα αναλυτικά στοιχεία ανήκουν σε εσάς μόνο
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Ενσωματωμένο κοινωνικό δίκτυο:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Κίνητρα
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Authentication & Authorization
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
|
|
@ -15,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
|
||||
### Instance roles
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
|
|
@ -23,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
|
|
@ -41,47 +38,47 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #{id}. | \* |
|
||||
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------ |
|
||||
| view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| edit | Can edit podcast #{id}. |
|
||||
| delete | Can delete podcast #{id}. |
|
||||
| manage-import | Can synchronize imported podcast #{id}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-contributors | Can manage contributors of podcast #{id}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #{id}. |
|
||||
| manage-publications | Can publish podcast #{id}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
|
||||
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| episodes.create | Can create episodes for podcast #{id}. |
|
||||
| episodes.edit | Can edit podcast #{id}. |
|
||||
| episodes.delete | Can delete podcast #{id}. |
|
||||
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
|
||||
| episodes.manage-publications | Can publish podcast #{id}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -35,9 +32,9 @@ can be added as a cache handler.
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
castopod:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
container_name: "castopod"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
|
|
@ -50,14 +47,14 @@ can be added as a cache handler.
|
|||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
image: mariadb:11.2
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
|
|
@ -71,13 +68,13 @@ can be added as a cache handler.
|
|||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
image: redis:7.2-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
|
|
@ -85,7 +82,7 @@ can be added as a cache handler.
|
|||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
242
docs/src/content/docs/en/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Security
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
# Security concerns
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
194
docs/src/content/docs/en/index.mdx
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese, Spanish, simplified Chinese… and
|
||||
[many more](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our
|
||||
[contributing guide](https://code.castopod.org/adaures/castopod/-/blob/develop/CONTRIBUTING.md)
|
||||
to learn about our development process, how to propose bugfixes and
|
||||
improvements, and how to build and test your changes to Castopod.
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Autenticación & Autenticación
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Autenticación & Autenticación
|
||||
|
||||
Castopod gestiona la autenticación y autorización usando `codeignitor/escudo`
|
||||
emparejado con reglas personalizadas. Los roles y permisos se definen en dos
|
||||
niveles:
|
||||
|
|
@ -16,21 +13,21 @@ niveles:
|
|||
|
||||
### Roles de instancia
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| roles | descripción | permisos |
|
||||
| role | description | permissions |
|
||||
| ------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super administrador | Tiene control completo sobre Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Administrador | Gestiona el contenido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Administrador | Administrar contenido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | Usuarios generales de Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Permisos de instancia
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permisos | descripción |
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------ |
|
||||
| admin.access | Puedes acceder al área de administración de Castopod. |
|
||||
| admin.settings | Puede acceder a la configuración de Castopod. |
|
||||
|
|
@ -42,47 +39,47 @@ niveles:
|
|||
| podcasts.import | Puede importar podcasts. |
|
||||
| fediverse.manage-blocks | Puedes bloquear la interacción de actores/dominios del fediverso con Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Permisos y roles por podcast
|
||||
|
||||
### Roles por podcast
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| roles | descripción | permisos |
|
||||
| ------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Administrador | Tiene el control completo del podcast #{id}. | \* |
|
||||
| Editor | Gestiona el contenido y las publicaciones del podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Autor | Gestiona el contenido del podcast #{id} pero no puede publicarlo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Invitado | Colaborador general del podcast #{id}. | view, episodes.view |
|
||||
| role | description | permissions |
|
||||
| ------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Administrador | Tiene el control completo del podcast #\{id\}. | \* |
|
||||
| Editor | Gestiona el contenido y las publicaciones del podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Autor | Gestiona el contenido del podcast #\{id\} pero no puede publicarlo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Invitado | Colaborador general del podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Permisos por podcast
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permisos | descripción |
|
||||
| ---------------------------- | -------------------------------------------------------------------------------------------------- |
|
||||
| view | Puede ver el panel de control y análisis del podcast #{id}. |
|
||||
| edit | Puede editar podcast #{id}. |
|
||||
| delete | Puede borrar el podcast #{id}. |
|
||||
| manage-import | Puede sincronizar el podcast importado #{id}. |
|
||||
| manage-persons | Puede administrar las suscripciones del podcast #{id}. |
|
||||
| manage-subscriptions | Puede administrar las suscripciones del podcast #{id}. |
|
||||
| manage-contributors | Puede administrar colaboradores del podcast #{id}. |
|
||||
| manage-platforms | Puede establecer/eliminar enlaces a la plataforma del podcast #{id}. |
|
||||
| manage-publications | Puede publicar el podcast #{id}. |
|
||||
| manage-notifications | Puede ver y marcar las notificaciones como leídas para podcast #{id}. |
|
||||
| interact-as | Puede interactuar como el podcast #{id} para favoritar, compartir o responder a las publicaciones. |
|
||||
| episodes.view | Puede ver el panel de control y analíticas del episodio #{id}. |
|
||||
| episodes.create | Puede crear episodios para el podcast #{id}. |
|
||||
| episodes.edit | Puede editar episodios #{id}. |
|
||||
| episodes.delete | Puede borrar el podcast #{id}. |
|
||||
| episodes.manage-persons | Puede administrar las suscripciones del podcast #{id}. |
|
||||
| episodes.manage-clips | Puedes administrar video clips o sonidos del podcast #{id}. |
|
||||
| episodes.manage-publications | Puede publicar el podcast #{id}. |
|
||||
| episodes.manage-comments | Puede crear/eliminar los comentarios de episodio del podcast #{id}. |
|
||||
| permission | description |
|
||||
| ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
||||
| view | Puede ver el panel de control y analíticas del episodio #\{id\}. |
|
||||
| edit | Puede editar el podcast #\{id\}. |
|
||||
| delete | Puede borrar el podcast #\{id\}. |
|
||||
| manage-import | Puede sincronizar el podcast importado #\{id\}. |
|
||||
| manage-persons | Puede administrar las suscripciones del podcast #\{id\}. |
|
||||
| manage-subscriptions | Puede administrar las suscripciones del podcast #\{id\}. |
|
||||
| manage-contributors | Puede administrar colaboradores del podcast #\{id\}. |
|
||||
| manage-platforms | Puede establecer/eliminar enlaces a la plataforma del podcast #\{id\}. |
|
||||
| manage-publications | Puede publicar el podcast #\{id\}. |
|
||||
| manage-notifications | Puede ver y marcar las notificaciones como leídas para podcast #\{id\}. |
|
||||
| interact-as | Puede interactuar como el podcast #\{id\} para marcar como favarito, compartir o responder a las publicaciones. |
|
||||
| episodes.view | Puede ver el panel de control y analíticas del episodio #\{id\}. |
|
||||
| episodes.create | Puede crear episodios para el podcast #\{id\}. |
|
||||
| episodes.edit | Puede editar episodios del podcast #\{id\}. |
|
||||
| episodes.delete | Puede borrar episodios del podcast #\{id\}. |
|
||||
| episodes.manage-persons | Puede administrar las personas de los episodios del podcast #\{id\}. |
|
||||
| episodes.manage-clips | Puedes administrar video clips o sonidos del podcast #\{id\}. |
|
||||
| episodes.manage-publications | Puede publicar/despublicar episodios y publicaciones del podcast #\{id\}. |
|
||||
| episodes.manage-comments | Puede crear/eliminar los comentarios de episodio del podcast #\{id\}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Imágenes oficiales de Docker
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Imágenes oficiales de Docker
|
||||
|
||||
Castopod lanza 3 imágenes Docker al Docker Hub durante su proceso de
|
||||
construcción automatizada:
|
||||
|
||||
|
|
@ -1,22 +1,21 @@
|
|||
---
|
||||
title: Instalación
|
||||
sidebarDepth: 3
|
||||
title: ¿Cómo instalar Castopod?
|
||||
---
|
||||
|
||||
# ¿Cómo instalar Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod está pensado para ser fácil de instalar. Ya sea usando un alojamiento
|
||||
dedicado o compartido, puedes instalarlo en la mayoría de servidores web
|
||||
compatibles con PHP-MySQL.
|
||||
|
||||
::: tip Nota
|
||||
<Aside>
|
||||
|
||||
¡Hemos publicado imágenes oficiales de Docker para Castopod!
|
||||
|
||||
Si prefieres usar Docker, puedes saltarte esto e ir directamente a la
|
||||
[documentación sobre docker](./docker.md) para Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requisitos
|
||||
|
||||
|
|
@ -47,14 +46,6 @@ Además, asegúrate de que las siguientes extensiones están habilitadas en tu P
|
|||
|
||||
> Se recomienda usar [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Alerta
|
||||
|
||||
Castopod solo funciona con base de datos compatibles con MySQL 5.7 o superior.
|
||||
No funcionará por ejemplo con la version previa MySQL v5.6, ya que su vida útil
|
||||
terminó el 5 de febrero de 2021.
|
||||
|
||||
:::
|
||||
|
||||
Necesitarás la dirección/nombre del servidor (hostname), el nombre de la base de
|
||||
datos, el usuario y la contraseña para completar el proceso de instalación. Si
|
||||
no cuentas con esta información, contacta con el administrador de tu servidor.
|
||||
|
|
@ -118,13 +109,13 @@ extensiones:
|
|||
2. Sigue las instrucciones en pantalla.
|
||||
3. ¡Empieza a hacer podcasting!
|
||||
|
||||
::: info Nota
|
||||
<Aside>
|
||||
|
||||
El script de instalación crea un archivo `.env` en la raíz de castopod. If you
|
||||
cannot go through the install wizard, you can create and edit the `.env` file
|
||||
manually based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -230,13 +221,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Instalar Castopod con YunoHost." class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Instalar Castopod con YunoHost."
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Seguridad
|
||||
title: Problemas de seguridad
|
||||
---
|
||||
|
||||
# Problemas de seguridad
|
||||
|
||||
Castopod está construido sobre [CodeIgniter4](https://codeigniter.com/), un
|
||||
framework de PHP que alienta
|
||||
[buenas prácticas de seguridad](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Actualización
|
||||
sidebarDepth: 3
|
||||
title: ¿Cómo actualizar Castopod?
|
||||
---
|
||||
|
||||
# ¿Cómo actualizar Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Después de instalar Castopod, es posible que quieras actualizar tu instancia a
|
||||
la última versión para disfrutar de las últimas características ✨, correcciones
|
||||
|
|
@ -36,13 +35,13 @@ de errores 🐛 y mejoras de rendimiento ⚡.
|
|||
- Eliminar todos los archivos excepto `.env` y la carpeta `public/media`
|
||||
- Copie los nuevos archivos del paquete descargado en su servidor
|
||||
|
||||
::: Nota informativa
|
||||
<Aside>
|
||||
|
||||
Es posible que necesite restablecer los permisos de los archivos después el
|
||||
proceso de instalación. Compruebe
|
||||
[preocupaciones de seguridad](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Actualice su esquema de base de datos desde su `Administrador de Castopod` >
|
||||
`Acerca de` página o ejecutando:
|
||||
|
|
@ -55,7 +54,7 @@ de errores 🐛 y mejoras de rendimiento ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
|
||||
|
||||
::: Nota informativa
|
||||
<Aside>
|
||||
|
||||
Las versiones pueden venir con instrucciones de actualización adicionales (véase
|
||||
la página de
|
||||
|
|
@ -63,7 +62,7 @@ la página de
|
|||
|
||||
- cf. No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Actualizaciones totalmente automatizadas
|
||||
|
||||
1402
docs/src/content/docs/es/index.mdx
Normal file
|
|
@ -0,0 +1,1402 @@
|
|||
---
|
||||
title: Bienvenido 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod es una plataforma gratuita y de código abierto para hospedar podcasts
|
||||
hecha para podcasters que quieren involucrar e interactuar más con su audiencia.
|
||||
|
||||
Castopod es fácil de instalar y se ha desarrollado sobre
|
||||
[CodeIgniter4](https://codeigniter.com/), un potente y muy ligero framework PHP.
|
||||
|
||||
<LinkCard title="Instalación" href="./getting-started/install" />
|
||||
|
||||
## Características
|
||||
|
||||
- 🌱 Gratis & de código abierto (licencia AGPL v3).
|
||||
- 🔐 Centrado en la soberanía de los datos: tu contenido, tu audiencia, y
|
||||
tus estadísticas te pertenecen a ti y solo a ti.
|
||||
- 🪄 Funciones de Podcasting 2.0: GUID (interfaz gráfica de usuario),
|
||||
protección y bloqueo del podcast, transcripciones, monetización, episodios,
|
||||
geo-localización, personas, fragmentos de audio, …
|
||||
- 💬 Integración con redes sociales:
|
||||
- 🚀 Castopod es parte del Fediverso, una red social descentralizada
|
||||
- ❤️ Se puede crear mensajes, compartir, agregar a favoritos y comentar
|
||||
en episodios
|
||||
- 📈 Análisis estadísticos integrados:
|
||||
- ⚖️ Compatible con GDPR / CCPA / LGPD
|
||||
- 🪙 Medida de audiencia con el estándar IABv2
|
||||
- 🏡 Estadísticas sin terceras partes involucradas
|
||||
- 📢 Herramientas de marketing incorporadas:
|
||||
- ✅ Listo para SEO (meta-etiquetas de open-graph, JSON-LD, …)
|
||||
- 📱 PWA: instalable como una aplicación independiente
|
||||
- 🎨 Personalizar los colores del tema
|
||||
- 🎬 Generar recortes de vídeo listos para compartir, a partir de tus
|
||||
episodios
|
||||
- 🔉 Generar fragmentos de audio (Soundbites) para la promoción de tus
|
||||
episodios.
|
||||
- ▶️ Reproductor incrustable, con el que insertar tus episodios en
|
||||
cualquier sitio web!
|
||||
- 💸 Monetización:
|
||||
- 🔗 Enlaces de financiación
|
||||
- 📲 Anuncios publicitarios del tipo click-para-escuchar
|
||||
- 🤝 value4value / WebMonetization (criptomonedas para creadores de
|
||||
contenido).
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publica tus episodios en todas partes con RSS:
|
||||
- 📱 En todos los directorios y aplicaciones: Podcast Index, Apple
|
||||
Podcasts, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Emite tus episodios al instante con WebSub.
|
||||
- 📥 Importación de podcasts: mueve tu podcast existente en otro servicio
|
||||
a tu servidor Castopod.
|
||||
- 📤 Mueve tu podcast fuera de Castopod.
|
||||
- 🔀 Multi-podcast: aloja tantos podcasts como quieras en una misma
|
||||
instancia/panel de CASTOPOD.
|
||||
- 👥 Multi-usuario: añade colaboradores y define roles.
|
||||
- 🌎 Soporte multilingüe i18n: traducido al Inglés, Francés, Polaco,
|
||||
Alemán, Portugués brasileño, Español, Noruego, … ¡y
|
||||
[más por venir](https://translate.castopod.org)!
|
||||
|
||||
## Motivación
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparación con otras soluciones
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs. Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs. Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs. otras plataformas de podcast
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod puede ser auto-hospedado en tu propio servidor y es la única solución
|
||||
que te permite mantener un control completo sobre los contenidos que produces.
|
||||
También, como es de código abierto, puedes incluso personalizarlo como desees
|
||||
y necesites.
|
||||
|
||||
- Castopod es la única solución que hasta el momento integra tanto una red
|
||||
social descentralizada con ActivityPub así como muchas de las características
|
||||
del podcasting 2.0, con la esperanza de cerrar la brecha entre ambos.
|
||||
|
||||
## Cómo colaborar
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Código de conducta
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Guía para colaborar
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Colaboradores ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contacto
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (para interacción directa con
|
||||
desarrolladores y la comunidad)
|
||||
- [Seguimiento de incidencias](https://code.castopod.org/adaures/castopod/-/issues)
|
||||
(para informar de errores y solicitar nuevas funcionalidades)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@castopod) (instancia de Mastodon)
|
||||
- [[Twitter](https://twitter.com/castopod)](https://twitter.com/castopod)
|
||||
- [[LinkedIn](https://linkedin.com/company/ad-aures)](https://linkedin.com/company/castopod)
|
||||
- [Facebook (próximamente?)](https://www.facebook.com/castopod)
|
||||
|
||||
## Patrocinadores
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer">
|
||||
<img
|
||||
src="/images/sponsors/adaures.svg"
|
||||
alt="Logo de Ad Aures"
|
||||
class="h-16"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
href="https://nlnet.nl/project/Castopod/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src="/images/sponsors/nlnet.svg" alt="Logo de NLnet" class="h-16" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Licencia
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Authentication & Authorization
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
|
|
@ -15,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
|
||||
### Instance roles
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
|
|
@ -23,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
|
|
@ -41,47 +38,47 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #{id}. | \* |
|
||||
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------ |
|
||||
| view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| edit | Can edit podcast #{id}. |
|
||||
| delete | Can delete podcast #{id}. |
|
||||
| manage-import | Can synchronize imported podcast #{id}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-contributors | Can manage contributors of podcast #{id}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #{id}. |
|
||||
| manage-publications | Can publish podcast #{id}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
|
||||
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| episodes.create | Can create episodes for podcast #{id}. |
|
||||
| episodes.edit | Can edit podcast #{id}. |
|
||||
| episodes.delete | Can delete podcast #{id}. |
|
||||
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
|
||||
| episodes.manage-publications | Can publish podcast #{id}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
# How to install Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Security
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
# Security concerns
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1381
docs/src/content/docs/eu/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](./contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Authentication & Authorization
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
|
|
@ -15,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
|
||||
### Instance roles
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
|
|
@ -23,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
|
|
@ -41,47 +38,47 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #{id}. | \* |
|
||||
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------ |
|
||||
| view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| edit | Can edit podcast #{id}. |
|
||||
| delete | Can delete podcast #{id}. |
|
||||
| manage-import | Can synchronize imported podcast #{id}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-contributors | Can manage contributors of podcast #{id}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #{id}. |
|
||||
| manage-publications | Can publish podcast #{id}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
|
||||
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| episodes.create | Can create episodes for podcast #{id}. |
|
||||
| episodes.edit | Can edit podcast #{id}. |
|
||||
| episodes.delete | Can delete podcast #{id}. |
|
||||
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
|
||||
| episodes.manage-publications | Can publish podcast #{id}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
# How to install Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,14 +45,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
|
@ -115,13 +106,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +217,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/fa/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Ar surentez
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1381
docs/src/content/docs/fa/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
85
docs/src/content/docs/fr/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Authentification et Autorisation
|
||||
---
|
||||
|
||||
Castopod gère l'authentification et l'autorisation à l'aide de
|
||||
`codeigniter/shield` associés à des règles personnalisées. Les rôles et les
|
||||
autorisations sont définis sur deux niveaux :
|
||||
|
||||
1. [à l'échelle de l'instance](#1-instance-wide-roles-and-permissions)
|
||||
2. [par podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Rôles et autorisations à l'échelle de l'instance
|
||||
|
||||
### Rôles dans l’instance
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| -------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super administrat·rice·eur | A un contrôle complet sur Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Gestionnaire | Gère le contenu de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcast·rice·eur | Utilisateurs généraux de Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Autorisations dans l'instance
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | -------------------------------------------------------------------- |
|
||||
| admin.access | Peut accéder à la zone d'administration Castopod. |
|
||||
| admin.settings | Peut accéder aux paramètres de Castopod. |
|
||||
| users.manage | Peut gérer les utilisateurs de Castopod. |
|
||||
| persons.manage | Permet de gérer les personnes. |
|
||||
| pages.manage | Permet de gérer les pages. |
|
||||
| podcasts.view | Peut voir tous les podcasts. |
|
||||
| podcasts.create | Peut créer de nouveaux podcasts. |
|
||||
| podcasts.import | Peut importer des podcasts. |
|
||||
| fediverse.manage-blocks | Peut empêcher des act·rice·eur·s/domaines d'interagir avec Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Rôles et autorisations par podcast
|
||||
|
||||
### Rôles par podcast
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ---------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Administrateur | A un contrôle total sur le podcast #\{id\}. | \* |
|
||||
| Éditeur | Gère le contenu et les publications du podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Auteur / Autrice | Gère le contenu du podcast #\{id\} , mais ne peut pas le publier. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Invité | Contributeur général du podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Permissions par podcast
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| view | Peut voir le tableau de bord et les analyses du podcast #\{id\}. |
|
||||
| edit | Peut éditer le podcast #\{id\}. |
|
||||
| delete | Peut supprimer le podcast #\{id\}. |
|
||||
| manage-import | Peut synchroniser le podcast importé #\{id\}. |
|
||||
| manage-persons | Permet de gérer les abonnements au podcast #\{id\}. |
|
||||
| manage-subscriptions | Permet de gérer les abonnements au podcast #\{id\}. |
|
||||
| manage-contributors | Permet de gérer les contributeurs du podcast #\{id\}. |
|
||||
| manage-platforms | Peut configurer/supprimer les liens de la plateforme du podcast #\{id\}. |
|
||||
| manage-publications | Peut publier le podcast #\{id\}. |
|
||||
| manage-notifications | Peut afficher et marquer les notifications comme lues pour le podcast #\{id\}. |
|
||||
| interact-as | Peut interagir en tant que podcast #\{id\} pour mettre en favori, partager ou répondre aux messages. |
|
||||
| episodes.view | Peut voir le tableau de bord et les statistiques du podcast #\{id\}. |
|
||||
| episodes.create | Peut créer des épisodes pour le podcast #\{id\}. |
|
||||
| episodes.edit | Peut modifier les épisodes du podcast #\{id\}. |
|
||||
| episodes.delete | Peut supprimer les épisodes du podcast #\{id\}. |
|
||||
| episodes.manage-persons | Peut gérer les intervenants des épisodes du podcast #\{id\}. |
|
||||
| episodes.manage-clips | Permet de gérer les clips vidéo ou les parties sonores du podcast #\{id\}. |
|
||||
| episodes.manage-publications | Peut publier/dépublier des épisodes et des messages de podcast #\{id\}. |
|
||||
| episodes.manage-comments | Peut créer/supprimer les commentaires de l'épisode du podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Images officielles Docker
|
||||
sidebarDepth: 3
|
||||
title: Images officielles de Docker
|
||||
---
|
||||
|
||||
# Images officielles de Docker
|
||||
|
||||
Castopod envoie 3 images Docker au Hub Docker pendant son processus de
|
||||
construction automatisée :
|
||||
|
||||
|
|
@ -1,22 +1,21 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: Comment installer Castopod ?
|
||||
---
|
||||
|
||||
# Comment installer Castopod ?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod a été pensé pour être facile à installer. Que vous utilisiez un
|
||||
hébergement dédié ou mutualisé, vous pouvez l'installer sur la plupart des
|
||||
serveurs web compatibles avec PHP-MySQL.
|
||||
|
||||
::: Note d'astuce
|
||||
<Aside>
|
||||
|
||||
Nous avons publié des images officielles Docker pour Castopod!
|
||||
|
||||
Si vous préférez utiliser Docker, vous pouvez sauter cette partie et aller
|
||||
directement à la [documentation Docker](./docker.md) pour Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Prérequis
|
||||
|
||||
|
|
@ -49,14 +48,6 @@ De plus, assurez-vous que les extensions suivantes sont activées dans votre PHP
|
|||
|
||||
> Nous vous recommandons d'utiliser [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Attention
|
||||
|
||||
Castopod ne fonctionne qu'avec les bases de données MySQL 5.7 ou plus récentes.
|
||||
Les versions 5.6 (dont le support a cessé le 5 février 2021) ou précédentes de
|
||||
MySQL ne fonctionneront pas.
|
||||
|
||||
:::
|
||||
|
||||
Vous aurez besoin du nom d'hôte du serveur, du nom de la base de données, du nom
|
||||
d'utilisateur et du mot de passe pour terminer le processus d'installation. Si
|
||||
vous ne disposez pas de ces informations, veuillez contacter votre
|
||||
|
|
@ -121,13 +112,13 @@ installées :
|
|||
2. Suivez les instructions affichée.
|
||||
3. Commencer à baladodiffuser !
|
||||
|
||||
:::info Note
|
||||
<Aside>
|
||||
|
||||
Le script d'installation crée un fichier `.env` à la racine du paquet. Si vous
|
||||
ne pouvez pas passer par l'assistant d'installation, vous pouvez créer et éditer
|
||||
le fichier `.env` manuellement en vous appuyant sur le fichier `.env.example`.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Utilisation du CLI
|
||||
|
||||
|
|
@ -234,13 +225,35 @@ simplifier l'auto-hébergement.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Installer avec YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Installer avec YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Dépôt
|
||||
Github</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Dépôt Github
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
---
|
||||
title: Sécurité
|
||||
title: Questions de sécurité
|
||||
---
|
||||
|
||||
# Questions de sécurité
|
||||
|
||||
Castopod est développé sur [CodeIgniter4](https://codeigniter.com/), un
|
||||
framework PHP qui encourage
|
||||
[de bonnes pratiques de sécurité](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Mise à jour
|
||||
sidebarDepth: 3
|
||||
title: Comment installer Castopod ?
|
||||
---
|
||||
|
||||
# Comment installer Castopod ?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Après avoir installé Castopod, vous pouvez mettre à jour votre instance vers la
|
||||
dernière version afin de profiter des dernières fonctionnalités ✨, des
|
||||
|
|
@ -37,13 +36,13 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
|
|||
- Supprimer tous les fichiers sauf `.env` et `public/media`
|
||||
- Copiez les nouveaux fichiers du paquet téléchargé sur votre serveur
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Vous devrez peut-être re-définir les autorisations de fichiers comme
|
||||
effectué durant le processus d'installation. Vérifiez les
|
||||
[questions de sécurité](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Mettez à jour votre schéma de base de données depuis
|
||||
`Administrateur Castopod` > `À propos` ou en exécutant :
|
||||
|
|
@ -56,16 +55,16 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
|
|||
`Général` > `Foyer`
|
||||
6. ✨Profitez de votre nouvelle instance, vous avez terminé !
|
||||
|
||||
::: Note d'information
|
||||
<Aside>
|
||||
|
||||
Les versions peuvent être accompagnées d'instructions de mise à jour
|
||||
supplémentaires (cf. la
|
||||
[page des notes de versions](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire
|
||||
?</a>
|
||||
- cf. Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire
|
||||
?
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Mises à jour entièrement automatisées
|
||||
|
||||
1416
docs/src/content/docs/fr/index.mdx
Normal file
|
|
@ -0,0 +1,1416 @@
|
|||
---
|
||||
title: Bienvenue 👋
|
||||
description:
|
||||
Castopod est une plateforme d’hébergement gratuite & open-source conçue pour
|
||||
les podcasteurs qui veulent échanger et interagir avec leur public.
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod est une plateforme d’hébergement gratuite & open-source conçue pour les
|
||||
podcasteurs qui veulent échanger et interagir avec leur public.
|
||||
|
||||
Castopod est facile à installer et a été conçu avec
|
||||
[CodeIgniter4](https://codeigniter.com/), un framework PHP puissant de très
|
||||
petite taille.
|
||||
|
||||
<LinkCard title="Installer" href="./getting-started/install" />
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- 🌱 Libre, gratuit & open-source (Licence AGPL v3)
|
||||
- 🔐 focalisé sur la souveraineté des données : votre contenu, votre
|
||||
audience et vos statiistiques vous appartiennent, et à vous seulement
|
||||
- 🪄 Fonctionnalités du Podcasting 2.0 : GUID, verrouillage,
|
||||
transcriptions, financement, chapitres, géo-localisation, intervenants,
|
||||
extraits sonores, …
|
||||
- 💬 Réseau social intégré :
|
||||
- 🚀 Castopod fait partie du Fédivers, un réseau social décentralisé
|
||||
- ❤️ Créer des publications, partager, mettre en favori et commenter des
|
||||
épisodes
|
||||
- 📈 Statistiques intégrées :
|
||||
- ⚖️ Conforme GDPR / CCPA / LGPD
|
||||
- 🪙 Mesure d'audience IABv2
|
||||
- 🏡 Statistiques intégrées, aucune tierce partie intermédiaire
|
||||
- 📢 Outils de marketing intégrés :
|
||||
- ✅ Prêt pour le SEO (méta-tags open-graph, JSON-LD…)
|
||||
- 📱 PWA: installez comme application autonome
|
||||
- 🎨 Couleurs de thèmes personnalisables
|
||||
- 🎬 Générez des clips vidéo prêts à partager à partir d'épisodes
|
||||
- 🔉 Générez des extraits sonores
|
||||
- ▶️ Intégrer vos épisodes dans n'importe quel site web
|
||||
- 💸 Monétisation:
|
||||
- 🔗 Liens de financement
|
||||
- 📲 publicité “listen-to-click”
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Podcasts premium
|
||||
- 📡 Publiez vos épisodes partout avec RSS :
|
||||
- 📱 Sur tous les index et toutes les applications : Podcast Index,
|
||||
Podcasts Apple, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend…
|
||||
- ⚡ Diffusez instantanément vos épisodes avec WebSub
|
||||
- 📥 Importation de Podcast : déménagez votre podcast existant vers
|
||||
Castopod
|
||||
- 📤 Déplacez votre podcast chez un autre hébergeur
|
||||
- 🔀 Multi-locataire : hébergez autant de podcasts que vous le souhaitez
|
||||
- 👥 Multi-utilisateur : ajoutez des contributeurs et définissez leurs
|
||||
rôles
|
||||
- 🌎 support de i18n : traduit en anglais, français, polonais, allemand,
|
||||
portugais, brésilien & espagnol… et
|
||||
[plus à l'avenir](https://translate.castopod.org)!
|
||||
|
||||
## Pourquoi Castopod ?
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparaison avec d'autres solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs Autres hébergeurs de podcasts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod peut être auto-hébergé et est la seule solution qui vous permet de
|
||||
garder le contrôle total sur ce que vous produisez. D'autre part, comme il est
|
||||
open-source, vous avez le pouvoir de le modifier comme vous le souhaitez.
|
||||
|
||||
- Castopod est la seule solution qui intègre aujourd'hui à la fois un réseau
|
||||
social décentralisé avec ActivityPub et des fonctionnalités de « Podcasting
|
||||
2.0 », réduisant ainsi l'écart entre les deux.
|
||||
|
||||
## Contribuer
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code de conduite
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Guide de contribution
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributeurs ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (pour dialoguer en temps réel avec les
|
||||
développeurs et la communauté)
|
||||
- [Suivi de problèmes](https://code.castopod.org/adaures/castopod/-/issues)
|
||||
(pour toute demande de nouvelle fonctionnalité ou rapport de bug)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Instance Mastodon)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer">
|
||||
<img
|
||||
src="/images/sponsors/adaures.svg"
|
||||
alt="Logo d'Ad Aures"
|
||||
class="h-16"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
href="https://nlnet.nl/project/Castopod/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src="/images/sponsors/nlnet.svg" alt="Logo de NLnet" class="h-16" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Licence
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
||||
[release]: https://code.castopod.org/adaures/castopod/-/releases
|
||||
[release-badge]: https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
|
||||
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
|
||||
[license-badge]: https://img.shields.io/github/license/ad-aures/castopod?color=blue
|
||||
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
|
||||
[contributions-badge]: https://img.shields.io/badge/contributions-welcome-brightgreen.svg
|
||||
[semantic-release]: https://github.com/semantic-release/semantic-release
|
||||
[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
[discord]: https://castopod.org/discord
|
||||
[discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8
|
||||
[stars]: https://github.com/ad-aures/castopod/stargazers
|
||||
[stars-badge]: https://img.shields.io/github/stars/ad-aures/castopod?style=social
|
||||
[crowdin]: https://translate.castopod.org/project/castopod
|
||||
[crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg
|
||||
85
docs/src/content/docs/fr2/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Authentification et Autorisation
|
||||
---
|
||||
|
||||
Castopod gère l'authentification et l'autorisation à l'aide de
|
||||
`codeigniter/shield` associés à des règles personnalisées. Les rôles et les
|
||||
autorisations sont définis sur deux niveaux :
|
||||
|
||||
1. [à l'échelle de l'instance](#1-instance-wide-roles-and-permissions)
|
||||
2. [par podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Rôles et autorisations à l'échelle de l'instance
|
||||
|
||||
### Rôles dans l’instance
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Autorisations dans l'instance
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Rôles et autorisations par podcast
|
||||
|
||||
### Rôles par podcast
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Permissions par podcast
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
158
docs/src/content/docs/fr2/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
---
|
||||
title: Images officielles de Docker
|
||||
---
|
||||
|
||||
Castopod envoie 3 images Docker au Hub Docker pendant son processus de
|
||||
construction automatisée :
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): une
|
||||
image castopod tout-en-un sous nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): le paquet
|
||||
d'applications avec toutes les dépendances de Castopod
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): une
|
||||
configuration Nginx pour Castopod
|
||||
|
||||
De plus, Castopod nécessite une base de données compatible avec MySQL. Une base
|
||||
de données Redis peut être ajoutée en tant que gestionnaire de cache.
|
||||
|
||||
## Tags supportés
|
||||
|
||||
- `développer` [unstable], la dernière version de la branche de développement
|
||||
- `beta` [stable], dernière version bêta
|
||||
- `beta` [stable], dernière version bêta
|
||||
- `1.x.x` [stable], version spécifique (depuis `1.0.0`)
|
||||
|
||||
## Exemple d'utilisation
|
||||
|
||||
1. Installez [docker](https://docs.docker.com/get-docker/) et
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
Vous devez adapter certaines variables à vos besoins (p. ex. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` et `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Exécutez `docker-compose up -d`, attendez qu'il s'initialise sur
|
||||
`https://castopod.example.com/cp-install` pour terminer la configuration de
|
||||
Castopod !
|
||||
|
||||
5. Vous êtes prêt, commencez à podcaster! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Nom de la variable | Type (`default`) | Par défaut |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Par défaut |
|
||||
| ---------------------- | --------------------- | ---------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
256
docs/src/content/docs/fr2/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
---
|
||||
title: Comment installer Castopod ?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod a été pensé pour être facile à installer. Que vous utilisiez un
|
||||
hébergement dédié ou mutualisé, vous pouvez l'installer sur la plupart des
|
||||
serveurs web compatibles avec PHP-MySQL.
|
||||
|
||||
<Aside>
|
||||
|
||||
Nous avons publié des images officielles Docker pour Castopod!
|
||||
|
||||
Si vous préférez utiliser Docker, vous pouvez sauter cette partie et aller
|
||||
directement à la [documentation Docker](./docker.md) pour Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Prérequis
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 ou supérieure ou MariaDB version 10.2 ou supérieure
|
||||
- Prise en charge HTTPS
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://www.php.net/manual/fr/intl.requirements.php)
|
||||
- [libcurl](https://www.php.net/manual/fr/curl.requirements.php)
|
||||
- [mbstring](https://www.php.net/manual/fr/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) avec **JPEG**,
|
||||
**PNG** et bibliothèques **WEBP**.
|
||||
- [exif](https://www.php.net/manual/fr/exif.installation.php)
|
||||
|
||||
De plus, assurez-vous que les extensions suivantes sont activées dans votre PHP
|
||||
:
|
||||
|
||||
- json (activé par défaut - ne le désactivez pas)
|
||||
- xml (activé par défaut - ne pas le désactiver)
|
||||
- [mysqlnd](https://www.php.net/manual/fr/mysqlnd.install.php)
|
||||
|
||||
### Base de données compatible MySQL
|
||||
|
||||
> Nous vous recommandons d'utiliser [MariaDB](https://mariadb.org).
|
||||
|
||||
Vous aurez besoin du nom d'hôte du serveur, du nom de la base de données, du nom
|
||||
d'utilisateur et du mot de passe pour terminer le processus d'installation. Si
|
||||
vous ne disposez pas de ces informations, veuillez contacter votre
|
||||
administrateur.
|
||||
|
||||
#### Droits d'accès
|
||||
|
||||
L'utilisateur doit avoir au moins ces droits d'accès sur la base de données pour
|
||||
que Castopod fonctionne : `CREATE`, `ALTER`, `DELETE`, `EXECUTE`,
|
||||
`INDEX`,`INSERT`, `SELECT`, `UPDATE`,`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Facultatif) FFmpeg v4.1.8 ou supérieur pour les clips vidéo
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 ou supérieure est requis si vous
|
||||
souhaitez générer des Clips Vidéo. Les extensions suivantes doivent être
|
||||
installées :
|
||||
|
||||
- bibliothèque **FreeType 2** pour
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Facultatif) Autres recommandations
|
||||
|
||||
- Redis pour de meilleures performances de cache.
|
||||
- CDN pour la mise en cache de fichiers statiques et de meilleures performances.
|
||||
- passerelle e-mail pour les mots de passe perdus.
|
||||
|
||||
## Instructions d'installation
|
||||
|
||||
### Pré-requis
|
||||
|
||||
0. Obtenez un serveur Web avec [les pré-requis](#requirements) installés
|
||||
1. Créer une base de données MySQL pour Castopod avec un utilisateur ayant les
|
||||
droits d'accès et les droits de modification (pour plus d'informations, cf.
|
||||
[base de données compatible MySQL](#mysql-compatible-database)).
|
||||
2. Activez HTTPS sur votre domaine avec un _certificat SSL_.
|
||||
3. Téléchargez et dézippez le dernier [paquet Castopod](https://castopod.org/)
|
||||
sur le serveur web si vous ne l'avez pas déjà fait.
|
||||
- ⚠️ Faites pointer la racine du document du serveur web vers le sous-dossier
|
||||
`public/` du dossier `castopod`.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (Méthode recommandée) Assistant d'installation
|
||||
|
||||
1. Exécutez le script d'installation de Castopod en vous rendant sur la page
|
||||
d'assistant d'installation (`https://votre_domain_name.com/cp-install`) dans
|
||||
votre navigateur Web favori.
|
||||
2. Suivez les instructions affichée.
|
||||
3. Commencer à baladodiffuser !
|
||||
|
||||
<Aside>
|
||||
|
||||
Le script d'installation crée un fichier `.env` à la racine du paquet. Si vous
|
||||
ne pouvez pas passer par l'assistant d'installation, vous pouvez créer et éditer
|
||||
le fichier `.env` manuellement en vous appuyant sur le fichier `.env.example`.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Paquets fournis par la communauté
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Installer avec YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Dépôt Github
|
||||
</a>
|
||||
|
||||
</div>
|
||||
26
docs/src/content/docs/fr2/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
title: Questions de sécurité
|
||||
---
|
||||
|
||||
Castopod est développé sur [CodeIgniter4](https://codeigniter.com/), un
|
||||
framework PHP qui encourage
|
||||
[de bonnes pratiques de sécurité](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
Pour garantir au mieux la sécurité de votre instance et éviter les attaques
|
||||
malveillantes, nous vous recommandons de mettre à jour les permissions des
|
||||
fichiers de Castopod après l'installation et chaque mise à jour (et éviter toute
|
||||
erreur de droit d'accès aux fichiers) :
|
||||
|
||||
- Le dossier `writable/` doit être accessible en **lecture** et en **écriture**.
|
||||
- Le dossier `public/media/` doit être accessible en **lecture** et en
|
||||
**écriture**.
|
||||
- tout autre fichier doit être accessible en **lecture seule**.
|
||||
|
||||
Par exemple, si vous utilisez Apache ou NGINX avec Ubuntu, vous pouvez exécuter
|
||||
les commandes suivantes :
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
110
docs/src/content/docs/fr2/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
---
|
||||
title: Comment installer Castopod ?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Après avoir installé Castopod, vous pouvez mettre à jour votre instance vers la
|
||||
dernière version afin de profiter des dernières fonctionnalités ✨, des
|
||||
corrections de bugs 🐛 et des améliorations de performance ⚡.
|
||||
|
||||
## Instructions de mise à jour
|
||||
|
||||
0. ⚠️ Avant toute mise à jour, nous vous recommandons fortement de sauvegarder
|
||||
vos fichiers Castopod et la base de données .
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. Sur votre serveur :
|
||||
|
||||
- Supprimer tous les fichiers sauf `.env` et `public/media`
|
||||
- Copiez les nouveaux fichiers du paquet téléchargé sur votre serveur
|
||||
|
||||
<Aside>
|
||||
|
||||
Vous devrez peut-être re-définir les autorisations de fichiers comme
|
||||
effectué durant le processus d'installation. Check
|
||||
[Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨Profitez de votre nouvelle instance, vous avez terminé !
|
||||
|
||||
<Aside>
|
||||
|
||||
Les versions peuvent être accompagnées d'instructions de mise à jour
|
||||
supplémentaires (cf. la
|
||||
[page des notes de versions](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?
|
||||
|
||||
</Aside>
|
||||
|
||||
## Mises à jour entièrement automatisées
|
||||
|
||||
> Prochainement... 👀
|
||||
|
||||
## Foire Aux Questions (FAQ)
|
||||
|
||||
### Où puis-je trouver ma version de Castopod ?
|
||||
|
||||
Allez dans votre panneau d'administration de Castopod, la version s'affiche en
|
||||
bas à gauche.
|
||||
|
||||
Vous pouvez également trouver la version dans l'application
|
||||
`> Configuration > Constantes.php` dossier.
|
||||
|
||||
### [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
Pas de problème ! Il suffit d'obtenir la dernière version comme décrit
|
||||
ci-dessus. Lorsque vous exécutez les instructions de mise à jour (4), lancez-les
|
||||
séquentiellement, de la plus ancienne à la plus récente.
|
||||
|
||||
> Vous devriez sauvegarder votre instance selon la date de votre dernière mise à
|
||||
> jour de Castopod.
|
||||
|
||||
Par exemple, si vous êtes en `v1.0.0-alpha.42` et souhaitez mettre à jour vers
|
||||
la `v1.0.0-beta.1` :
|
||||
|
||||
0. (fortement recommandé) Faites une sauvegarde de vos fichiers et de votre base
|
||||
de données.
|
||||
|
||||
1. Téléchargez la dernière version, écrasez vos fichiers tout en conservant
|
||||
`.env` et `public/media`.
|
||||
|
||||
2. Effectuez les instructions de mise à jour l'une après l'autre (de la plus
|
||||
ancienne à la plus récente).
|
||||
|
||||
3. ✨ Votre nouvelle instance est prête !
|
||||
|
||||
### Dois-je faire une sauvegarde avant de mettre à jour ?
|
||||
|
||||
Nous vous conseillons de le faire, afin de ne pas tout perdre si quelque chose
|
||||
se passait mal !
|
||||
|
||||
Plus généralement, nous vous conseillons de faire des sauvegardes régulières de
|
||||
vos fichiers Castopod et de votre base de données afin d'éviter de tout perdre…
|
||||
1416
docs/src/content/docs/fr2/index.mdx
Normal file
|
|
@ -0,0 +1,1416 @@
|
|||
---
|
||||
title: Bienvenue 👋
|
||||
description:
|
||||
Castopod est une plateforme d’hébergement gratuite & open-source conçue pour
|
||||
les podcasteurs qui veulent échanger et interagir avec leur public.
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod est une plateforme d’hébergement gratuite & open-source conçue pour les
|
||||
podcasteurs qui veulent échanger et interagir avec leur public.
|
||||
|
||||
Castopod est facile à installer et a été conçu avec
|
||||
[CodeIgniter4](https://codeigniter.com/), un framework PHP puissant de très
|
||||
petite taille.
|
||||
|
||||
<LinkCard title="Installer" href="./getting-started/install" />
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- 🌱 Libre, gratuit & open-source (Licence AGPL v3)
|
||||
- 🔐 focalisé sur la souveraineté des données : votre contenu, votre
|
||||
audience et vos statiistiques vous appartiennent, et à vous seulement
|
||||
- 🪄 Fonctionnalités du Podcasting 2.0 : GUID, verrouillage,
|
||||
transcriptions, financement, chapitres, géo-localisation, intervenants,
|
||||
extraits sonores, …
|
||||
- 💬 Réseau social intégré :
|
||||
- 🚀 Castopod fait partie du Fédivers, un réseau social décentralisé
|
||||
- ❤️ Créer des publications, partager, mettre en favori et commenter des
|
||||
épisodes
|
||||
- 📈 Statistiques intégrées :
|
||||
- ⚖️ Conforme GDPR / CCPA / LGPD
|
||||
- 🪙 Mesure d'audience IABv2
|
||||
- 🏡 Statistiques intégrées, aucune tierce partie intermédiaire
|
||||
- 📢 Outils de marketing intégrés :
|
||||
- ✅ Prêt pour le SEO (méta-tags open-graph, JSON-LD…)
|
||||
- 📱 PWA: installez comme application autonome
|
||||
- 🎨 Couleurs de thèmes personnalisables
|
||||
- 🎬 Générez des clips vidéo prêts à partager à partir d'épisodes
|
||||
- 🔉 Générez des extraits sonores
|
||||
- ▶️ Intégrer vos épisodes dans n'importe quel site web
|
||||
- 💸 Monétisation:
|
||||
- 🔗 Liens de financement
|
||||
- 📲 publicité “listen-to-click”
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Podcasts premium
|
||||
- 📡 Publiez vos épisodes partout avec RSS :
|
||||
- 📱 Sur tous les index et toutes les applications : Podcast Index,
|
||||
Podcasts Apple, Spotify, Google Podcasts, Deezer, Podcast Addict, Podfriend…
|
||||
- ⚡ Diffusez instantanément vos épisodes avec WebSub
|
||||
- 📥 Importation de Podcast : déménagez votre podcast existant vers
|
||||
Castopod
|
||||
- 📤 Déplacez votre podcast chez un autre hébergeur
|
||||
- 🔀 Multi-locataire : hébergez autant de podcasts que vous le souhaitez
|
||||
- 👥 Multi-utilisateur : ajoutez des contributeurs et définissez leurs
|
||||
rôles
|
||||
- 🌎 support de i18n : traduit en anglais, français, polonais, allemand,
|
||||
portugais, brésilien & espagnol… et
|
||||
[plus à l'avenir](https://translate.castopod.org)!
|
||||
|
||||
## Pourquoi Castopod ?
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparaison avec d'autres solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs Autres hébergeurs de podcasts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod peut être auto-hébergé et est la seule solution qui vous permet de
|
||||
garder le contrôle total sur ce que vous produisez. D'autre part, comme il est
|
||||
open-source, vous avez le pouvoir de le modifier comme vous le souhaitez.
|
||||
|
||||
- Castopod est la seule solution qui intègre aujourd'hui à la fois un réseau
|
||||
social décentralisé avec ActivityPub et des fonctionnalités de « Podcasting
|
||||
2.0 », réduisant ainsi l'écart entre les deux.
|
||||
|
||||
## Contribuer
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code de conduite
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Guide de contribution
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributeurs ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (pour dialoguer en temps réel avec les
|
||||
développeurs et la communauté)
|
||||
- [Suivi de problèmes](https://code.castopod.org/adaures/castopod/-/issues)
|
||||
(pour toute demande de nouvelle fonctionnalité ou rapport de bug)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Instance Mastodon)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer">
|
||||
<img
|
||||
src="/images/sponsors/adaures.svg"
|
||||
alt="Logo d'Ad Aures"
|
||||
class="h-16"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
href="https://nlnet.nl/project/Castopod/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src="/images/sponsors/nlnet.svg" alt="Logo de NLnet" class="h-16" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Licence
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
||||
[release]: https://code.castopod.org/adaures/castopod/-/releases
|
||||
[release-badge]: https://img.shields.io/gitlab/v/release/2?color=brightgreen&gitlab_url=https%3A%2F%2Fcode.castopod.org%2F&include_prereleases&label=release
|
||||
[license]: https://code.castopod.org/adaures/castopod/-/blob/beta/LICENSE.md
|
||||
[license-badge]: https://img.shields.io/github/license/ad-aures/castopod?color=blue
|
||||
[contributions]: https://code.castopod.org/adaures/castopod/-/issues
|
||||
[contributions-badge]: https://img.shields.io/badge/contributions-welcome-brightgreen.svg
|
||||
[semantic-release]: https://github.com/semantic-release/semantic-release
|
||||
[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
||||
[discord]: https://castopod.org/discord
|
||||
[discord-badge]: https://img.shields.io/badge/chat-on%20discord-7389D8
|
||||
[stars]: https://github.com/ad-aures/castopod/stargazers
|
||||
[stars-badge]: https://img.shields.io/github/stars/ad-aures/castopod?style=social
|
||||
[crowdin]: https://translate.castopod.org/project/castopod
|
||||
[crowdin-badge]: https://badges.crowdin.net/castopod/localized.svg
|
||||
84
docs/src/content/docs/gd/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| --------------- | --------------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Sàr-rianaire | Smachd gu lèir air Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manaidsear | Stiùireadh susbaint Chastopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Pod-chraoladair | Luchd-cleachdaidh coitcheann Chastopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| admin.access | ’S urrainn dhaibh raon rianachd Chastopod inntrigeadh. |
|
||||
| admin.settings | ’S urrainn dhaibh roghainnean Chastopod inntrigeadh. |
|
||||
| users.manage | ’S urrainn dhaibh luchdc-leachdaidh Chastopod a stiùireadh. |
|
||||
| persons.manage | ’S urrainn dhaibh daoine a stiùireadh. |
|
||||
| pages.manage | ’S urrainn dhaibh duilleagan a stiùireadh. |
|
||||
| podcasts.view | Chì iad a h-uile pod-chraoladh. |
|
||||
| podcasts.create | ’S urrainn dhaibh pod-chraolaidhean ùra a chruthachadh. |
|
||||
| podcasts.import | ’S urrainn dhaibh pod-chraolaidhean ion-phortadh. |
|
||||
| fediverse.manage-blocks | ’S urrainn dhaibh actairean/àrainnean a cho-shaoghail a bhacadh o eadar-ghabhail le Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| --------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Rianaire | Smachd gu lèir air air a’ phod-chraoladh #\{id\}. | \* |
|
||||
| Deasaiche | A’ stiùireadh susbaint is foillseachaidhean a’ phod-chraoladh #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Ùghdar | A’ stiùireadh susbaint a’ phod-chraolaidh #\{id\} ach gun chomas foillseachaidh. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Aoigh | Neach-cuideachaidh a’ phod-chraolaidh #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
||||
| view | Cead an deas-bhòrd agus anailiseachd a’ phod-chraolaidh #\{id\} a shealltainn. |
|
||||
| edit | ’S urrainn dhaibh am pod-chraoladh #\{id\} a dheasachadh. |
|
||||
| delete | ’S urrainn dhaibh am pod-chraoladh #\{id\} a sguabadh às. |
|
||||
| manage-import | ’S urrainn dhaibh am pod-chraoladh #\{id\} air ion-phortadh a shioncronachadh. |
|
||||
| manage-persons | ’S urrainn dhaibh na fo-sgrìobhaidhean air a’ phod-chraoladh #\{id\} a stiùireadh. |
|
||||
| manage-subscriptions | ’S urrainn dhaibh na fo-sgrìobhaidhean air a’ phod-chraoladh #\{id\} a stiùireadh. |
|
||||
| manage-contributors | ’S urrainn dhaibh an luchd-cuideachaidh aig a’ phod-chraoladh #\{id\} a stiùireadh. |
|
||||
| manage-platforms | ’S urrainn dhaibh ceanglaichean-ùrlair a’ phod-chraolaidh #\{id\} a shuidheachadh/a thoirt air falbh. |
|
||||
| manage-publications | ’S urrainn dhaibh am pod-chraoladh #\{id\} fhoillseachadh. |
|
||||
| manage-notifications | Chì iad brathan a’ phod-chraolaidh #\{id\} agus ’s urrainn dhaibh comharra a chur gun deach an leughadh. |
|
||||
| interact-as | ’S urrainn dhaibh eadar-ghabhail ’na phod-chraoladh #\{id\} airson annsachdan, co-roinneadh is freagairtean do phostaichean. |
|
||||
| episodes.view | Chì iad deas-bhùird is anailiseachd do dh’eapasodan a’ phod-chraolaidh #\{id\}. |
|
||||
| episodes.create | ’S urrainn dhaibh eapasodan a chruthachadh dhan phod-chraoladh #\{id\}. |
|
||||
| episodes.edit | ’S urrainn dhaibh eapasodan a’ phod-chraolaidh #\{id\} a dheasachadh. |
|
||||
| episodes.delete | ’S urrainn dhaibh eapasodan a’ phod-chraolaidh #\{id\} a sguabadh às. |
|
||||
| episodes.manage-persons | ’S urrainn dhaibh daoine nan eapasodan aig a’ phod-chraoladh #\{id\} a stiùireadh. |
|
||||
| episodes.manage-clips | ’S urrainn dhaibh cliopaichean video no blasan-fuaime aig a’ phod-chraoladh #\{id\} a stiùireadh. |
|
||||
| episodes.manage-publications | ’S urrainn dhaibh eapasodan is postaichean a’ phod-chraolaidh #\{id\} fhoillseachadh/neo-fhoillseachadh. |
|
||||
| episodes.manage-comments | ’S urrainn dhaibh beachdan air eapasod a’ phod-chraolaidh #\{id\} a chruthachadh/a thoirt air falbh. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Official Docker images
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
251
docs/src/content/docs/gd/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/gd/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1381
docs/src/content/docs/gd/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/gl/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ------------------------------------ | ------------------------------------------------------------------------------------------ |
|
||||
| Super Admin | Ten control completo sobre Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Xestora | Quen xestiona o contido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | Usuaria común de Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------ |
|
||||
| admin.access | Pode acceder á área de administración. |
|
||||
| admin.settings | Pode acceder aos axustes de Castopod. |
|
||||
| users.manage | Pode xestionar as usuarias de Castopod. |
|
||||
| persons.manage | Pode xestionar persoas. |
|
||||
| pages.manage | Pode xestionar páxinas. |
|
||||
| podcasts.view | Pode ver tódolos podcast. |
|
||||
| podcasts.create | Pode crear novos podcast. |
|
||||
| podcasts.import | Pode importar podcasts. |
|
||||
| fediverse.manage-blocks | Pode bloquear actores/dominios do fediverso evitando interactuar con Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| --------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Ten control total sobre o podcast #\{id\}. | \* |
|
||||
| Editora | Persoa que xestiona o contido e publicacións do podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Autora | Persoa que xestiona o contido do podcast #\{id\} pero non pode publicalo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Convidada | Contribuínte básico ao podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| view | Pode ver o taboleiro e estatísticas do podcast #\{id\}. |
|
||||
| edit | Pode editar o podcast #\{id\}. |
|
||||
| delete | Pode eliminar o podcast #\{id\}. |
|
||||
| manage-import | Pode sincronizar o podcast importado #\{id\}. |
|
||||
| manage-persons | Pode xestionar as subscricións do podcast #\{id\}. |
|
||||
| manage-subscriptions | Pode xestionar as subscricións do podcast #\{id\}. |
|
||||
| manage-contributors | Pode xestionar as contribucións ao podcast #\{id\}. |
|
||||
| manage-platforms | Pode establecer/eliminar ligazóns a plataformas do podcast #\{id\}. |
|
||||
| manage-publications | Pode publicar o podcast #\{id\}. |
|
||||
| manage-notifications | Pode ver e marcar as notificacións como lidas no podcast #\{id\}. |
|
||||
| interact-as | Pode actuar como o podcast #\{id\} para compartir, favorecer ou responder a publicacións. |
|
||||
| episodes.view | Pode ver os taboleiros e estatísticas dos episodios do podcast #\{id\}. |
|
||||
| episodes.create | Pode crear episodios para o podcast #\{id\}. |
|
||||
| episodes.edit | Pode editar os episodios do podcast #\{id\}. |
|
||||
| episodes.delete | Pode eliminar episodios do podcast #\{id\}. |
|
||||
| episodes.manage-persons | Pode xestionar as persoas do episodio do podcast #\{id\}. |
|
||||
| episodes.manage-clips | Pode xestionar os clips de vídeo e extractos de audio do podcast #\{id\}. |
|
||||
| episodes.manage-publications | Pode publicar/retirar episodios e publicacións do podcast #\{id\}. |
|
||||
| episodes.manage-comments | Pode crear/eliminar comentarios dos episodios do podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
157
docs/src/content/docs/gl/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
---
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
|
||||
with all of Castopod dependencies
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
|
||||
Nginx configuration for Castopod
|
||||
|
||||
Additionally, Castopod requires a MySQL-compatible database. A Redis database
|
||||
can be added as a cache handler.
|
||||
|
||||
## Supported tags
|
||||
|
||||
- `develop` [unstable], latest development branch build
|
||||
- `beta` [stable], latest beta version build
|
||||
- `latest` [stable], latest version build
|
||||
- `1.x.x` [stable], specific version build (since `1.0.0`)
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Install [docker](https://docs.docker.com/get-docker/) and
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Create a `docker-compose.yml` file with the following:
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Run `docker-compose up -d`, wait for it to initialize and head on to
|
||||
`https://castopod.example.com/cp-install` to finish setting up Castopod!
|
||||
|
||||
5. You're all set, start podcasting! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Variable name | Type (`default`) | Default |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------------- | --------------------- | ------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
251
docs/src/content/docs/gl/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/gl/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
108
docs/src/content/docs/gl/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
improvements ⚡.
|
||||
|
||||
## Update instructions
|
||||
|
||||
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
|
||||
database.
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. On your server:
|
||||
|
||||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
> Coming soon... 👀
|
||||
|
||||
## Frequently asked questions (FAQ)
|
||||
|
||||
### Where can I find my Castopod version?
|
||||
|
||||
Go to your Castopod admin panel, the version is displayed on the bottom left
|
||||
corner.
|
||||
|
||||
Alternatively, you can find the version in the `app > Config > Constants.php`
|
||||
file.
|
||||
|
||||
### I haven't updated my instance in a long time… What should I do?
|
||||
|
||||
No problem! Just get the latest release as described above. Only, when going
|
||||
through the release instructions (4), perform them sequentially, from the oldest
|
||||
to the newest.
|
||||
|
||||
> You may want to backup your instance depending on how long you haven't updated
|
||||
> Castopod.
|
||||
|
||||
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
|
||||
`v1.0.0-beta.1`:
|
||||
|
||||
0. (highly recommended) Make a backup of your files and database.
|
||||
|
||||
1. Download the latest release, overwrite your files whilst keeping `.env` and
|
||||
`public/media`.
|
||||
|
||||
2. Go through each release update instructions sequentially (from oldest to
|
||||
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
|
||||
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
|
||||
|
||||
3. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
### Should I make a backup before updating?
|
||||
|
||||
We advise you do, so you don't lose everything if anything goes wrong!
|
||||
|
||||
More generally, we advise you make regular backups of your Castopod files and
|
||||
database to prevent you from losing it all…
|
||||
1381
docs/src/content/docs/gl/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
sidebarDepth: 3
|
||||
---
|
||||
|
||||
# Authentication & Authorization
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
|
|
@ -15,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
|
||||
### Instance roles
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
|
|
@ -23,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
<!-- AUTH-INSTANCE-ROLES-LIST:END -->
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
|
|
@ -41,47 +38,47 @@ coupled with custom rules. Roles and permissions are defined at two levels:
|
|||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
<!-- AUTH-INSTANCE-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #{id}. | \* |
|
||||
| Editor | Manages content and publications of podcast #{id}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #{id} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #{id}. | view, episodes.view |
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
<!-- AUTH-PODCAST-ROLES-LIST:END -->
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------ |
|
||||
| view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| edit | Can edit podcast #{id}. |
|
||||
| delete | Can delete podcast #{id}. |
|
||||
| manage-import | Can synchronize imported podcast #{id}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #{id}. |
|
||||
| manage-contributors | Can manage contributors of podcast #{id}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #{id}. |
|
||||
| manage-publications | Can publish podcast #{id}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #{id}. |
|
||||
| interact-as | Can interact as the podcast #{id} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboard and analytics of podcast #{id}. |
|
||||
| episodes.create | Can create episodes for podcast #{id}. |
|
||||
| episodes.edit | Can edit podcast #{id}. |
|
||||
| episodes.delete | Can delete podcast #{id}. |
|
||||
| episodes.manage-persons | Can manage subscriptions of podcast #{id}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #{id}. |
|
||||
| episodes.manage-publications | Can publish podcast #{id}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #{id}. |
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
<!-- AUTH-PODCAST-PERMISSIONS-LIST:END -->
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
157
docs/src/content/docs/id/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
---
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
|
||||
with all of Castopod dependencies
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
|
||||
Nginx configuration for Castopod
|
||||
|
||||
Additionally, Castopod requires a MySQL-compatible database. A Redis database
|
||||
can be added as a cache handler.
|
||||
|
||||
## Supported tags
|
||||
|
||||
- `develop` [unstable], latest development branch build
|
||||
- `beta` [stable], latest beta version build
|
||||
- `latest` [stable], latest version build
|
||||
- `1.x.x` [stable], specific version build (since `1.0.0`)
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Install [docker](https://docs.docker.com/get-docker/) and
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Create a `docker-compose.yml` file with the following:
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Run `docker-compose up -d`, wait for it to initialize and head on to
|
||||
`https://castopod.example.com/cp-install` to finish setting up Castopod!
|
||||
|
||||
5. You're all set, start podcasting! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Variable name | Type (`default`) | Default |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------------- | --------------------- | ------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
251
docs/src/content/docs/id/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/id/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
108
docs/src/content/docs/id/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
improvements ⚡.
|
||||
|
||||
## Update instructions
|
||||
|
||||
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
|
||||
database.
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. On your server:
|
||||
|
||||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
> Coming soon... 👀
|
||||
|
||||
## Frequently asked questions (FAQ)
|
||||
|
||||
### Where can I find my Castopod version?
|
||||
|
||||
Go to your Castopod admin panel, the version is displayed on the bottom left
|
||||
corner.
|
||||
|
||||
Alternatively, you can find the version in the `app > Config > Constants.php`
|
||||
file.
|
||||
|
||||
### I haven't updated my instance in a long time… What should I do?
|
||||
|
||||
No problem! Just get the latest release as described above. Only, when going
|
||||
through the release instructions (4), perform them sequentially, from the oldest
|
||||
to the newest.
|
||||
|
||||
> You may want to backup your instance depending on how long you haven't updated
|
||||
> Castopod.
|
||||
|
||||
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
|
||||
`v1.0.0-beta.1`:
|
||||
|
||||
0. (highly recommended) Make a backup of your files and database.
|
||||
|
||||
1. Download the latest release, overwrite your files whilst keeping `.env` and
|
||||
`public/media`.
|
||||
|
||||
2. Go through each release update instructions sequentially (from oldest to
|
||||
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
|
||||
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
|
||||
|
||||
3. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
### Should I make a backup before updating?
|
||||
|
||||
We advise you do, so you don't lose everything if anything goes wrong!
|
||||
|
||||
More generally, we advise you make regular backups of your Castopod files and
|
||||
database to prevent you from losing it all…
|
||||
1391
docs/src/content/docs/id/index.mdx
Normal file
|
|
@ -0,0 +1,1391 @@
|
|||
---
|
||||
title: Selamat Datang 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod adalah platform hosting yang gratis & sumber terbuka untuk pembuat
|
||||
siniar yang ingin berinteraksi dengan pendengar mereka.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Pasang" href="./getting-started/install" />
|
||||
|
||||
## Fitur-fitur
|
||||
|
||||
- 🌱 Gratis & sumber terbuka (Lisensi AGPL v3)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Jaringan sosial bawaan:
|
||||
- 🚀 Castopod termasuk bagian dari Fediverse, jaringan sosial
|
||||
terdesentralisasi
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Analitik bawaan:
|
||||
- ⚖️ Sesuai dengan GDPR / CCPA / LGPD
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Terbitkan episode-episode Anda dimana pun dengan RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivasi
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Perbandingan dengan solusi lain
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Berkontribusi
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Panduan berkontribusi
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Kontributor-kontributor ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Kontak
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsor-sponsor
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
<div class="flex flex-wrap gap-x-16 gap-y-8">
|
||||
<a href="https://adaures.com/" target="_blank" rel="noopener noreferrer">
|
||||
<img src="/images/sponsors/adaures.svg" alt="Logo Ad Aures" class="h-16" />
|
||||
</a>
|
||||
<a
|
||||
href="https://nlnet.nl/project/Castopod/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src="/images/sponsors/nlnet.svg" alt="Logo NLnet" class="h-16" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Lisensi
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
85
docs/src/content/docs/it/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
title: Autenticazione & Autorizzazione
|
||||
---
|
||||
|
||||
Castopod gestisce l'autenticazione e l'autorizzazione utilizzando
|
||||
`codeigniter/shield` abbinato a regole personalizzate. Ruoli e permessi sono
|
||||
definiti a due livelli:
|
||||
|
||||
1. [intera istanza](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Ruoli e permessi per l'intera istanza
|
||||
|
||||
### Ruoli dell'istanza
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Permessi istanza
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per i ruoli e le autorizzazioni del podcast
|
||||
|
||||
### Per i ruoli del podcast
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Autorizzazioni per podcast
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
157
docs/src/content/docs/it/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
---
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
|
||||
with all of Castopod dependencies
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
|
||||
Nginx configuration for Castopod
|
||||
|
||||
Additionally, Castopod requires a MySQL-compatible database. A Redis database
|
||||
can be added as a cache handler.
|
||||
|
||||
## Supported tags
|
||||
|
||||
- `develop` [unstable], latest development branch build
|
||||
- `beta` [stable], latest beta version build
|
||||
- `latest` [stable], latest version build
|
||||
- `1.x.x` [stable], specific version build (since `1.0.0`)
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Install [docker](https://docs.docker.com/get-docker/) and
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Create a `docker-compose.yml` file with the following:
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Run `docker-compose up -d`, wait for it to initialize and head on to
|
||||
`https://castopod.example.com/cp-install` to finish setting up Castopod!
|
||||
|
||||
5. You're all set, start podcasting! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Variable name | Type (`default`) | Default |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------------- | --------------------- | ------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
251
docs/src/content/docs/it/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/it/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
---
|
||||
title: Update
|
||||
sidebarDepth: 3
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
# How to update Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
|
|
@ -36,12 +35,12 @@ improvements ⚡.
|
|||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
|
@ -54,7 +53,7 @@ improvements ⚡.
|
|||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
|
@ -62,7 +61,7 @@ Releases may come with additional update instructions (see
|
|||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
1349
docs/src/content/docs/it/index.mdx
Normal file
|
|
@ -0,0 +1,1349 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](./contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/ja/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
157
docs/src/content/docs/ja/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
---
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
|
||||
with all of Castopod dependencies
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
|
||||
Nginx configuration for Castopod
|
||||
|
||||
Additionally, Castopod requires a MySQL-compatible database. A Redis database
|
||||
can be added as a cache handler.
|
||||
|
||||
## Supported tags
|
||||
|
||||
- `develop` [unstable], latest development branch build
|
||||
- `beta` [stable], latest beta version build
|
||||
- `latest` [stable], latest version build
|
||||
- `1.x.x` [stable], specific version build (since `1.0.0`)
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Install [docker](https://docs.docker.com/get-docker/) and
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Create a `docker-compose.yml` file with the following:
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Run `docker-compose up -d`, wait for it to initialize and head on to
|
||||
`https://castopod.example.com/cp-install` to finish setting up Castopod!
|
||||
|
||||
5. You're all set, start podcasting! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Variable name | Type (`default`) | Default |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------------- | --------------------- | ------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
|
@ -1,21 +1,20 @@
|
|||
---
|
||||
title: Installation
|
||||
sidebarDepth: 3
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
# How to install Castopod?
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
::: tip Note
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
@ -46,13 +45,13 @@ Additionally, make sure that the following extensions are enabled in your PHP:
|
|||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
::: warning Warning
|
||||
<Aside type="caution">
|
||||
|
||||
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
|
||||
will break with the previous MySQL v5.6 for example as its end of life was on
|
||||
February 5, 2021.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
|
|
@ -115,13 +114,13 @@ want to generate Video Clips. The following extensions must be installed:
|
|||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
::: info Note
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
:::
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
|
|
@ -226,13 +225,35 @@ self-hosting for you.
|
|||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a href="https://install-app.yunohost.org/?app=castopod" target="_blank" rel="noopener noreferrer">
|
||||
<img src="https://install-app.yunohost.org/install-with-yunohost.svg" alt="Install Castopod with YunoHost" class="align-middle" />
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/YunoHost-Apps/castopod_ynh" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"><svg
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em"
|
||||
class="text-xl"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z"/></svg>Github
|
||||
Repo</a>
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/ja/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
108
docs/src/content/docs/ja/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
improvements ⚡.
|
||||
|
||||
## Update instructions
|
||||
|
||||
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
|
||||
database.
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. On your server:
|
||||
|
||||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
> Coming soon... 👀
|
||||
|
||||
## Frequently asked questions (FAQ)
|
||||
|
||||
### Where can I find my Castopod version?
|
||||
|
||||
Go to your Castopod admin panel, the version is displayed on the bottom left
|
||||
corner.
|
||||
|
||||
Alternatively, you can find the version in the `app > Config > Constants.php`
|
||||
file.
|
||||
|
||||
### I haven't updated my instance in a long time… What should I do?
|
||||
|
||||
No problem! Just get the latest release as described above. Only, when going
|
||||
through the release instructions (4), perform them sequentially, from the oldest
|
||||
to the newest.
|
||||
|
||||
> You may want to backup your instance depending on how long you haven't updated
|
||||
> Castopod.
|
||||
|
||||
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
|
||||
`v1.0.0-beta.1`:
|
||||
|
||||
0. (highly recommended) Make a backup of your files and database.
|
||||
|
||||
1. Download the latest release, overwrite your files whilst keeping `.env` and
|
||||
`public/media`.
|
||||
|
||||
2. Go through each release update instructions sequentially (from oldest to
|
||||
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
|
||||
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
|
||||
|
||||
3. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
### Should I make a backup before updating?
|
||||
|
||||
We advise you do, so you don't lose everything if anything goes wrong!
|
||||
|
||||
More generally, we advise you make regular backups of your Castopod files and
|
||||
database to prevent you from losing it all…
|
||||
1349
docs/src/content/docs/ja/index.mdx
Normal file
|
|
@ -0,0 +1,1349 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](./contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/kk/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||
157
docs/src/content/docs/kk/getting-started/docker.mdx
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
title: Official Docker images
|
||||
---
|
||||
|
||||
Castopod pushes 3 Docker images to the Docker Hub during its automated build
|
||||
process:
|
||||
|
||||
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
|
||||
in one castopod image using nginx unit
|
||||
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
|
||||
with all of Castopod dependencies
|
||||
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
|
||||
Nginx configuration for Castopod
|
||||
|
||||
Additionally, Castopod requires a MySQL-compatible database. A Redis database
|
||||
can be added as a cache handler.
|
||||
|
||||
## Supported tags
|
||||
|
||||
- `develop` [unstable], latest development branch build
|
||||
- `beta` [stable], latest beta version build
|
||||
- `latest` [stable], latest version build
|
||||
- `1.x.x` [stable], specific version build (since `1.0.0`)
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Install [docker](https://docs.docker.com/get-docker/) and
|
||||
[docker-compose](https://docs.docker.com/compose/install/)
|
||||
2. Create a `docker-compose.yml` file with the following:
|
||||
|
||||
```yml
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: castopod/castopod:latest
|
||||
container_name: "castopod-app"
|
||||
volumes:
|
||||
- castopod-media:/var/www/castopod/public/media
|
||||
environment:
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
CP_BASEURL: "https://castopod.example.com"
|
||||
CP_ANALYTICS_SALT: changeme
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_REDIS_PASSWORD: changeme
|
||||
networks:
|
||||
- castopod-app
|
||||
- castopod-db
|
||||
ports:
|
||||
- 8000:8000
|
||||
restart: unless-stopped
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.5
|
||||
container_name: "castopod-mariadb"
|
||||
networks:
|
||||
- castopod-db
|
||||
volumes:
|
||||
- castopod-db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
MYSQL_DATABASE: castopod
|
||||
MYSQL_USER: castopod
|
||||
MYSQL_PASSWORD: changeme
|
||||
restart: unless-stopped
|
||||
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: "castopod-redis"
|
||||
command: --requirepass changeme
|
||||
volumes:
|
||||
- castopod-cache:/data
|
||||
networks:
|
||||
- castopod-app
|
||||
|
||||
volumes:
|
||||
castopod-media:
|
||||
castopod-db:
|
||||
castopod-cache:
|
||||
|
||||
networks:
|
||||
castopod-app:
|
||||
castopod-db:
|
||||
```
|
||||
|
||||
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
|
||||
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
|
||||
|
||||
3. Setup a reverse proxy for TLS (SSL/HTTPS)
|
||||
|
||||
TLS is mandatory for ActivityPub to work. This job can easily be handled by
|
||||
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
|
||||
|
||||
```
|
||||
#castopod
|
||||
castopod.example.com {
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
```
|
||||
|
||||
4. Run `docker-compose up -d`, wait for it to initialize and head on to
|
||||
`https://castopod.example.com/cp-install` to finish setting up Castopod!
|
||||
|
||||
5. You're all set, start podcasting! 🎙️🚀
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- **castopod/castopod** and **castopod/app**
|
||||
|
||||
| Variable name | Type (`default`) | Default |
|
||||
| ------------------------------------- | ----------------------- | ---------------- |
|
||||
| **`CP_BASEURL`** | string | `undefined` |
|
||||
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
|
||||
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
|
||||
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
|
||||
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
|
||||
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
|
||||
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
|
||||
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
|
||||
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
|
||||
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
|
||||
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
|
||||
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
|
||||
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_REDIS_PORT`** | ?number | `6379` |
|
||||
| **`CP_REDIS_DATABASE`** | ?number | `0` |
|
||||
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
|
||||
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
|
||||
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
|
||||
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
|
||||
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
|
||||
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
|
||||
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
|
||||
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
|
||||
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
|
||||
- **castopod/web-server**
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------------- | --------------------- | ------- |
|
||||
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
|
||||
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
|
||||
| **`CP_TIMEOUT`** | ?number | `900` |
|
||||
251
docs/src/content/docs/kk/getting-started/install.mdx
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
title: How to install Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod was thought-out to be easy to install. Whether using dedicated or
|
||||
shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
||||
|
||||
<Aside>
|
||||
|
||||
We've released official Docker images for Castopod!
|
||||
|
||||
If you prefer using Docker, you may skip this and go straight to the
|
||||
[docker documentation](./docker.md) for Castopod.
|
||||
|
||||
</Aside>
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.1 or higher
|
||||
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.1 or higher
|
||||
|
||||
PHP version 8.1 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
|
||||
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
|
||||
**PNG** and **WEBP** libraries.
|
||||
- [exif](https://www.php.net/manual/en/exif.installation.php)
|
||||
|
||||
Additionally, make sure that the following extensions are enabled in your PHP:
|
||||
|
||||
- json (enabled by default - don't turn it off)
|
||||
- xml (enabled by default - don't turn it off)
|
||||
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
|
||||
|
||||
### MySQL compatible database
|
||||
|
||||
> We recommend using [MariaDB](https://mariadb.org).
|
||||
|
||||
You will need the server hostname, database name, username and password to
|
||||
complete the installation process. If you do not have these, please contact your
|
||||
server administrator.
|
||||
|
||||
#### Privileges
|
||||
|
||||
User must have at least these privileges on the database for Castopod to work:
|
||||
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
|
||||
`REFERENCES`, `CREATE VIEW`.
|
||||
|
||||
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
|
||||
|
||||
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
|
||||
want to generate Video Clips. The following extensions must be installed:
|
||||
|
||||
- **FreeType 2** library for
|
||||
[gd](https://www.php.net/manual/en/image.installation.php).
|
||||
|
||||
### (Optional) Other recommendations
|
||||
|
||||
- Redis for better cache performances.
|
||||
- CDN for static files caching and better performances.
|
||||
- e-mail gateway for lost passwords.
|
||||
|
||||
## Install instructions
|
||||
|
||||
### Pre-requisites
|
||||
|
||||
0. Get a Web Server with [requirements](#requirements) installed
|
||||
1. Create a MySQL database for Castopod with a user having access and
|
||||
modification privileges (for more info, see
|
||||
[MySQL compatible database](#mysql-compatible-database)).
|
||||
2. Activate HTTPS on your domain with an _SSL certificate_.
|
||||
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
|
||||
the web server if you haven’t already.
|
||||
- ⚠️ Set the web server document root to the `public/` sub-folder within the
|
||||
`castopod` folder.
|
||||
4. Add **cron tasks** on your web server for various background processes
|
||||
(replace the paths accordingly):
|
||||
|
||||
```bash
|
||||
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Note** - If you do not add this cron task, the following Castopod features
|
||||
will not work:
|
||||
|
||||
- Importing a podcast from an existing RSS feed
|
||||
- Broadcasting social activities to your followers in the fediverse
|
||||
- Broadcasting episodes to open hubs using
|
||||
[WebSub](https://en.wikipedia.org/wiki/WebSub)
|
||||
- Generating video clips -
|
||||
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
|
||||
|
||||
### (recommended) Install Wizard
|
||||
|
||||
1. Run the Castopod install script by going to the install wizard page
|
||||
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
|
||||
2. Follow the instructions on your screen.
|
||||
3. Start podcasting!
|
||||
|
||||
<Aside>
|
||||
|
||||
The install script writes a `.env` file in the package root. If you cannot go
|
||||
through the install wizard, you can create and edit the `.env` file manually
|
||||
based on the `.env.example` file.
|
||||
|
||||
</Aside>
|
||||
|
||||
### Using CLI
|
||||
|
||||
1. Create a `.env` file in the package root based on the `.env.example` file.
|
||||
2. Initialize the database using:
|
||||
|
||||
```sh
|
||||
php spark install:init-database
|
||||
```
|
||||
|
||||
3. Create the superadmin user using:
|
||||
|
||||
```sh
|
||||
php spark install:create-superadmin
|
||||
```
|
||||
|
||||
4. Head on to your admin gateway to start podcasting!
|
||||
|
||||
### Email/SMTP setup
|
||||
|
||||
Email configuration is required for some features to work properly (eg.
|
||||
retrieving your forgotten password, sending instructions to premium subscribers,
|
||||
…)
|
||||
|
||||
You may add your email configuration in your instance's `.env` like so:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
email.fromEmail="your_email_address"
|
||||
email.SMTPHost="your_smtp_host"
|
||||
email.SMTPUser="your_smtp_user"
|
||||
email.SMTPPass="your_smtp_password"
|
||||
```
|
||||
|
||||
#### Email config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ---------------- | -------------------- | ------------ |
|
||||
| **`fromEmail`** | string | `undefined` |
|
||||
| **`fromName`** | string | `"Castopod"` |
|
||||
| **`SMTPHost`** | string | `undefined` |
|
||||
| **`SMTPUser`** | string | `undefined` |
|
||||
| **`SMTPPass`** | string | `undefined` |
|
||||
| **`SMTPPort`** | number | `25` |
|
||||
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
|
||||
|
||||
### Media storage
|
||||
|
||||
By default, files are saved to the `public/media` folder using the file system.
|
||||
If you need to relocate the `media` folder to a different location, you can
|
||||
specify it in your `.env` file as shown below:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.root="media"
|
||||
media.storage="/mnt/storage"
|
||||
```
|
||||
|
||||
In this example, the files will be saved to the /mnt/storage/media folder. Make
|
||||
sure to also update your web server configuration to reflect this change.
|
||||
|
||||
### S3
|
||||
|
||||
If you prefer storing your media files on an S3 compatible storage, you may
|
||||
specify it in your `.env`:
|
||||
|
||||
```ini
|
||||
# […]
|
||||
|
||||
media.fileManager="s3"
|
||||
media.s3.endpoint="your_s3_host"
|
||||
media.s3.key="your_s3_key"
|
||||
media.s3.secret="your_s3_secret"
|
||||
media.s3.region="your_s3_region"
|
||||
```
|
||||
|
||||
#### S3 config options
|
||||
|
||||
| Variable name | Type | Default |
|
||||
| ----------------------- | ------- | ----------- |
|
||||
| **`endpoint`** | string | `undefined` |
|
||||
| **`key`** | string | `undefined` |
|
||||
| **`secret`** | string | `undefined` |
|
||||
| **`region`** | string | `undefined` |
|
||||
| **`bucket`** | string | `castopod` |
|
||||
| **`protocol`** | number | `undefined` |
|
||||
| **`pathStyleEndpoint`** | boolean | `false` |
|
||||
| **`keyPrefix`** | string | `undefined` |
|
||||
|
||||
## Community packages
|
||||
|
||||
If you don't want to bother with installing Castopod manually, you may use one
|
||||
of the packages created and maintained by the open-source community.
|
||||
|
||||
### Install with YunoHost
|
||||
|
||||
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
|
||||
made up of free and open-source software packages. It manages the hardships of
|
||||
self-hosting for you.
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4">
|
||||
|
||||
<a
|
||||
href="https://install-app.yunohost.org/?app=castopod"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://install-app.yunohost.org/install-with-yunohost.svg"
|
||||
alt="Install Castopod with YunoHost"
|
||||
class="align-middle"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="https://github.com/YunoHost-Apps/castopod_ynh"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width="1em"
|
||||
height="1em"
|
||||
class="text-xl"
|
||||
>
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
|
||||
</svg>
|
||||
Github Repo
|
||||
</a>
|
||||
|
||||
</div>
|
||||
24
docs/src/content/docs/kk/getting-started/security.mdx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Security concerns
|
||||
---
|
||||
|
||||
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
|
||||
framework that encourages
|
||||
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
|
||||
|
||||
To maximize your instance's safety and prevent any malicious attack, we
|
||||
recommend you update all your Castopod files permissions after installation or
|
||||
updates (to avoid any prior permission error):
|
||||
|
||||
- `writable/` folder must be **readable** and **writable**.
|
||||
- `public/media/` folder must be **readable** and **writable**.
|
||||
- any other file must be set to **readonly**.
|
||||
|
||||
For instance, if you are using Apache or NGINX with Ubuntu you may do the
|
||||
following:
|
||||
|
||||
```bash
|
||||
sudo chown -R root:root /path/to/castopod
|
||||
sudo chown -R www-data:www-data /path/to/castopod/writable
|
||||
sudo chown -R www-data:www-data /path/to/castopod/public/media
|
||||
```
|
||||
108
docs/src/content/docs/kk/getting-started/update.mdx
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
title: How to update Castopod?
|
||||
---
|
||||
|
||||
import { Aside } from "@astrojs/starlight/components";
|
||||
|
||||
After installing Castopod, you may want to update your instance to the latest
|
||||
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
|
||||
improvements ⚡.
|
||||
|
||||
## Update instructions
|
||||
|
||||
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
|
||||
database.
|
||||
|
||||
- cf.
|
||||
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
|
||||
|
||||
1. Go to the
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
|
||||
see if your instance is up to date with the latest Castopod version
|
||||
|
||||
- cf.
|
||||
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
|
||||
|
||||
2. Download the latest release package named `Castopod Package`, you may choose
|
||||
between the `zip` or `tar.gz` archives
|
||||
|
||||
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
|
||||
- Note that you can also download the latest package from
|
||||
[castopod.org](https://castopod.org/)
|
||||
|
||||
3. On your server:
|
||||
|
||||
- Remove all files except `.env` and `public/media`
|
||||
- Copy the new files from the downloaded package into your server
|
||||
|
||||
<Aside>
|
||||
|
||||
You may need to reset files permissions as during the install process.
|
||||
Check [Security Concerns](./security.md).
|
||||
|
||||
</Aside>
|
||||
|
||||
4. Update your database schema from your `Castopod Admin` > `About` page or by
|
||||
running:
|
||||
|
||||
```bash
|
||||
php spark castopod:database-update
|
||||
```
|
||||
|
||||
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
|
||||
`Housekeeping`
|
||||
6. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
<Aside>
|
||||
|
||||
Releases may come with additional update instructions (see
|
||||
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
|
||||
|
||||
- cf.
|
||||
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
|
||||
|
||||
</Aside>
|
||||
|
||||
## Fully Automated updates
|
||||
|
||||
> Coming soon... 👀
|
||||
|
||||
## Frequently asked questions (FAQ)
|
||||
|
||||
### Where can I find my Castopod version?
|
||||
|
||||
Go to your Castopod admin panel, the version is displayed on the bottom left
|
||||
corner.
|
||||
|
||||
Alternatively, you can find the version in the `app > Config > Constants.php`
|
||||
file.
|
||||
|
||||
### I haven't updated my instance in a long time… What should I do?
|
||||
|
||||
No problem! Just get the latest release as described above. Only, when going
|
||||
through the release instructions (4), perform them sequentially, from the oldest
|
||||
to the newest.
|
||||
|
||||
> You may want to backup your instance depending on how long you haven't updated
|
||||
> Castopod.
|
||||
|
||||
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
|
||||
`v1.0.0-beta.1`:
|
||||
|
||||
0. (highly recommended) Make a backup of your files and database.
|
||||
|
||||
1. Download the latest release, overwrite your files whilst keeping `.env` and
|
||||
`public/media`.
|
||||
|
||||
2. Go through each release update instructions sequentially (from oldest to
|
||||
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
|
||||
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
|
||||
|
||||
3. ✨ Enjoy your fresh instance, you're all done!
|
||||
|
||||
### Should I make a backup before updating?
|
||||
|
||||
We advise you do, so you don't lose everything if anything goes wrong!
|
||||
|
||||
More generally, we advise you make regular backups of your Castopod files and
|
||||
database to prevent you from losing it all…
|
||||
1381
docs/src/content/docs/kk/index.mdx
Normal file
|
|
@ -0,0 +1,1381 @@
|
|||
---
|
||||
title: Welcome 👋
|
||||
---
|
||||
|
||||
import { LinkCard } from "@astrojs/starlight/components";
|
||||
|
||||
Castopod is a free & open-source hosting platform made for podcasters who want
|
||||
engage and interact with their audience.
|
||||
|
||||
Castopod is easy to install and was built on top of
|
||||
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
|
||||
small footprint.
|
||||
|
||||
<LinkCard title="Install" href="./getting-started/install" />
|
||||
|
||||
## Features
|
||||
|
||||
- 🌱 Free & open-source (AGPL v3 License)
|
||||
- 🔐 Focused on data sovereignty: your content, audience, and analytics
|
||||
belong to you, and you only
|
||||
- 🪄 Podcasting 2.0 features: GUID, locked, transcripts, funding,
|
||||
chapters, location, persons, soundbites, …
|
||||
- 💬 Built-in social network:
|
||||
- 🚀 Castopod is part of the Fediverse, a decentralized social network
|
||||
- ❤️ Create posts, share, favourite, and comment on episodes
|
||||
- 📈 Built-in analytics:
|
||||
- ⚖️ GDPR / CCPA / LGPD compliant
|
||||
- 🪙 Standard IABv2 audience measurement
|
||||
- 🏡 On-premises analytics, no third party involved
|
||||
- 📢 Built-in marketing tools:
|
||||
- ✅ SEO ready (open-graph meta-tags, JSON-LD, …)
|
||||
- 📱 PWA: install as a standalone app
|
||||
- 🎨 Customizable theme colors
|
||||
- 🎬 Generate ready-to-share Video clips from episodes
|
||||
- 🔉 Generate soundbites
|
||||
- ▶️ Embeddable player, embed your episodes on any website
|
||||
- 💸 Monetization:
|
||||
- 🔗 Funding links
|
||||
- 📲 listen-to-click ads
|
||||
- 🤝 value4value / WebMonetization
|
||||
- 💎 Premium podcasts
|
||||
- 📡 Publish your episodes everywhere with RSS:
|
||||
- 📱 On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
|
||||
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
|
||||
- ⚡ Broadcast your episodes instantly with WebSub
|
||||
- 📥 Podcast import: move your existing podcast into Castopod
|
||||
- 📤 Move your podcast out of Castopod
|
||||
- 🔀 Multi-tenant: host as many podcasts as you want
|
||||
- 👥 Multi-user: add contributors and set roles
|
||||
- 🌎 i18n support: translated in English, French, Polish, German,
|
||||
Brazilian Portuguese & Spanish… with
|
||||
[more to come](https://translate.castopod.org)!
|
||||
|
||||
## Motivation
|
||||
|
||||
The podcasting ecosystem is decentralized by nature: you can create your podcast
|
||||
as an RSS file, publish it on the web and have it shared everywhere online.
|
||||
|
||||
It is in fact one of the only media to have stayed this way for a long time.
|
||||
|
||||
As usages are evolving, more and more people are getting into podcasts: whether
|
||||
it is creators finding new ways to share their ideas, or listeners in the search
|
||||
for better content.
|
||||
|
||||
With podcasting becoming more widely used, some companies are trying to shift it
|
||||
towards a more controlled and centralized medium.
|
||||
|
||||
Castopod was created in an effort to provide an open and sustainable alternative
|
||||
to hosting your podcasts, promoting decentralization to ensure that podcasters
|
||||
creativity can express itself.
|
||||
|
||||
This project is pushed by the open-source community, and specifically by the
|
||||
[Fediverse](https://fediverse.party/en/fediverse/) and
|
||||
[Podcasting 2.0](https://podcastindex.org/) movements.
|
||||
|
||||
## Comparison with other solutions
|
||||
|
||||
We believe that a solution is not necessarily right for everyone, it highly
|
||||
depends on your needs. So, here are comparisons with other tools to help you to
|
||||
gauge whether Castopod is the right fit for you.
|
||||
|
||||
### Castopod vs Wordpress
|
||||
|
||||
Castopod is often referred to as "the Wordpress for podcasts" because of the
|
||||
similarities between the two. In some ways this is true. And actually, Castopod
|
||||
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
|
||||
from the community and the number of websites running it.
|
||||
|
||||
Just like Wordpress, Castopod is free & open source, built using PHP with a
|
||||
MySQL database and is packaged in a way that you can easily install on most web
|
||||
servers.
|
||||
|
||||
Wordpress is a great way to create your website and extend it with plugins to
|
||||
get what you want. It is a full fledged CMS that helps you get any type of
|
||||
website online.
|
||||
|
||||
On the other hand, Castopod is meant to address the podcasters needs
|
||||
specifically, focusing on podcasting, and nothing else. You don't need any
|
||||
plugin to get you started on your podcasting journey.
|
||||
|
||||
This allows optimizing the processes specific to podcasting: ranging from the
|
||||
creation of your podcasts and the publication of new episodes all the way to
|
||||
broadcasting, marketing and analytics.
|
||||
|
||||
Finally, depending on your needs, Wordpress and Castopod can even live side by
|
||||
side as they share the same requirements!
|
||||
|
||||
### Castopod vs Funkwhale
|
||||
|
||||
Funkwhale is a self-hosted, modern free and open-source music server. Just as
|
||||
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
|
||||
interoperability between the two.
|
||||
|
||||
Funkwhale was initially built around music. And later on, as the project
|
||||
evolved, the ability to host podcasts was introduced.
|
||||
|
||||
Unlike Funkwhale, Castopod has been designed and built around podcasting
|
||||
exclusively. This allows easier implementation for features related to the
|
||||
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
|
||||
chapters, locations, persons, …).
|
||||
|
||||
So, you should probably use Funkwhale if you want to host your music, and use
|
||||
Castopod if you want to host your podcasts.
|
||||
|
||||
### Castopod vs other podcast hosts
|
||||
|
||||
There are many solutions for you to host your podcasts, some of which are really
|
||||
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
|
||||
Podcasting 2.0 wagon just like Castopod!
|
||||
|
||||
Each of these solutions differ from one another, you may compare with the
|
||||
[list of features](#features).
|
||||
|
||||
That being said, there are two main differences with other podcasting solutions:
|
||||
|
||||
- Castopod can be self-hosted and is the only solution that allows you to keep
|
||||
full control over what you produce. Also, as it is open-source, you can even
|
||||
customize it as you wish.
|
||||
|
||||
- Castopod is the only solution that currently integrates both a decentralized
|
||||
social network with ActivityPub as well as many of the podcasting 2.0
|
||||
features, hoping to bridge the gap between the two.
|
||||
|
||||
## Contributing
|
||||
|
||||
Love Castopod and would like to help? Take a look at the following documentation
|
||||
to get you started.
|
||||
|
||||
### Code of conduct
|
||||
|
||||
Castopod has adopted a Code of Conduct that we expect project participants to
|
||||
adhere to. Please read the
|
||||
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
|
||||
so that you can understand what actions will and will not be tolerated.
|
||||
|
||||
### Contributing guide
|
||||
|
||||
Read our [contributing guide](../contributing/guidelines.md) to learn about our
|
||||
development process, how to propose bugfixes and improvements, and how to build
|
||||
and test your changes to Castopod.
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people
|
||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
|
||||
{/* prettier-ignore-start */}
|
||||
{/* markdownlint-disable */}
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/yassinedoghri">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/3/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Yassine Doghri"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Yassine Doghri</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yassinedoghri"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=yassinedoghri"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#maintenance-yassinedoghri" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#content-yassinedoghri" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="#design-yassinedoghri" title="Design">
|
||||
🎨
|
||||
</a>{" "}
|
||||
<a href="#a11y-yassinedoghri" title="Accessibility">
|
||||
️️️️♿️
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-yassinedoghri" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#mentoring-yassinedoghri" title="Mentoring">
|
||||
🧑🏫
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-yassinedoghri"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-yassinedoghri" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-yassinedoghri" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/yassinedoghri/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/benjamin">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/2/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Benjamin Bellamy"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Benjamin Bellamy</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=benjamin"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=benjamin"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a href="#content-benjamin" title="Content">
|
||||
🖋
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-benjamin" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-benjamin"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a href="#ideas-benjamin" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://blog.castopod.org/author/benjamin-bellamy/"
|
||||
title="Blogposts"
|
||||
>
|
||||
📝
|
||||
</a>{" "}
|
||||
<a href="#projectManagement-benjamin" title="Project Management">
|
||||
📆
|
||||
</a>{" "}
|
||||
<a href="#talk-benjamin" title="Talks">
|
||||
📢
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ola-hn">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ola Hneini"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ola Hneini</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/merge_requests?scope=all&state=all&approver_usernames[]=ola"
|
||||
title="Reviewed Pull Requests"
|
||||
>
|
||||
👀
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="#maintenance-ola" title="Maintenance">
|
||||
🚧
|
||||
</a>{" "}
|
||||
<a href="#question-ola" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ola" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mamot.fr/@rdelaage">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Romain de Laage"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Romain de Laage</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="#infra-rdelaage"
|
||||
title="Infrastructure (Hosting, Build-Tools, etc)"
|
||||
>
|
||||
🚇
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Documentation"
|
||||
>
|
||||
📖
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-rdelaage" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/lyonelbernard">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Lyonel Bernard"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lyonel Bernard</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Lyonel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-Lyonel" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-Lyonel" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-Lyonel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.crypticchameleon.com/">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/7c2a721b52d0763673a600e8f01bd745?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Christopher Lagonick-Weitzel"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Christopher Lagonick-Weitzel</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ctlw83"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#question-ctlw83" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#audio-ctlw83" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="#ideas-ctlw83" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://ernestoacosta.me/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ernesto Acosta"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ernesto Acosta</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ernestoacostame"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#audio-ernestoacostame" title="Audio">
|
||||
🔊
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#question-ernestoacostame" title="Answering Questions">
|
||||
💬
|
||||
</a>{" "}
|
||||
<a href="#ideas-ernestoacostame" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fedi.bzh/@ewen">
|
||||
<img
|
||||
src="https://mastodon.fedi.bzh/system/accounts/avatars/000/000/002/original/6f387690a504ae46.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Ewen"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ewen</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-3wen" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Behel">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/ad63ee8ef8e3db8253d21e5012d2724f?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Bastien Luneteau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Bastien Luneteau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Behel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://www.cecillie.fr/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Cécile Ricordeau"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Cécile Ricordeau</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#design-cecillie" title="Design">
|
||||
🎨
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/PatrykMis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Miś"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Miś</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/mspanc">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/eed8337939641eac5ad0b570bd6acf96?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Marcin Lewandowski"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marcin Lewandowski</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=mspanc"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-mspanc" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/SJanik">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Janik"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Janik</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/patryk">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Patryk Karczmarczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Patryk Karczmarczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/ddenis">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="denis d"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>denis d</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=ddenis"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-ddenis" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/douglaskastle">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/b7e652ba4b6bcd440afa069e7f7bc9e6?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Douglas Kastle"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Douglas Kastle</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=douglaskastle"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-douglaskastle" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cExplorer">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="cExplorer"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>cExplorer</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cExplorer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/imacrea">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ImaCrea"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ImaCrea</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=imacrea"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-imacrea" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/jonas">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Jonas S"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Jonas S</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/yannL">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/9c46600ce566ec6d526370d8e104b1c8?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="LEFEBVRE Yann"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LEFEBVRE Yann</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=yannL"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/spaetz">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/278e1af65e82993efd0ba7bbbacf6435?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Sebastian Späth"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sebastian Späth</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=spaetz"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-spaetz" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/rocky">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="rocky III"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>rocky III</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=rocky"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/Regenpfeifer">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/103/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="Hermann Josef Eckl"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Hermann Josef Eckl</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=Regenpfeifer"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/cyrilledel">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Delhaye Cyrille"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Delhaye Cyrille</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=cyrilledel"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a href="#ideas-cyrilledel" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/otetranome">
|
||||
<img
|
||||
src="https://code.castopod.org/uploads/-/system/user/avatar/113/avatar.png?s=100"
|
||||
width="100px;"
|
||||
alt="João Leandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>João Leandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>{" "}
|
||||
<a href="#ideas-otetranome" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://achouvardas.eu/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Angelos Chouvardas"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Angelos Chouvardas</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mastodon.fjerland.no/@eivind">
|
||||
<img
|
||||
src="https://mastodon.fjerland.no/system/accounts/avatars/107/769/768/295/192/222/original/e5c985fea6487dcb.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Eivind"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Eivind</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/forght">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15073833/large/82d1e2e443a6df7edc43a7405dfeeb75_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="forght"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>forght</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/glottis0q">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15209934/large/8b17ef6a7399f0b82a8198f87c224195.png?s=100"
|
||||
width="100px;"
|
||||
alt="glottis0q"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>glottis0q</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://mstdn.fr/@ButterflyOfFire">
|
||||
<img
|
||||
src="https://static.mstdn.fr/static/accounts/avatars/000/065/901/original/5908e93ad5447f15.png?s=100"
|
||||
width="100px;"
|
||||
alt="ButterflyOfFire"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ButterflyOfFire</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/lil5">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/17646836?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Lucian I. Last"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Lucian I. Last</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/luuzviir">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13166188/large/d03ab0abc7ce354b210d836955cd3805_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="LuuzViir"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>LuuzViir</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/cthtc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15211502/large/ed0651060cb8474a9519b5168bd377c1_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="CTHTC"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>CTHTC</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/retrograde">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15021651/large/b10c4057f85bf4de49c7fdf01354ecde.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Russian Retro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Russian Retro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/mareklach">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13572324/large/3eeba8d569c247ace33862bf4ef4748f.jpeg?s=100"
|
||||
width="100px;"
|
||||
alt="Marek L'ach"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Marek L'ach</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gunchleoc">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/13043878/large/3223f7b606296a8b1c92c5de39c459a2_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GunChleoc"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GunChleoc</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/gabisnow">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15214858/large/5b083bdf9c9e9de67cc6ee72a6c8db18_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="GabiSnow"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>GabiSnow</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/bendaha">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15331656/large/cd92450d2c20202299fb3a0075903e20_default.png?s=100"
|
||||
width="100px;"
|
||||
alt="bendaha"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>bendaha</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/samuelroland">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/14980053/large/3e154a37d03d6e98ae402ed3f930f4f5.png?s=100"
|
||||
width="100px;"
|
||||
alt="Samuel Roland"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Samuel Roland</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://dimitriregnier.net/">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Dimitri Regnier"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Dimitri Regnier</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="#ideas-dimregnier" title="Ideas, Planning, & Feedback">
|
||||
🤔
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://im.irithys.com/@thy">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15405614/large/3086461c47cce0a0c031925e5f943412.png?s=100"
|
||||
width="100px;"
|
||||
alt="irithys"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>irithys</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://twitter.com/caos30">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Sergi"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Sergi</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/xosem">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/large/a201650da44fed28890b0e0d8477a663.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="ghose (XoseM)"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>ghose (XoseM)</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/basen1982">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Andreas Olsson"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Andreas Olsson</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/leonfrom">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="leonfrom"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>leonfrom</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/agentcobra57">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="agentcobra"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>agentcobra</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/alephoto85">
|
||||
<img
|
||||
src="https://crowdin-static.downloads.crowdin.com/avatar/15094649/large/530391f54157af52ae33058ec15b0f99.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="Alessandro"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Alessandro</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://crowdin.com/profile/liimee">
|
||||
<img
|
||||
src="https://castopod.org/assets/images/castopod-avatar.jpg?s=100"
|
||||
width="100px;"
|
||||
alt="liimee"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>liimee</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/ahmedsabouni">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/74497842?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="Ahmed Sabouni"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Ahmed Sabouni</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://translate.castopod.org" title="Translation">
|
||||
🌍
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://github.com/KrzysztofDomanczyk">
|
||||
<img
|
||||
src="https://avatars.githubusercontent.com/u/75178474?v=4?s=100"
|
||||
width="100px;"
|
||||
alt="KrzysztofDomanczyk"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>KrzysztofDomanczyk</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
<td align="center" valign="top" width="14.28%">
|
||||
<a href="https://code.castopod.org/NeoluxConsulting">
|
||||
<img
|
||||
src="https://secure.gravatar.com/avatar/6e745565356330c1e29a85d52bffdaa1?s=80&d=identicon?s=100"
|
||||
width="100px;"
|
||||
alt="Guy Martin"
|
||||
/>
|
||||
<br />
|
||||
<sub>
|
||||
<b>Guy Martin</b>
|
||||
</sub>
|
||||
</a>
|
||||
<br />
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/issues?author_username=NeoluxConsulting"
|
||||
title="Bug reports"
|
||||
>
|
||||
🐛
|
||||
</a>{" "}
|
||||
<a
|
||||
href="https://code.castopod.org/adaures/castopod/commits/master"
|
||||
title="Code"
|
||||
>
|
||||
💻
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{/* markdownlint-restore */}
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
{/* ALL-CONTRIBUTORS-LIST:END */}
|
||||
|
||||
This project follows the
|
||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
||||
specification. Contributions of any kind welcome!
|
||||
|
||||
## Contact
|
||||
|
||||
You may reach us for help or ask any question you have on:
|
||||
|
||||
- [Discord](https://castopod.org/discord) (for direct interaction with
|
||||
developers and the community)
|
||||
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
|
||||
feature requests & bug reports)
|
||||
|
||||
Alternatively, you can follow us on social media platforms to get news about
|
||||
Castopod:
|
||||
|
||||
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
|
||||
- [Twitter](https://twitter.com/castopod)
|
||||
- [LinkedIn](https://linkedin.com/company/castopod)
|
||||
- [Facebook](https://www.facebook.com/castopod)
|
||||
|
||||
## Sponsors
|
||||
|
||||
The ongoing development of Castopod is made possible with the support of its
|
||||
backers. If you'd like to help, please consider
|
||||
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
[](https://nlnet.nl/)
|
||||
|
||||
## License
|
||||
|
||||
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
|
||||
|
||||
Copyright © 2020-present, [Ad Aures](https://adaures.com/).
|
||||
84
docs/src/content/docs/ko/getting-started/auth.mdx
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: Authentication & Authorization
|
||||
---
|
||||
|
||||
Castopod handles authentication and authorization using `codeigniter/shield`
|
||||
coupled with custom rules. Roles and permissions are defined at two levels:
|
||||
|
||||
1. [instance wide](#1-instance-wide-roles-and-permissions)
|
||||
2. [per podcast](#2-per-podcast-roles-and-permissions)
|
||||
|
||||
## 1. Instance wide roles and permissions
|
||||
|
||||
### Instance roles
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
|
||||
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
|
||||
| Podcaster | General users of Castopod. | admin.access |
|
||||
|
||||
{/* AUTH-INSTANCE-ROLES-LIST:END */}
|
||||
|
||||
### Instance permissions
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ----------------------- | ------------------------------------------------------------------ |
|
||||
| admin.access | Can access the Castopod admin area. |
|
||||
| admin.settings | Can access the Castopod settings. |
|
||||
| users.manage | Can manage Castopod users. |
|
||||
| persons.manage | Can manage persons. |
|
||||
| pages.manage | Can manage pages. |
|
||||
| podcasts.view | Can view all podcasts. |
|
||||
| podcasts.create | Can create new podcasts. |
|
||||
| podcasts.import | Can import podcasts. |
|
||||
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
|
||||
|
||||
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
|
||||
|
||||
## 2. Per podcast roles and permissions
|
||||
|
||||
### Per podcast roles
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| role | description | permissions |
|
||||
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Admin | Has complete control of podcast #\{id\}. | \* |
|
||||
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
|
||||
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
|
||||
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
|
||||
|
||||
{/* AUTH-PODCAST-ROLES-LIST:END */}
|
||||
|
||||
### Per podcast permissions
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
|
||||
|
||||
| permission | description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- |
|
||||
| view | Can view dashboard and analytics of podcast #\{id\}. |
|
||||
| edit | Can edit podcast #\{id\}. |
|
||||
| delete | Can delete podcast #\{id\}. |
|
||||
| manage-import | Can synchronize imported podcast #\{id\}. |
|
||||
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
|
||||
| manage-contributors | Can manage contributors of podcast #\{id\}. |
|
||||
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
|
||||
| manage-publications | Can publish podcast #\{id\}. |
|
||||
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
|
||||
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
|
||||
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
|
||||
| episodes.create | Can create episodes for podcast #\{id\}. |
|
||||
| episodes.edit | Can edit episodes of podcast #\{id\}. |
|
||||
| episodes.delete | Can delete episodes of podcast #\{id\}. |
|
||||
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
|
||||
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
|
||||
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
|
||||
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
|
||||
|
||||
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
|
||||